Skip to content

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

@EmaJugovic

Description

@EmaJugovic

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions