Releases: perfanalytics/pose2sim
DeepSort tracking and better skeleton visualization
- Skeleton visualization: A bounding-box color per person. Left and right limbs in a different color to better spot swaps. Keypoint color based on confidence.
- Support DeepSort tracking across frames
- Video files processed in alphabetical order on Unix machines
Full Changelog: v0.10.7...v0.10.8
I can't believe how much I struggled to implement it. 😅 Long story short, it works on bounding boxes rather than on keypoints, so I first tried to subclass the rtmlib PoseTracker to extract the bounding boxes obtained from the person detector. But everything got messed up when I tested it when with RTMO, which is single-stage and does not use any bounding boxes. Moreover, the option "det_frequency" makes everything more complicated, because bounding boxes are then not searched for all frames. So I recomputed bounding boxes from keypoints, tricked the deepsort tracker into returning the original bounding box indices (rather than the ones after kalman filtering) as well as the person indices, and tried to make it correctly find the right correspondence.
And then my brain was fried and I could not manage to make sense of the logic between so many indices. This took me way more time than it should have. Anyway, it is now properly implemented, this is one thing less to worry about!
One word of cautions: In the vast majority of cases (non crowded scenes), I would use the automatic Sports2D tracking algorithm. DeepSort can be tricky to parametrize, and you need to understand what each of the parameters mean to if you want best results. Otherwise, you may very well end up with worse results. I tried to set the best possible default parameters, but it won't work in every case. Results are faster and better with {'embedder_gpu': True, embedder':'torchreid'}, which uses the GPU and runs osnet_ain_x1_0 by default. Note that it requires pip install torch torchvision torchreid gdown tensorboard. If you feel like there default parameters could be improved, feel absolutely free to let me know!
Any detection and pose model can be used + more
- install custom rtmlib version (see Tau-J/rtmlib#45) with:
- a new more general Custom class
- PoseTracker working with single-stage models (without detection)
- working NMS for RTMO
- fixed wholebody solution in balanced mode (see #143 (comment))
- More versatile "mode" argument in pose2sim: Any person detection and/or pose estimation model can now be used
- Natively supporting Hand, Face, Animal, whole body with face and hand models (up to filtering 3D results, no inverse kinematics implemented yet)
- Optional manual selection of backend and device
- Unified most sports2d and pose2sim functions
- Default names for Halpe_26, coco_133, coco_17 are now: body_with_feet, whole_body, body
- Automatic person height estimation
- Better scaling with best_coords_for_measurements function
- Kinematics works on Coco17 model
- Released pronation (-90° instead of 0°)
- Removed Lai-Uhlrich shoulder definition in LSTM model
- Handled case when center hip keypoint is missing
- Automatic FPS detection rounded to integer
- custom logging possible
- Improved the trc_gait_events script
What's Changed
- Calculate height for marker augmenatation by @hunminkim98 in #152
Full Changelog: v0.10.6...v0.10.7
Better kinematics + various fixes
Scaling and IK:
- Support wrist motion on LSTM model
- Wrist flexion clamped to 110° instead of 70°
- Scaling on straight postures in priority
- IK and scaling IKCoordinateTask weights of 0.1 instead of 0.5 for L5_S1_Flex_Ext
Calibration:
- fixed calibration if board and show=false
- removed CALIB_FIX_PRINCIPAL_POINT + convert objp to mm to avoid scale mismatch with intrinsics)
Pose estimation:
- ROCM (AMD GPU) support
What's Changed
- LSTM with wrist motion by @hunminkim98 in #148
- Optimized Setup Files(scaling+IK) by @hunminkim98 in #151
Full Changelog: v0.10.4...v0.10.6
multi_person synchro + minor fixes
- Synchronization in multi-person mode @hunminkim1998
- Supports running on image sequences instead of videos
- Added missing Geometry file for LSTM model
- Fixed frame_range when different frames for each camera
What's Changed
- Modify the frame range from max to min. by @hunminkim98 in #138
- Synchronization for multi-person by @hunminkim98 in #135
Full Changelog: v0.10.3...v0.10.4
Attempt to fix caliscope support
Full Changelog: v0.10.2...v0.10.3
Fixed CalisCope calib support + Fixed kinematics() when no marker augmentation
- Fixed CalisCope calib support
- Fixed kinematics() when no marker augmentation
What's Changed
- Site test back to main branch by @davidpagnon in #134
Full Changelog: v0.10.1...v0.10.2
Support caliscope calibration + 2D sorting for future multi-person synchro
- Native support of Caliscope calibration
- Sort people's IDs at the 2D stage, to prepare for future multi-person synchronization
Full Changelog: v0.10.0...v0.10.1
Fully automatic OpenSim kinematics
-
Scaling:
- No need for a static trial: scaling is done on the triangulated coordinates (trc file)
- Remove 10% fastest frames (potential outliers)
- Remove frames where coordinate speed is null (person probably out of frame)
- Remove 40% most extreme calculated segment values (potential outliers)
- For each segment, scale on the mean of the remaining segment values.
-
IK: Just ran IK the same way as with the GUI
-
Removed the logging.error written when an exception is caught: I wanted to make sure that tests don't pass when there is an issue.
-
Changed "opensim" to "kinematics", as it is more general and speaks more to non-biomechanics users.
-
Saved the OpenSim logs, that were otherwise lost.
-
Removed the static trial, opensim_bin_path Config parameters as they are not needed.
-
Also removed load_trc_name = 'filtered' (takes the filtered file if exists), and removed the IK_timeRange parameter (use project/frame_range instead)
-
Removed the triangulation/reorder_trc option, which is not needed since we do not need to match people with static trials anymore (no more static trials)
Contributor: @peterlololsss --> Thank you!
Fixed the (non-)fixed multi-tabbed plots
Full Changelog: v0.9.11...v0.9.12
Various fixes (see details below)
- Removed tracking option in pose estimation, as it is performed at the triangulation stage
- Synchronization done on person with highest mean confidence (thanks @hunminkim98)
- 'linear' instead of 'cubic' interpolation by default
- Fixed tests so that synchronization is not run in multi-person Demo data
- Fixed multi-tab plots crashing
Full Changelog: v0.9.10...v0.9.11