From 0134815eb4d2fb70db5ebda140efd65d8475b07e Mon Sep 17 00:00:00 2001 From: davidpagnon Date: Thu, 18 Aug 2022 13:17:39 -0700 Subject: [PATCH] joss editor modifs --- Content/Pose2Sim_workflow_utilities.jpg | Bin 0 -> 111377 bytes Content/paper.bib | 62 ++++++++++++++ Content/paper.md | 107 +++++++++++++----------- README.md | 3 +- 4 files changed, 120 insertions(+), 52 deletions(-) create mode 100644 Content/Pose2Sim_workflow_utilities.jpg diff --git a/Content/Pose2Sim_workflow_utilities.jpg b/Content/Pose2Sim_workflow_utilities.jpg new file mode 100644 index 0000000000000000000000000000000000000000..732055ff4b65d6bde4179d8f73db68448f648361 GIT binary patch literal 111377 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%0A1?;9L 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 literal 0 HcmV?d00001 diff --git a/Content/paper.bib b/Content/paper.bib index c054bd3..313f333 100644 --- a/Content/paper.bib +++ b/Content/paper.bib @@ -22,6 +22,17 @@ publisher={IEEE} } +@article{Colyer_2018, + title={A review of the evolution of vision-based motion analysis and the integration of advanced computer vision methods towards developing a markerless system}, + author={Colyer, Steffi L and Evans, Murray and Cosker, Darren P and Salo, Aki IT}, + journal={Sports medicine-open}, + volume={4}, + number={1}, + pages={1--15}, + year={2018}, + publisher={SpringerOpen} +} + @article{Delp_2007, title={OpenSim: open-source software to create and analyze dynamic simulations of movement}, author={Delp, Scott L and Anderson, Frank C and Arnold, Allison S and Loan, Peter and Habib, Ayman and John, Chand T and Guendelman, Eran and Thelen, Darryl G}, @@ -44,6 +55,35 @@ DOI = {10.1109/ICCV.2017.256} } +@article{Hartley_1997, + title={Triangulation}, + author={Hartley, Richard I and Sturm, Peter}, + journal={Computer vision and image understanding}, + volume={68}, + number={2}, + pages={146--157}, + year={1997}, + publisher={Elsevier} +} + +@misc{Hidalgo_2019, + author = {Hidalgo, Ginés}, + title = {OpenPose Experimental Models}, + year = {2019}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://github.com/CMU-Perceptual-Computing-Lab/openpose_train/tree/master/experimental_models#body_25b-model---option-2-recommended} +} + +@misc{Hidalgo_2021, + author = {Hidalgo, Ginés}, + title = {OpenPose 3D reconstruction module}, + year = {2021}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/advanced/3d_reconstruction_module.md} +} + @article{Kanko_2021, title={Concurrent assessment of gait kinematics using marker-based and markerless motion capture}, author={Kanko, Robert M and Laende, Elise K and Davis, Elysia M and Selbie, W Scott and Deluzio, Kevin J}, @@ -82,6 +122,17 @@ publisher={Nature Publishing Group} } +@article{Needham_2021, + title={The accuracy of several pose estimation methods for 3D joint centre localisation}, + author={Needham, Laurie and Evans, Murray and Cosker, Darren P and Wade, Logan and McGuigan, Polly M and Bilzon, James L and Colyer, Steffi L}, + journal={Scientific reports}, + volume={11}, + number={1}, + pages={1--11}, + year={2021}, + publisher={Nature Publishing Group} +} + @article{Pagnon_2021, title={Pose2Sim: An End-to-End Workflow for 3D Markerless Sports Kinematics—Part 1: Robustness}, author={Pagnon, David and Domalain, Mathieu and Reveret, Lionel}, @@ -134,6 +185,17 @@ publisher={Elsevier} } +@article{Zhang_2000, + title={A flexible new technique for camera calibration}, + author={Zhang, Zhengyou}, + journal={IEEE Transactions on pattern analysis and machine intelligence}, + volume={22}, + number={11}, + pages={1330--1334}, + year={2000}, + publisher={IEEE} +} + @article{Zheng_2022, title={Deep learning-based human pose estimation: A survey}, author={Zheng, Ce and Wu, Wenhan and Yang, Taojiannan and Zhu, Sijie and Chen, Chen and Liu, Ruixu and Shen, Ju and Kehtarnavaz, Nasser and Shah, Mubarak}, diff --git a/Content/paper.md b/Content/paper.md index 55e4c19..0f14fac 100644 --- a/Content/paper.md +++ b/Content/paper.md @@ -29,14 +29,13 @@ bibliography: paper.bib --- # Summary - `Pose2Sim` provides a workflow for 3D markerless kinematics, as an alternative to the more usual marker-based motion capture methods.\ `Pose2Sim` stands for "OpenPose to OpenSim", as it uses OpenPose inputs (2D coordinates obtained from multiple videos) and leads to an OpenSim result (full-body 3D joint angles). The repository presents a framework for: \ • Detecting 2D joint coordinates from videos, e.g. via OpenPose [@Cao_2019], \ • Calibrating cameras, \ -• Tracking of the person viewed by the most cameras, \ +• Tracking the person viewed by the most cameras, \ • Triangulating 2D joint coordinates and storing them as 3D positions in a .trc file, \ • Filtering these calculated 3D positions, \ • Scaling and running inverse kinematics via OpenSim [@Delp_2007; @Seth_2018], in order to obtain full-body 3D joint angles. @@ -44,10 +43,9 @@ The repository presents a framework for: \ Each task is easily customizable, and requires only moderate Python skills. Pose2Sim is accessible at [https://github.com/perfanalytics/pose2sim](https://github.com/perfanalytics/pose2sim). # Statement of need +For the last few decades, marker-based kinematics has been considered the best choice for the analysis of human movement, when regarding the trade-off between ease of use and accuracy. However, a marker-based system is hard to set up outdoors or in context, and it requires placing markers on the body, which can hinder natural movement [Colyer_2018]. -For the last few decades, marker-based kinematics has been considered the best choice for the analysis of human movement, when regarding the trade-off between ease of use and accuracy. However, a marker-based system is hard to set up outdoors or in context, and it requires placing markers on the body, which can hinder natural movement. - -The emergence of markerless kinematics opens up new possibilities. Indeed, the interest in deep-learning pose estimation neural networks has been growing fast since 2015 [@Zheng_2022], which makes it now possible to collect accurate and reliable kinematic data without the use of physical markers. OpenPose, for example, is a widespread open-source software which provides 2D joint coordinate estimations from videos. These coordinates can then be triangulated in order to produce 3D positions. Yet, when it comes to the biomechanical analysis of human motion, it is often more useful to obtain joint angles than their XYZ positions in space. Joint angles allow for better comparison among trials and individuals, and they represent the first step for other analysis such as inverse dynamics. +The emergence of markerless kinematics opens up new possibilities. Indeed, the interest in deep-learning pose estimation neural networks has been growing fast since 2015 [@Zheng_2022], which makes it now possible to collect accurate and reliable kinematic data without the use of physical markers. OpenPose, for example, is a widespread open-source software which provides 2D joint coordinate estimations from videos. These coordinates can then be triangulated in order to produce 3D positions. Yet, when it comes to the biomechanical analysis of human motion, it is often more useful to obtain joint angles than joint center positions in space. Joint angles allow for better comparison among trials and individuals, and they represent the first step for other analysis such as inverse dynamics. OpenSim is another widespread open-source software which helps compute 3D joint angles, usually from marker coordinates. It lets scientists define a detailed musculoskeletal model, scale it to individual subjects, and perform inverse kinematics with customizable biomechanical constraints. It provides other features such as net calculation of joint moments or individual muscle forces resolution, although this is out of the scope of our contribution. @@ -58,7 +56,6 @@ So far, little work has been done towards obtaining 3D angles from multiple view # Features ## Pose2Sim workflow - `Pose2Sim` connects two of the most widely recognized (and open source) pieces of software of their respective fields:\ • OpenPose [@Cao_2019], a 2D human pose estimation neural network\ • OpenSim [@Delp_2007], a 3D biomechanics analysis software @@ -68,65 +65,73 @@ So far, little work has been done towards obtaining 3D angles from multiple view The workflow is organized as follows \autoref{fig:pipeline}:\ 1. Preliminary OpenPose [@Cao_2019] 2D keypoints detection.\ 2. Pose2Sim core, including 4 customizable steps:\ -    2.i. Camera calibration \ -    2.ii. Tracking of the person viewed by the most cameras\ -    2.iii. 2D keypoints triangulation\ -    2.iv. 3D coordinates filtering\ +    2.i. Camera calibration. \ +    2.ii. Tracking the person of interest.\ +    2.iii. 3D keypoints triangulation.\ +    2.iv. 3D coordinates filtering.\ 3. A full-body OpenSim [@Delp_2007] skeletal model with OpenPose keypoints is provided, as well as scaling and inverse kinematics setup files. As the position of triangulated keypoints are not dependent on either the operator nor the subject, these setup files can be taken as is. OpenPose, OpenSim, and the whole `Pose2Sim` workflow run from any video cameras, on any computer, equipped with any operating system. However, on Linux, OpenSim has to be compiled from source. ## Pose2Sim core -Each step of the Pose2Sim core is easily customizable through the 'User/Config.toml' file. Among other things, users can edit:\ -• The project hierarchy, the video framerate, the range of analyzed frames,\ -• The OpenPose model they wish to use. They can also use AlphaPose [@Fang_2017], or even create their own model (e.g. with DeepLabCut [@Mathis_2018]),\ -• Whether they are going to calibrate their cameras with a checkerboard, or to simply convert a calibration file provided by a Qualisys system,\ -• Which keypoint they want to track in order to automatically single out the person of interest,\ -• The thresholds in confidence and reprojection errors for using or not using a camera while triangulating a keypoint,\ -• The minimum number of cameras below which the keypoint won't be triangulated at this frame,\ -• The interpolation and filter types and parameters. +Pose2Sim is meant to be as fully and as easily configurable as possible, by editing the 'User/Config.toml' file. Among others, the following parameters can be adjusted. + +### Project +User can change the project path and folder names, the video framerate, and the range of analyzed frames. + +### Pose 2D +User can specify the 2D pose estimation model they use.\ +The OpenPose BODY_25B experimental model is recommended, as it is as fast as the standard BODY_25 model while being more accurate [@Hidalgo_2019]. Non-OpenPose models can also be chosen, whether they are human such as the AlphaPose one [@Fang_2017], or animal such as any DeepLabCut model trained by the user [@Mathis_2018]. + +### Calibration +Whether cameras are going to be calibrated with a checkerboard, or simply going to be converted from a calibration file provided by a Qualisys system.\ +If checkerboard calibration is chosen, corners are detected and refined with OpenCV. This detection can optionally be displayed for verification. Each camera is then calibrated using OpenCV with an algorithm based on [@Zhang_2000]. The user can choose which image should be used for extrinsic calibration (usually the first or the last one.) + +### Tracking +Which body keypoint will be tracked in order to automatically single out the person of interest. We recommend the neck point or one of the hip points. Indeed, in most cases they are the least likely to move out of the camera views. \ +This is important when other people are in the background of one or several cameras. This is done by trying out all available triangulations performed for a chosen keypoint in all detected persons. The triangulation with the smallest reprojection error is considered to correspond to the person of interest. + +### Triangulation +It should be noted that OpenPose natively provides a module for reconstructing 3D keypoints coordinates [@Hidalgo_2021]. However, it is not developped nor supported anymore, and is acknowledged to be rudimentary. It also needs to be compiled from source, which can constitute an obstacle to non-programmer biomechanicians. On the other hand, triangulation is more robust in Pose2Sim. This is made possible largely because instead of using classic Direct Linear Transform (DLT) [@Hartley_1997], we propose a weighted DLT, i.e., a triangulation procedure where each 2D OpenPose coordinate is weighted with the confidence scores of each camera [@Pagnon_2021]. +\ +    i. The minimum in likelihood below which a camera point will not be taken into account for triangulation.\ +    ii. The maximum in reprojection error above which triangulation results will not be accepted. This can happen if OpenPose provides a bad 2D keypoint estimation, or if the person of interest leaves the camera field. Triangulation will then be done again with one camera less.\ +    iii. The minimum amount of "good" cameras (remaining after the last two steps) required for triangulating a keypoint. If there is not enough, the 3D keypoint will be interpolated between other frames. The interpolation method can also be chosen. + +### Filtering +The filter type and its parameters. Waveforms before and after filtering can be displayed and compared. + +### OpenSim +The main contribution of this software is to build a bridge between OpenPose and OpenSim. The latter allows for much more accurate and robust results [@Pagnon_2022], which constrains kinematics to an individually scaled and physically accurate skeletal model. This model also takes into account systematic labelling errors in OpenPose [@Needham_2022]. Since these are considered similar regardless of the subject, neither the model nor the scaling or inverse kinematic files necessarily need to be modified when changing the operator or the participant.\ +The OpenSim model, scaling setup file, and inverse kinematics setup files will not be edited or adjusted in the OpenSim GUI, rather than by using the 'User\Config.toml' file. This can be done in the same way as one would do with a standard marker-based experiment. ## Pose2Sim utilities -Some standalone Python tools are also provided. +A large part of Pose2Sim functions are also provided as standalone python scripts. Other tools are also provided for extending its usage, such as the ones presented below \autoref{fig:utilities}. -**Conversion to and from Pose2Sim** +### 2D pose +• `json_display_with_img.py`: +Overlays 2D detected .json coordinates on original raw images. High confidence keypoints are green, low confidence ones are red.\ +• `json_display_without_img.py`: +Plots an animation of 2D detected .json coordinates.\ +• `DLC_to_OpenPose.py`: +Converts a DeepLabCut [@Mathis_2018] .h5 2D pose estimation file into OpenPose [@Cao_2019] .json files. -• `DLC_to_OpenPose.py` -Converts a DeepLabCut [@Mathis_2018] (h5) 2D pose estimation file into OpenPose [@Cao_2019] (json) files.\ -• `calib_qca_to_toml.py` -Converts a Qualisys .qca.txt calibration file to the Pose2Sim .toml calibration file.\ -• `calib_toml_to_qca.py` -Converts a Pose2Sim .toml calibration file (e.g., from a checkerboard) to a Qualisys .qca.txt calibration file.\ -• `calib_from_checkerboard.py` -Calibrates cameras with images or a video of a checkerboard, saves calibration in a Pose2Sim .toml calibration file.\ -• `c3d_to_trc.py` -Converts 3D point data of a .c3d file to a .trc file compatible with OpenSim. No analog data (force plates, emg) nor computed data (angles, powers, etc) are retrieved. - - -**Plotting tools** - -• `json_display_with_img.py` -Overlays 2D detected json coordinates on original raw images. High confidence keypoints are green, low confidence ones are red.\ -• `json_display_without_img.py` -Plots an animation of 2D detected json coordinates.\ -• `trc_plot.py` -Displays X, Y, Z coordinates of each 3D keypoint of a TRC file in a different matplotlib tab.\ - - -**Other trc tools** - -• `trc_desample.py` -Undersamples a trc file. -• `trc_Zup_to_Yup.py` +### 3D pose +• `trc_plot.py`: +Displays X, Y, Z coordinates of a .trc file, each keypoint represented in its own tab.\ +• `trc_desample.py`: +Undersamples a .trc file.\ +• `trc_Zup_to_Yup.py`: Changes Z-up system coordinates to Y-up system coordinates.\ -• `trc_filter.py` +• `trc_filter.py`: Filters trc files. Available filters: Butterworth, Butterworth on speed, Gaussian, LOESS, Median.\ -• `trc_gaitevents.py` -Detects gait events from point coordinates according to [@Zeni_2008].\ +• `trc_gaitevents.py`: +Detects gait events from point coordinates according to [@Zeni_2008]. + +![Pose2Sim provides a few additional utilities to extend its capabilities.\label{fig:utilities}](Pose2Sim_workflow_utilities.jpg) # Acknowledgements - We acknowledge the dedicated people involved in the many major software programs and packages used by Pose2Sim, such as Python, OpenPose, OpenSim, OpenCV [@Bradski_2000], among others. # References diff --git a/README.md b/README.md index c2ad75e..a94ccaa 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ bin\OpenPoseDemo.exe --model_pose BODY_25B --image_dir \raw * *N.B.:* The [BODY_25B model](https://github.com/CMU-Perceptual-Computing-Lab/openpose_train/tree/master/experimental_models) has more accurate results; however, feel free to use any OpenPose model (BODY_25B, BODY_25, COCO, with face and/or hands, etc), and to work with videos instead of image files. * *N.B.:* You can also use [DeepLabCut](https://github.com/DeepLabCut/DeepLabCut), or other 2D pose estimators instead. \ If you decide to do so, you'll have to (1) translate the format to json files (with `DLC_to_OpenPose.py` script, see [Utilities](#utilities)); (2) report the model keypoints in the 'skeleton.py' file; (3) create an OpenSim model if you need 3D joint angles. +* *N.B.:* Use one of the scripts `json_display_with_img.py` or `json_display_with_img.py` if you want to display 2D pose detections. @@ -478,7 +479,7 @@ opensim-cmd run-tool /OpenSim/Setup/ ## Utilities -A list of standalone tools, which can be both run as scripts or imported as functions. Check usage in the docstrings of each python file.\ +A list of standalone tools, which can be both run as scripts or imported as functions. Check usage in the docstrings of each python file.
Converting files and Calibrating (CLICK TO SHOW)