-
Notifications
You must be signed in to change notification settings - Fork 72
Description
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