Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Anipose triangulation error: not enough 3D points to run optimization #136

Open
EmaJugovic opened this issue Apr 3, 2024 · 0 comments
Open

Comments

@EmaJugovic
Copy link

Hello,

I hope this message finds you well!

I am reaching out to you because I have encountered an error when running "anipose triangulate". Namely, I have obtained 2D joint coordinates using Google Mediapipe Pose landmark detection (https://developers.google.com/mediapipe/solutions/vision/pose_landmarker) from 5 cameras capturing whole-body movements. The 2D coordinates are stored in csv, .h5 and pickle files (see attachment) and the files are formatted identical to the output files you would expect from Deep Lab Cut.

Anipose calibration has worked, however whenever I try to triangulate the data from 5 cameras I receive the following error saying that there are not enough 3D points to run optimization:

Triangulating points...
/group/plasticity/Projects/Null_space/anipose-project3/video-recordings/pose-3d/trimmed-1.csv
100%|███████████████████████| 45540/45540 [00:00<00:00, 157041.86it/s]
warning: not enough 3D points to run optimization
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:281: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout[bp + 'ncams'] = num_cams[:, bp_num]
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:282: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout[bp + 'score'] = scores_3d[:, bp_num]
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:279: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout[bp + '
' + axis] = all_points_3d_adj[:, bp_num, ax_num]
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:280: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout[bp + 'error'] = all_errors[:, bp_num]
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:286: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout['M
{}{}'.format(i, j)] = M[i, j]
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:289: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout['center
{}'.format(i)] = center[i]
/home/ej06/.conda/envs/aniposeEnv/lib/python3.7/site-packages/anipose/triangulate.py:291: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling frame.insert many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use newframe = frame.copy()
dout['fnum'] = np.arange(n_frames)
/group/plasticity/Projects/Null_space/anipose-project3/video-recordings/pose-3d/trimmed-2.csv
100%|███████████████████████| 45540/45540 [00:00<00:00, 156686.05it/s]
warning: not enough 3D points to run optimization
/group/plasticity/Projects/Null_space/anipose-project3/video-recordings/pose-3d/trimmed-3.csv
100%|███████████████████████| 45540/45540 [00:00<00:00, 158914.28it/s]
warning: not enough 3D points to run optimization
/group/plasticity/Projects/Null_space/anipose-project3/video-recordings/pose-3d/trimmed-4.csv
100%|███████████████████████| 45540/45540 [00:00<00:00, 155566.26it/s]
warning: not enough 3D points to run optimization
/group/plasticity/Projects/Null_space/anipose-project3/video-recordings/pose-3d/trimmed-5.csv
100%|███████████████████████| 45540/45540 [00:00<00:00, 159713.40it/s]
warning: not enough 3D points to run optimization

This has lead me to think that perhaps the .h5 output files do not contain data, but that is not true. All estimated x and y coordinates are saved there. I have attached the relevant files for you convenience.

Do you perhaps have any idea what went wrong? Any help is much appreciated!

Best regards,
Ema
pose-2d.zip
calibration.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant