pose2sim 0.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. Pose2Sim/Demo_Batch/Config.toml +325 -0
  2. Pose2Sim/Demo_Batch/Trial_1/Config.toml +326 -0
  3. Pose2Sim/Demo_Batch/Trial_1/videos/cam01.mp4 +0 -0
  4. Pose2Sim/Demo_Batch/Trial_1/videos/cam02.mp4 +0 -0
  5. Pose2Sim/Demo_Batch/Trial_1/videos/cam03.mp4 +0 -0
  6. Pose2Sim/Demo_Batch/Trial_1/videos/cam04.mp4 +0 -0
  7. Pose2Sim/Demo_Batch/Trial_2/Config.toml +326 -0
  8. Pose2Sim/Demo_Batch/Trial_2/videos/cam01.mp4 +0 -0
  9. Pose2Sim/Demo_Batch/Trial_2/videos/cam02.mp4 +0 -0
  10. Pose2Sim/Demo_Batch/Trial_2/videos/cam03.mp4 +0 -0
  11. Pose2Sim/Demo_Batch/Trial_2/videos/cam04.mp4 +0 -0
  12. Pose2Sim/Demo_Batch/calibration/Calib.qca.txt +38 -0
  13. Pose2Sim/Demo_MultiPerson/Config.toml +325 -0
  14. Pose2Sim/Demo_MultiPerson/calibration/Calib.qca.txt +38 -0
  15. Pose2Sim/Demo_MultiPerson/videos/cam01.mp4 +0 -0
  16. Pose2Sim/Demo_MultiPerson/videos/cam02.mp4 +0 -0
  17. Pose2Sim/Demo_MultiPerson/videos/cam03.mp4 +0 -0
  18. Pose2Sim/Demo_MultiPerson/videos/cam04.mp4 +0 -0
  19. Pose2Sim/Demo_SinglePerson/Config.toml +326 -0
  20. Pose2Sim/Demo_SinglePerson/calibration/Calib.qca.txt +38 -0
  21. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam01_img/.gitkeep +0 -0
  22. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam01_img/cam01_ext.png +0 -0
  23. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam02_img/.gitkeep +0 -0
  24. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam02_img/cam02_ext.png +0 -0
  25. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam03_img/.gitkeep +0 -0
  26. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam03_img/cam03_ext.png +0 -0
  27. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam04_img/.gitkeep +0 -0
  28. Pose2Sim/Demo_SinglePerson/calibration/extrinsics/ext_cam04_img/cam04_ext.png +0 -0
  29. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/.gitkeep +0 -0
  30. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_01_int.jpg +0 -0
  31. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_02_int.jpg +0 -0
  32. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_03_int.jpg +0 -0
  33. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_04_int.jpg +0 -0
  34. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_05_int.jpg +0 -0
  35. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_06_int.jpg +0 -0
  36. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam01_img/cam01_07_int.jpg +0 -0
  37. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/.gitkeep +0 -0
  38. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_01_int.jpg +0 -0
  39. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_02_int.jpg +0 -0
  40. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_03_int.jpg +0 -0
  41. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_04_int.jpg +0 -0
  42. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_05_int.jpg +0 -0
  43. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_06_int.jpg +0 -0
  44. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam02_img/cam02_07_int.jpg +0 -0
  45. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/.gitkeep +0 -0
  46. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_01_int.jpg +0 -0
  47. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_02_int.jpg +0 -0
  48. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_03_int.jpg +0 -0
  49. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_04_int.jpg +0 -0
  50. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_05_int.jpg +0 -0
  51. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_06_int.jpg +0 -0
  52. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam03_img/cam03_07_int.jpg +0 -0
  53. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/.gitkeep +0 -0
  54. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_01_int.jpg +0 -0
  55. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_02_int.jpg +0 -0
  56. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_03_int.jpg +0 -0
  57. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_04_int.jpg +0 -0
  58. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_05_int.jpg +0 -0
  59. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_06_int.jpg +0 -0
  60. Pose2Sim/Demo_SinglePerson/calibration/intrinsics/int_cam04_img/cam04_07_int.jpg +0 -0
  61. Pose2Sim/Demo_SinglePerson/videos/cam01.mp4 +0 -0
  62. Pose2Sim/Demo_SinglePerson/videos/cam02.mp4 +0 -0
  63. Pose2Sim/Demo_SinglePerson/videos/cam03.mp4 +0 -0
  64. Pose2Sim/Demo_SinglePerson/videos/cam04.mp4 +0 -0
  65. Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/mean.npy +0 -0
  66. Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/model.onnx +0 -0
  67. Pose2Sim/MarkerAugmenter/LSTM/v0.3_lower/std.npy +0 -0
  68. Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/mean.npy +0 -0
  69. Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/model.onnx +0 -0
  70. Pose2Sim/MarkerAugmenter/LSTM/v0.3_upper/std.npy +0 -0
  71. Pose2Sim/OpenSim_Setup/Geometry/block.stl +86 -0
  72. Pose2Sim/OpenSim_Setup/Geometry/block.vtp +70 -0
  73. Pose2Sim/OpenSim_Setup/Geometry/bofoot.stl +12882 -0
  74. Pose2Sim/OpenSim_Setup/Geometry/bofoot.vtp +3008 -0
  75. Pose2Sim/OpenSim_Setup/Geometry/capitate_lvs.stl +1234 -0
  76. Pose2Sim/OpenSim_Setup/Geometry/capitate_lvs.vtp +378 -0
  77. Pose2Sim/OpenSim_Setup/Geometry/capitate_rvs.stl +1234 -0
  78. Pose2Sim/OpenSim_Setup/Geometry/capitate_rvs.vtp +378 -0
  79. Pose2Sim/OpenSim_Setup/Geometry/cerv1sm.stl +4342 -0
  80. Pose2Sim/OpenSim_Setup/Geometry/cerv1sm.vtp +1002 -0
  81. Pose2Sim/OpenSim_Setup/Geometry/cerv2sm.stl +2018 -0
  82. Pose2Sim/OpenSim_Setup/Geometry/cerv2sm.vtp +522 -0
  83. Pose2Sim/OpenSim_Setup/Geometry/cerv3sm.stl +2018 -0
  84. Pose2Sim/OpenSim_Setup/Geometry/cerv3sm.vtp +522 -0
  85. Pose2Sim/OpenSim_Setup/Geometry/cerv4sm.stl +2018 -0
  86. Pose2Sim/OpenSim_Setup/Geometry/cerv4sm.vtp +522 -0
  87. Pose2Sim/OpenSim_Setup/Geometry/cerv5sm.stl +1990 -0
  88. Pose2Sim/OpenSim_Setup/Geometry/cerv5sm.vtp +522 -0
  89. Pose2Sim/OpenSim_Setup/Geometry/cerv6sm.stl +2018 -0
  90. Pose2Sim/OpenSim_Setup/Geometry/cerv6sm.vtp +522 -0
  91. Pose2Sim/OpenSim_Setup/Geometry/cerv7.stl +2970 -0
  92. Pose2Sim/OpenSim_Setup/Geometry/cerv7.vtp +870 -0
  93. Pose2Sim/OpenSim_Setup/Geometry/femur_l.stl +6358 -0
  94. Pose2Sim/OpenSim_Setup/Geometry/femur_l.vtp +1842 -0
  95. Pose2Sim/OpenSim_Setup/Geometry/femur_r.stl +6358 -0
  96. Pose2Sim/OpenSim_Setup/Geometry/femur_r.vtp +1842 -0
  97. Pose2Sim/OpenSim_Setup/Geometry/fibula_l.stl +1682 -0
  98. Pose2Sim/OpenSim_Setup/Geometry/fibula_l.vtp +506 -0
  99. Pose2Sim/OpenSim_Setup/Geometry/fibula_r.stl +1682 -0
  100. Pose2Sim/OpenSim_Setup/Geometry/fibula_r.vtp +506 -0
  101. Pose2Sim/OpenSim_Setup/Geometry/foot.stl +13687 -0
  102. Pose2Sim/OpenSim_Setup/Geometry/foot.vtp +3477 -0
  103. Pose2Sim/OpenSim_Setup/Geometry/hamate_lvs.stl +1038 -0
  104. Pose2Sim/OpenSim_Setup/Geometry/hamate_lvs.vtp +322 -0
  105. Pose2Sim/OpenSim_Setup/Geometry/hamate_rvs.stl +1038 -0
  106. Pose2Sim/OpenSim_Setup/Geometry/hamate_rvs.vtp +322 -0
  107. Pose2Sim/OpenSim_Setup/Geometry/hat_jaw.stl +20414 -0
  108. Pose2Sim/OpenSim_Setup/Geometry/hat_jaw.vtp +4736 -0
  109. Pose2Sim/OpenSim_Setup/Geometry/hat_ribs_scap.stl +67762 -0
  110. Pose2Sim/OpenSim_Setup/Geometry/hat_ribs_scap.vtp +11387 -0
  111. Pose2Sim/OpenSim_Setup/Geometry/hat_skull.stl +46146 -0
  112. Pose2Sim/OpenSim_Setup/Geometry/hat_skull.vtp +10411 -0
  113. Pose2Sim/OpenSim_Setup/Geometry/humerus_lv.stl +4734 -0
  114. Pose2Sim/OpenSim_Setup/Geometry/humerus_lv.vtp +1378 -0
  115. Pose2Sim/OpenSim_Setup/Geometry/humerus_rv.stl +4734 -0
  116. Pose2Sim/OpenSim_Setup/Geometry/humerus_rv.vtp +1378 -0
  117. Pose2Sim/OpenSim_Setup/Geometry/index_distal_lvs.stl +1752 -0
  118. Pose2Sim/OpenSim_Setup/Geometry/index_distal_lvs.vtp +526 -0
  119. Pose2Sim/OpenSim_Setup/Geometry/index_distal_rvs.stl +1752 -0
  120. Pose2Sim/OpenSim_Setup/Geometry/index_distal_rvs.vtp +526 -0
  121. Pose2Sim/OpenSim_Setup/Geometry/index_medial_lvs.stl +1850 -0
  122. Pose2Sim/OpenSim_Setup/Geometry/index_medial_lvs.vtp +554 -0
  123. Pose2Sim/OpenSim_Setup/Geometry/index_medial_rvs.stl +1850 -0
  124. Pose2Sim/OpenSim_Setup/Geometry/index_medial_rvs.vtp +554 -0
  125. Pose2Sim/OpenSim_Setup/Geometry/index_proximal_lvs.stl +1591 -0
  126. Pose2Sim/OpenSim_Setup/Geometry/index_proximal_lvs.vtp +481 -0
  127. Pose2Sim/OpenSim_Setup/Geometry/index_proximal_rvs.stl +1591 -0
  128. Pose2Sim/OpenSim_Setup/Geometry/index_proximal_rvs.vtp +481 -0
  129. Pose2Sim/OpenSim_Setup/Geometry/l_bofoot.stl +12882 -0
  130. Pose2Sim/OpenSim_Setup/Geometry/l_bofoot.vtp +3008 -0
  131. Pose2Sim/OpenSim_Setup/Geometry/l_foot.stl +13687 -0
  132. Pose2Sim/OpenSim_Setup/Geometry/l_foot.vtp +3477 -0
  133. Pose2Sim/OpenSim_Setup/Geometry/l_patella.stl +982 -0
  134. Pose2Sim/OpenSim_Setup/Geometry/l_patella.vtp +246 -0
  135. Pose2Sim/OpenSim_Setup/Geometry/l_pelvis.stl +1696 -0
  136. Pose2Sim/OpenSim_Setup/Geometry/l_pelvis.vtp +514 -0
  137. Pose2Sim/OpenSim_Setup/Geometry/little_distal_lvs.stl +2214 -0
  138. Pose2Sim/OpenSim_Setup/Geometry/little_distal_lvs.vtp +656 -0
  139. Pose2Sim/OpenSim_Setup/Geometry/little_distal_rvs.stl +2214 -0
  140. Pose2Sim/OpenSim_Setup/Geometry/little_distal_rvs.vtp +656 -0
  141. Pose2Sim/OpenSim_Setup/Geometry/little_medial_lvs.stl +1654 -0
  142. Pose2Sim/OpenSim_Setup/Geometry/little_medial_lvs.vtp +498 -0
  143. Pose2Sim/OpenSim_Setup/Geometry/little_medial_rvs.stl +1654 -0
  144. Pose2Sim/OpenSim_Setup/Geometry/little_medial_rvs.vtp +498 -0
  145. Pose2Sim/OpenSim_Setup/Geometry/little_proximal_lvs.stl +1892 -0
  146. Pose2Sim/OpenSim_Setup/Geometry/little_proximal_lvs.vtp +566 -0
  147. Pose2Sim/OpenSim_Setup/Geometry/little_proximal_rvs.stl +1892 -0
  148. Pose2Sim/OpenSim_Setup/Geometry/little_proximal_rvs.vtp +566 -0
  149. Pose2Sim/OpenSim_Setup/Geometry/lumbar1.stl +2970 -0
  150. Pose2Sim/OpenSim_Setup/Geometry/lumbar1.vtp +870 -0
  151. Pose2Sim/OpenSim_Setup/Geometry/lumbar2.stl +2970 -0
  152. Pose2Sim/OpenSim_Setup/Geometry/lumbar2.vtp +870 -0
  153. Pose2Sim/OpenSim_Setup/Geometry/lumbar3.stl +2970 -0
  154. Pose2Sim/OpenSim_Setup/Geometry/lumbar3.vtp +870 -0
  155. Pose2Sim/OpenSim_Setup/Geometry/lumbar4.stl +2970 -0
  156. Pose2Sim/OpenSim_Setup/Geometry/lumbar4.vtp +870 -0
  157. Pose2Sim/OpenSim_Setup/Geometry/lumbar5.stl +2970 -0
  158. Pose2Sim/OpenSim_Setup/Geometry/lumbar5.vtp +870 -0
  159. Pose2Sim/OpenSim_Setup/Geometry/lunate_lvs.stl +926 -0
  160. Pose2Sim/OpenSim_Setup/Geometry/lunate_lvs.vtp +290 -0
  161. Pose2Sim/OpenSim_Setup/Geometry/lunate_rvs.stl +926 -0
  162. Pose2Sim/OpenSim_Setup/Geometry/lunate_rvs.vtp +290 -0
  163. Pose2Sim/OpenSim_Setup/Geometry/metacarpal1_lvs.stl +4118 -0
  164. Pose2Sim/OpenSim_Setup/Geometry/metacarpal1_lvs.vtp +1202 -0
  165. Pose2Sim/OpenSim_Setup/Geometry/metacarpal1_rvs.stl +4118 -0
  166. Pose2Sim/OpenSim_Setup/Geometry/metacarpal1_rvs.vtp +1202 -0
  167. Pose2Sim/OpenSim_Setup/Geometry/metacarpal2_lvs.stl +3138 -0
  168. Pose2Sim/OpenSim_Setup/Geometry/metacarpal2_lvs.vtp +924 -0
  169. Pose2Sim/OpenSim_Setup/Geometry/metacarpal2_rvs.stl +3138 -0
  170. Pose2Sim/OpenSim_Setup/Geometry/metacarpal2_rvs.vtp +924 -0
  171. Pose2Sim/OpenSim_Setup/Geometry/metacarpal3_lvs.stl +4454 -0
  172. Pose2Sim/OpenSim_Setup/Geometry/metacarpal3_lvs.vtp +1298 -0
  173. Pose2Sim/OpenSim_Setup/Geometry/metacarpal3_rvs.stl +4454 -0
  174. Pose2Sim/OpenSim_Setup/Geometry/metacarpal3_rvs.vtp +1298 -0
  175. Pose2Sim/OpenSim_Setup/Geometry/metacarpal4_lvs.stl +4860 -0
  176. Pose2Sim/OpenSim_Setup/Geometry/metacarpal4_lvs.vtp +1410 -0
  177. Pose2Sim/OpenSim_Setup/Geometry/metacarpal4_rvs.stl +4860 -0
  178. Pose2Sim/OpenSim_Setup/Geometry/metacarpal4_rvs.vtp +1410 -0
  179. Pose2Sim/OpenSim_Setup/Geometry/metacarpal5_lvs.stl +5378 -0
  180. Pose2Sim/OpenSim_Setup/Geometry/metacarpal5_lvs.vtp +1558 -0
  181. Pose2Sim/OpenSim_Setup/Geometry/metacarpal5_rvs.stl +5378 -0
  182. Pose2Sim/OpenSim_Setup/Geometry/metacarpal5_rvs.vtp +1558 -0
  183. Pose2Sim/OpenSim_Setup/Geometry/middle_distal_lvs.stl +1962 -0
  184. Pose2Sim/OpenSim_Setup/Geometry/middle_distal_lvs.vtp +586 -0
  185. Pose2Sim/OpenSim_Setup/Geometry/middle_distal_rvs.stl +1962 -0
  186. Pose2Sim/OpenSim_Setup/Geometry/middle_distal_rvs.vtp +586 -0
  187. Pose2Sim/OpenSim_Setup/Geometry/middle_medial_lvs.stl +2298 -0
  188. Pose2Sim/OpenSim_Setup/Geometry/middle_medial_lvs.vtp +682 -0
  189. Pose2Sim/OpenSim_Setup/Geometry/middle_medial_rvs.stl +2298 -0
  190. Pose2Sim/OpenSim_Setup/Geometry/middle_medial_rvs.vtp +682 -0
  191. Pose2Sim/OpenSim_Setup/Geometry/middle_proximal_lvs.stl +1836 -0
  192. Pose2Sim/OpenSim_Setup/Geometry/middle_proximal_lvs.vtp +550 -0
  193. Pose2Sim/OpenSim_Setup/Geometry/middle_proximal_rvs.stl +1836 -0
  194. Pose2Sim/OpenSim_Setup/Geometry/middle_proximal_rvs.vtp +550 -0
  195. Pose2Sim/OpenSim_Setup/Geometry/pisiform_lvs.stl +450 -0
  196. Pose2Sim/OpenSim_Setup/Geometry/pisiform_lvs.vtp +154 -0
  197. Pose2Sim/OpenSim_Setup/Geometry/pisiform_rvs.stl +450 -0
  198. Pose2Sim/OpenSim_Setup/Geometry/pisiform_rvs.vtp +154 -0
  199. Pose2Sim/OpenSim_Setup/Geometry/r_patella.stl +982 -0
  200. Pose2Sim/OpenSim_Setup/Geometry/r_patella.vtp +246 -0
  201. Pose2Sim/OpenSim_Setup/Geometry/r_pelvis.stl +1696 -0
  202. Pose2Sim/OpenSim_Setup/Geometry/r_pelvis.vtp +514 -0
  203. Pose2Sim/OpenSim_Setup/Geometry/radius_lv.stl +2690 -0
  204. Pose2Sim/OpenSim_Setup/Geometry/radius_lv.vtp +794 -0
  205. Pose2Sim/OpenSim_Setup/Geometry/radius_rv.stl +2690 -0
  206. Pose2Sim/OpenSim_Setup/Geometry/radius_rv.vtp +794 -0
  207. Pose2Sim/OpenSim_Setup/Geometry/ring_distal_lvs.stl +1724 -0
  208. Pose2Sim/OpenSim_Setup/Geometry/ring_distal_lvs.vtp +518 -0
  209. Pose2Sim/OpenSim_Setup/Geometry/ring_distal_rvs.stl +1724 -0
  210. Pose2Sim/OpenSim_Setup/Geometry/ring_distal_rvs.vtp +518 -0
  211. Pose2Sim/OpenSim_Setup/Geometry/ring_medial_lvs.stl +2410 -0
  212. Pose2Sim/OpenSim_Setup/Geometry/ring_medial_lvs.vtp +714 -0
  213. Pose2Sim/OpenSim_Setup/Geometry/ring_medial_rvs.stl +2410 -0
  214. Pose2Sim/OpenSim_Setup/Geometry/ring_medial_rvs.vtp +714 -0
  215. Pose2Sim/OpenSim_Setup/Geometry/ring_proximal_lvs.stl +1822 -0
  216. Pose2Sim/OpenSim_Setup/Geometry/ring_proximal_lvs.vtp +546 -0
  217. Pose2Sim/OpenSim_Setup/Geometry/ring_proximal_rvs.stl +1822 -0
  218. Pose2Sim/OpenSim_Setup/Geometry/ring_proximal_rvs.vtp +546 -0
  219. Pose2Sim/OpenSim_Setup/Geometry/sacrum.stl +2662 -0
  220. Pose2Sim/OpenSim_Setup/Geometry/sacrum.vtp +606 -0
  221. Pose2Sim/OpenSim_Setup/Geometry/scaphoid_lvs.stl +996 -0
  222. Pose2Sim/OpenSim_Setup/Geometry/scaphoid_lvs.vtp +310 -0
  223. Pose2Sim/OpenSim_Setup/Geometry/scaphoid_rvs.stl +996 -0
  224. Pose2Sim/OpenSim_Setup/Geometry/scaphoid_rvs.vtp +310 -0
  225. Pose2Sim/OpenSim_Setup/Geometry/talus_lv.stl +6414 -0
  226. Pose2Sim/OpenSim_Setup/Geometry/talus_lv.vtp +1858 -0
  227. Pose2Sim/OpenSim_Setup/Geometry/talus_rv.stl +6414 -0
  228. Pose2Sim/OpenSim_Setup/Geometry/talus_rv.vtp +1858 -0
  229. Pose2Sim/OpenSim_Setup/Geometry/thoracic10_s.stl +2970 -0
  230. Pose2Sim/OpenSim_Setup/Geometry/thoracic10_s.vtp +870 -0
  231. Pose2Sim/OpenSim_Setup/Geometry/thoracic11_s.stl +2970 -0
  232. Pose2Sim/OpenSim_Setup/Geometry/thoracic11_s.vtp +870 -0
  233. Pose2Sim/OpenSim_Setup/Geometry/thoracic12_s.stl +2970 -0
  234. Pose2Sim/OpenSim_Setup/Geometry/thoracic12_s.vtp +870 -0
  235. Pose2Sim/OpenSim_Setup/Geometry/thoracic1_s.stl +2970 -0
  236. Pose2Sim/OpenSim_Setup/Geometry/thoracic1_s.vtp +870 -0
  237. Pose2Sim/OpenSim_Setup/Geometry/thoracic2_s.stl +2970 -0
  238. Pose2Sim/OpenSim_Setup/Geometry/thoracic2_s.vtp +870 -0
  239. Pose2Sim/OpenSim_Setup/Geometry/thoracic3_s.stl +2970 -0
  240. Pose2Sim/OpenSim_Setup/Geometry/thoracic3_s.vtp +870 -0
  241. Pose2Sim/OpenSim_Setup/Geometry/thoracic4_s.stl +2970 -0
  242. Pose2Sim/OpenSim_Setup/Geometry/thoracic4_s.vtp +870 -0
  243. Pose2Sim/OpenSim_Setup/Geometry/thoracic5_s.stl +2970 -0
  244. Pose2Sim/OpenSim_Setup/Geometry/thoracic5_s.vtp +870 -0
  245. Pose2Sim/OpenSim_Setup/Geometry/thoracic6_s.stl +2970 -0
  246. Pose2Sim/OpenSim_Setup/Geometry/thoracic6_s.vtp +870 -0
  247. Pose2Sim/OpenSim_Setup/Geometry/thoracic7_s.stl +2970 -0
  248. Pose2Sim/OpenSim_Setup/Geometry/thoracic7_s.vtp +870 -0
  249. Pose2Sim/OpenSim_Setup/Geometry/thoracic8_s.stl +2970 -0
  250. Pose2Sim/OpenSim_Setup/Geometry/thoracic8_s.vtp +870 -0
  251. Pose2Sim/OpenSim_Setup/Geometry/thoracic9_s.stl +2970 -0
  252. Pose2Sim/OpenSim_Setup/Geometry/thoracic9_s.vtp +870 -0
  253. Pose2Sim/OpenSim_Setup/Geometry/thumb_distal_lvs.stl +2410 -0
  254. Pose2Sim/OpenSim_Setup/Geometry/thumb_distal_lvs.vtp +714 -0
  255. Pose2Sim/OpenSim_Setup/Geometry/thumb_distal_rvs.stl +2410 -0
  256. Pose2Sim/OpenSim_Setup/Geometry/thumb_distal_rvs.vtp +714 -0
  257. Pose2Sim/OpenSim_Setup/Geometry/thumb_proximal_lvs.stl +1976 -0
  258. Pose2Sim/OpenSim_Setup/Geometry/thumb_proximal_lvs.vtp +590 -0
  259. Pose2Sim/OpenSim_Setup/Geometry/thumb_proximal_rvs.stl +1976 -0
  260. Pose2Sim/OpenSim_Setup/Geometry/thumb_proximal_rvs.vtp +590 -0
  261. Pose2Sim/OpenSim_Setup/Geometry/tibia_l.stl +2004 -0
  262. Pose2Sim/OpenSim_Setup/Geometry/tibia_l.vtp +598 -0
  263. Pose2Sim/OpenSim_Setup/Geometry/tibia_r.stl +2004 -0
  264. Pose2Sim/OpenSim_Setup/Geometry/tibia_r.vtp +598 -0
  265. Pose2Sim/OpenSim_Setup/Geometry/trapezium_lvs.stl +1444 -0
  266. Pose2Sim/OpenSim_Setup/Geometry/trapezium_lvs.vtp +438 -0
  267. Pose2Sim/OpenSim_Setup/Geometry/trapezium_rvs.stl +1444 -0
  268. Pose2Sim/OpenSim_Setup/Geometry/trapezium_rvs.vtp +438 -0
  269. Pose2Sim/OpenSim_Setup/Geometry/trapezoid_lvs.stl +884 -0
  270. Pose2Sim/OpenSim_Setup/Geometry/trapezoid_lvs.vtp +278 -0
  271. Pose2Sim/OpenSim_Setup/Geometry/trapezoid_rvs.stl +884 -0
  272. Pose2Sim/OpenSim_Setup/Geometry/trapezoid_rvs.vtp +278 -0
  273. Pose2Sim/OpenSim_Setup/Geometry/triquetrum_lvs.stl +1136 -0
  274. Pose2Sim/OpenSim_Setup/Geometry/triquetrum_lvs.vtp +350 -0
  275. Pose2Sim/OpenSim_Setup/Geometry/triquetrum_rvs.stl +1136 -0
  276. Pose2Sim/OpenSim_Setup/Geometry/triquetrum_rvs.vtp +350 -0
  277. Pose2Sim/OpenSim_Setup/Geometry/ulna_lv.stl +2746 -0
  278. Pose2Sim/OpenSim_Setup/Geometry/ulna_lv.vtp +810 -0
  279. Pose2Sim/OpenSim_Setup/Geometry/ulna_rv.stl +2746 -0
  280. Pose2Sim/OpenSim_Setup/Geometry/ulna_rv.vtp +810 -0
  281. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Blazepose.xml +191 -0
  282. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Body135.xml +203 -0
  283. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Body25.xml +167 -0
  284. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Body25b.xml +167 -0
  285. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Coco133.xml +203 -0
  286. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Coco17.xml +125 -0
  287. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Halpe26.xml +173 -0
  288. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_Halpe68_136.xml +209 -0
  289. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_withHands_LSTM.xml +335 -0
  290. Pose2Sim/OpenSim_Setup/IK_Setup_Pose2Sim_withoutHands_LSTM.xml +299 -0
  291. Pose2Sim/OpenSim_Setup/Markers_BlazePose.xml +197 -0
  292. Pose2Sim/OpenSim_Setup/Markers_Body135.xml +215 -0
  293. Pose2Sim/OpenSim_Setup/Markers_Body25.xml +177 -0
  294. Pose2Sim/OpenSim_Setup/Markers_Body25b.xml +177 -0
  295. Pose2Sim/OpenSim_Setup/Markers_Coco133.xml +215 -0
  296. Pose2Sim/OpenSim_Setup/Markers_Coco17.xml +121 -0
  297. Pose2Sim/OpenSim_Setup/Markers_Halpe26.xml +183 -0
  298. Pose2Sim/OpenSim_Setup/Markers_Halpe68_136.xml +221 -0
  299. Pose2Sim/OpenSim_Setup/Markers_LSTM.xml +415 -0
  300. Pose2Sim/OpenSim_Setup/Markers_SKEL.xml +849 -0
  301. Pose2Sim/OpenSim_Setup/Model_Pose2Sim.osim +6743 -0
  302. Pose2Sim/OpenSim_Setup/Model_Pose2Sim_contacts_muscles.osim +31563 -0
  303. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Blazepose.xml +468 -0
  304. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Body135.xml +599 -0
  305. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Body25.xml +594 -0
  306. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Body25b.xml +599 -0
  307. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Coco133.xml +607 -0
  308. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Coco17.xml +504 -0
  309. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Halpe26.xml +605 -0
  310. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_Halpe68_136.xml +605 -0
  311. Pose2Sim/OpenSim_Setup/Scaling_Setup_Pose2Sim_LSTM.xml +753 -0
  312. Pose2Sim/Pose2Sim.py +401 -0
  313. Pose2Sim/Utilities/AlphaPose_to_OpenPose.py +123 -0
  314. Pose2Sim/Utilities/Blazepose_runsave.py +246 -0
  315. Pose2Sim/Utilities/DLC_to_OpenPose.py +105 -0
  316. Pose2Sim/Utilities/MMPose_to_OpenPose.py +67 -0
  317. Pose2Sim/Utilities/__init__.py +8 -0
  318. Pose2Sim/Utilities/bodykin_from_mot_osim.py +196 -0
  319. Pose2Sim/Utilities/c3d_to_trc.py +136 -0
  320. Pose2Sim/Utilities/calib_easymocap_to_toml.py +163 -0
  321. Pose2Sim/Utilities/calib_from_checkerboard.py +323 -0
  322. Pose2Sim/Utilities/calib_qca_to_toml.py +242 -0
  323. Pose2Sim/Utilities/calib_toml_to_easymocap.py +157 -0
  324. Pose2Sim/Utilities/calib_toml_to_opencap.py +187 -0
  325. Pose2Sim/Utilities/calib_toml_to_qca.py +206 -0
  326. Pose2Sim/Utilities/face_blurring.py +467 -0
  327. Pose2Sim/Utilities/json_display_with_img.py +119 -0
  328. Pose2Sim/Utilities/json_display_without_img.py +185 -0
  329. Pose2Sim/Utilities/reproj_from_trc_calib.py +517 -0
  330. Pose2Sim/Utilities/tests.py +209 -0
  331. Pose2Sim/Utilities/trc_Zup_to_Yup.py +93 -0
  332. Pose2Sim/Utilities/trc_combine.py +174 -0
  333. Pose2Sim/Utilities/trc_desample.py +94 -0
  334. Pose2Sim/Utilities/trc_filter.py +368 -0
  335. Pose2Sim/Utilities/trc_from_easymocap.py +174 -0
  336. Pose2Sim/Utilities/trc_from_mot_osim.py +177 -0
  337. Pose2Sim/Utilities/trc_gaitevents.py +730 -0
  338. Pose2Sim/Utilities/trc_plot.py +170 -0
  339. Pose2Sim/Utilities/trc_to_c3d.py +134 -0
  340. Pose2Sim/__init__.py +14 -0
  341. Pose2Sim/calibration.py +1360 -0
  342. Pose2Sim/common.py +1298 -0
  343. Pose2Sim/filtering.py +517 -0
  344. Pose2Sim/kinematics.py +687 -0
  345. Pose2Sim/markerAugmentation.py +327 -0
  346. Pose2Sim/personAssociation.py +777 -0
  347. Pose2Sim/poseEstimation.py +612 -0
  348. Pose2Sim/skeletons.py +1001 -0
  349. Pose2Sim/synchronization.py +1593 -0
  350. Pose2Sim/triangulation.py +873 -0
  351. pose2sim-0.0.0.dist-info/METADATA +1115 -0
  352. pose2sim-0.0.0.dist-info/RECORD +356 -0
  353. pose2sim-0.0.0.dist-info/WHEEL +5 -0
  354. pose2sim-0.0.0.dist-info/entry_points.txt +27 -0
  355. pose2sim-0.0.0.dist-info/licenses/LICENSE +29 -0
  356. pose2sim-0.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,325 @@
1
+ ###############################################################################
2
+ ## PROJECT PARAMETERS ##
3
+ ###############################################################################
4
+
5
+
6
+ # Configure your project parameters here.
7
+ #
8
+ # IMPORTANT:
9
+ # If a parameter is not found here, Pose2Sim will look for its value in the
10
+ # Config.toml file of the level above. This way, you can set global batch
11
+ # instructions and alter them for specific trials.
12
+ #
13
+ # If you wish to overwrite a parameter for a specific trial, edit
14
+ # its Config.toml file by uncommenting its key (e.g., [project])
15
+ # and editing its value (e.g., frame_range = [10,300]). Also try
16
+ # uncommenting [filtering.butterworth] and set cut_off_frequency = 10, etc.
17
+
18
+
19
+
20
+ [project]
21
+ multi_person = false # true for trials with multiple participants. If false, only the person with lowest reprojection error is analyzed.
22
+ participant_height = 'auto' # 'auto', float (eg 1.72), or list of floats (eg [1.72, 1.40]) # meters # Only used for marker augmentation
23
+ participant_mass = 70.0 # float (eg 70.0), or list of floats (eg [70.0, 63.5]) # kg # Only used for marker augmentation and scaling, no impact on results unless you need to further compute forces rather than only kinematics
24
+
25
+ frame_rate = 'auto' # fps # int or 'auto'. If 'auto', finds from video (or defaults to 60 fps if you work with images)
26
+ frame_range = [] # For example [10,300], or [] for all frames.
27
+ ## If cameras are not synchronized, designates the frame range of the camera with the shortest recording time
28
+ ## N.B.: If you want a time range instead, use frame_range = time_range * frame_rate
29
+ ## For example if you want to analyze from 0.1 to 2 seconds with a 60 fps frame rate,
30
+ ## frame_range = [0.1, 2.0]*frame_rate = [6, 120]
31
+
32
+ exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
33
+ # e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
34
+
35
+
36
+ [pose]
37
+ vid_img_extension = 'mp4' # any video or image extension
38
+
39
+ pose_model = 'Body_with_feet' #With RTMLib:
40
+ # - Body_with_feet (default HALPE_26 model),
41
+ # - Whole_body_wrist (COCO_133_WRIST: body + feet + 2 hand_points),
42
+ # - Whole_body (COCO_133: body + feet + hands),
43
+ # - Body (COCO_17). Marker augmentation won't work, Kinematic analysis will work,
44
+ # - Hand (HAND_21, only lightweight mode. Potentially better results with Whole_body),
45
+ # - Face (FACE_106),
46
+ # - Animal (ANIMAL2D_17)
47
+ # /!\ Only RTMPose is natively embeded in Pose2Sim. For all other pose estimation methods, you will have to run them yourself, and then refer to the documentation to convert the output files if needed
48
+ # /!\ For Face and Animal, use mode="""{dictionary}""", and find the corresponding .onnx model there https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose
49
+
50
+ #With MMPose: HALPE_26, COCO_133, COCO_17, CUSTOM. See CUSTOM example at the end of the file
51
+ #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII
52
+ #With mediapipe: BLAZEPOSE
53
+ #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133
54
+ #With deeplabcut: CUSTOM. See example at the end of the file
55
+
56
+ mode = 'balanced' # 'lightweight', 'balanced', 'performance',
57
+ # or """{dictionary}""" (see below)
58
+ # A dictionary (WITHIN THREE DOUBLE QUOTES) allows you to manually select the person detection (if top_down approach) and/or pose estimation models (see https://github.com/Tau-J/rtmlib).
59
+ # Models can be local paths or URLs.
60
+ # Make sure the input_sizes are within square brackets, and that they are in the opposite order from the one in the model path (for example, it would be [192,256] for rtmpose-m_simcc-body7_pt-body7-halpe26_700e-256x192-4d3e73dd_20230605.zip).
61
+ # If your pose_model is not provided in skeletons.py, you may have to create your own one (see example at the end of the file).
62
+ # Example, equivalent to mode='balanced':
63
+ # mode = """{'det_class':'YOLOX',
64
+ # 'det_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/yolox_m_8xb8-300e_humanart-c2c7a14a.zip',
65
+ # 'det_input_size':[640, 640],
66
+ # 'pose_class':'RTMPose',
67
+ # 'pose_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/rtmpose-m_simcc-body7_pt-body7-halpe26_700e-256x192-4d3e73dd_20230605.zip',
68
+ # 'pose_input_size':[192,256]}"""
69
+ # Example with one-stage RTMO model (Requires pose_model = 'Body'):
70
+ # mode = """{'pose_class':'RTMO',
71
+ # 'pose_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmo/onnx_sdk/rtmo-m_16xb16-600e_body7-640x640-39e78cc4_20231211.zip',
72
+ # 'pose_input_size':[640, 640]}"""
73
+ # Example with animal pose estimation:
74
+ # mode = """{'pose_class':'RTMPose',
75
+ # 'pose_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.zip',
76
+ # 'pose_input_size':[256,256]}"""
77
+
78
+ det_frequency = 1 # Run person detection only every N frames, and inbetween track previously detected bounding boxes (keypoint detection is still run on all frames).
79
+ # Equal to or greater than 1, can be as high as you want in simple uncrowded cases. Much faster, but might be less accurate.
80
+ device = 'auto' # 'auto', 'CPU', 'CUDA', 'MPS', 'ROCM'
81
+ backend = 'auto' # 'auto', 'openvino', 'onnxruntime', 'opencv'
82
+
83
+ tracking_mode = 'sports2d' # 'sports2d' or 'deepsort'. 'deepsort' is slower but more robust in difficult configurations
84
+ deepsort_params = """{'max_age':30, 'n_init':3, 'nms_max_overlap':0.8, 'max_cosine_distance':0.3, 'nn_budget':200, 'max_iou_distance':0.8}""" # """{dictionary between 3 double quotes}"""
85
+ # More robust in crowded scenes but Can be tricky to parametrize. More information there: https://github.com/levan92/deep_sort_realtime/blob/master/deep_sort_realtime/deepsort_tracker.py#L51
86
+ # Note: For faster and more robust tracking, use {'embedder_gpu': True, embedder':'torchreid'}, which uses the GPU and runs osnet_ain_x1_0 by default. requires `pip install torch torchvision torchreid gdown tensorboard`
87
+
88
+ display_detection = false
89
+ overwrite_pose = false # set to false if you don't want to recalculate pose estimation when it has already been done
90
+ save_video = 'to_video' # 'to_video' or 'to_images', 'none', or ['to_video', 'to_images']
91
+ output_format = 'openpose' # 'openpose', 'mmpose', 'deeplabcut', 'none' or a list of them # /!\ only 'openpose' is supported for now
92
+
93
+
94
+ [synchronization]
95
+ synchronization_gui = true # true or false. If true, a player will popup and let the user determine synchronization parameters. If false, it will be done automatically based on the parameters below
96
+ display_sync_plots = false # true or false (lowercase)
97
+ keypoints_to_consider = 'all' # 'all' if all points should be considered, for example if the participant did not perform any particicular sharp movement. In this case, the capture needs to be 5-10 seconds long at least
98
+ # ['RWrist', 'RElbow'] list of keypoint names if you want to specify keypoints with a sharp vertical motion.
99
+ approx_time_maxspeed = 'auto' # 'auto' if you want to consider the whole capture (default, slower if long sequences)
100
+ # [10.0, 2.0, 8.0, 11.0] list of times (seconds) if you want to specify the approximate time of a clear vertical event for each camera
101
+ time_range_around_maxspeed = 2.0 # Search for best correlation in the range [approx_time_maxspeed - time_range_around_maxspeed, approx_time_maxspeed + time_range_around_maxspeed]
102
+ likelihood_threshold = 0.4 # Keypoints whose likelihood is below likelihood_threshold are filtered out
103
+ filter_cutoff = 6 # time series are smoothed to get coherent time-lagged correlation
104
+ filter_order = 4
105
+
106
+
107
+ # Take heart, calibration is not that complicated once you get the hang of it!
108
+ [calibration]
109
+ calibration_type = 'convert' # 'convert' or 'calculate'
110
+
111
+ [calibration.convert]
112
+ convert_from = 'qualisys' # 'caliscope', 'qualisys', 'optitrack', vicon', 'opencap', 'easymocap', 'biocv', 'anipose', or 'freemocap'
113
+ [calibration.convert.caliscope] # No parameter needed
114
+ [calibration.convert.qualisys]
115
+ binning_factor = 1 # Usually 1, except when filming in 540p where it usually is 2
116
+ [calibration.convert.optitrack] # See readme for instructions
117
+ [calibration.convert.vicon] # No parameter needed
118
+ [calibration.convert.opencap] # No parameter needed
119
+ [calibration.convert.easymocap] # No parameter needed
120
+ [calibration.convert.biocv] # No parameter needed
121
+ [calibration.convert.anipose] # No parameter needed
122
+ [calibration.convert.freemocap] # No parameter needed
123
+
124
+
125
+ [calibration.calculate]
126
+ # Camera properties, theoretically need to be calculated only once in a camera lifetime
127
+ [calibration.calculate.intrinsics]
128
+ overwrite_intrinsics = false # set to false if you don't want to recalculate intrinsic parameters
129
+ show_detection_intrinsics = true # true or false (lowercase)
130
+ intrinsics_extension = 'jpg' # any video or image extension
131
+ extract_every_N_sec = 1 # if video, extract frames every N seconds (can be <1 )
132
+ intrinsics_corners_nb = [4,7]
133
+ intrinsics_square_size = 60 # mm
134
+
135
+ # Camera placements, need to be done before every session
136
+ [calibration.calculate.extrinsics]
137
+ calculate_extrinsics = true # true or false (lowercase)
138
+ extrinsics_method = 'scene' # 'board', 'scene', 'keypoints'
139
+ # 'board' should be large enough to be detected when laid on the floor. Not recommended.
140
+ # 'scene' involves manually clicking any point of know coordinates on scene. Usually more accurate if points are spread out.
141
+ # 'keypoints' uses automatic pose estimation of a person freely walking and waving arms in the scene. Slighlty less accurate, requires synchronized cameras.
142
+ moving_cameras = false # Not implemented yet
143
+
144
+ [calibration.calculate.extrinsics.board]
145
+ show_reprojection_error = true # true or false (lowercase)
146
+ extrinsics_extension = 'png' # any video or image extension
147
+ extrinsics_corners_nb = [4,7] # [H,W] rather than [w,h]
148
+ extrinsics_square_size = 60 # mm # [h,w] if square is actually a rectangle
149
+
150
+ [calibration.calculate.extrinsics.scene]
151
+ show_reprojection_error = true # true or false (lowercase)
152
+ extrinsics_extension = 'png' # any video or image extension
153
+ # list of 3D coordinates to be manually labelled on images. Can also be a 2 dimensional plane.
154
+ # in m -> unlike for intrinsics, NOT in mm!
155
+ object_coords_3d = [[-2.0, 0.3, 0.0],
156
+ [-2.0 , 0.0, 0.0],
157
+ [-2.0, 0.0, 0.05],
158
+ [-2.0, -0.3 , 0.0],
159
+ [0.0, 0.3, 0.0],
160
+ [0.0, 0.0, 0.0],
161
+ [0.0, 0.0, 0.05],
162
+ [0.0, -0.3, 0.0]]
163
+
164
+ [calibration.calculate.extrinsics.keypoints]
165
+ # Coming soon!
166
+
167
+
168
+ [personAssociation]
169
+ likelihood_threshold_association = 0.3
170
+
171
+ [personAssociation.single_person]
172
+ reproj_error_threshold_association = 20 # px
173
+ tracked_keypoint = 'Neck' # If the neck is not detected by the pose_model, check skeleton.py
174
+ # and choose a stable point for tracking the person of interest (e.g., 'right_shoulder' or 'RShoulder')
175
+
176
+ [personAssociation.multi_person]
177
+ reconstruction_error_threshold = 0.1 # 0.1 = 10 cm
178
+ min_affinity = 0.2 # affinity below which a correspondence is ignored
179
+
180
+
181
+ [triangulation]
182
+ reproj_error_threshold_triangulation = 15 # px
183
+ likelihood_threshold_triangulation= 0.3
184
+ min_cameras_for_triangulation = 2
185
+ interpolation = 'linear' #linear, slinear, quadratic, cubic, or none
186
+ # 'none' if you don't want to interpolate missing points
187
+ interp_if_gap_smaller_than = 10 # do not interpolate bigger gaps
188
+ fill_large_gaps_with = 'last_value' # 'last_value', 'nan', or 'zeros'
189
+ show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
190
+ handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower
191
+ undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low
192
+ make_c3d = true # save triangulated data in c3d format in addition to trc
193
+
194
+
195
+ [filtering]
196
+ type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
197
+ display_figures = false # true or false (lowercase)
198
+ make_c3d = true # also save triangulated data in c3d format
199
+
200
+ [filtering.butterworth]
201
+ order = 4
202
+ cut_off_frequency = 6 # Hz
203
+ [filtering.kalman]
204
+ # How much more do you trust triangulation results (measurements), than previous data (process assuming constant acceleration)?
205
+ trust_ratio = 100 # = measurement_trust/process_trust ~= process_noise/measurement_noise
206
+ smooth = true # should be true, unless you need real-time filtering
207
+ [filtering.butterworth_on_speed]
208
+ order = 4
209
+ cut_off_frequency = 10 # Hz
210
+ [filtering.gaussian]
211
+ sigma_kernel = 2 #px
212
+ [filtering.LOESS]
213
+ nb_values_used = 30 # = fraction of data used * nb frames
214
+ [filtering.median]
215
+ kernel_size = 9
216
+
217
+
218
+ [markerAugmentation]
219
+ ## Requires the following markers: ["Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
220
+ ## "RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
221
+ ## "RBigToe", "LBigToe", "RElbow", "LElbow", "RWrist", "LWrist"]
222
+ feet_on_floor = true # true or false (lowercase) # If true, markers will be translated so that the feet are on the floor (assuming that the floor is flat). Useful if you want to estimate ground reaction forces or joint loads.
223
+ make_c3d = true # save triangulated data in c3d format in addition to trc
224
+
225
+
226
+ [kinematics]
227
+ use_augmentation = true # true or false (lowercase) # Set to true if you want to use the model with augmented markers
228
+ use_contacts_muscles = true # true or false (lowercase) # If true, contact spheres and muscles are added to the model
229
+ right_left_symmetry = true # true or false (lowercase) # Set to false only if you have good reasons to think the participant is not symmetrical (e.g. prosthetic limb)
230
+
231
+ default_height = 1.7 # meters # If automatic height calculation did not work, this value is used to scale the model
232
+ remove_individual_scaling_setup = true # true or false (lowercase) # If true, the individual scaling setup files are removed to avoid cluttering
233
+ remove_individual_ik_setup = true # true or false (lowercase) # If true, the individual IK setup files are removed to avoid cluttering
234
+
235
+ fastest_frames_to_remove_percent = 0.1 # Frames with high speed are considered as outliers
236
+ close_to_zero_speed_m = 0.1 # Sum for all keypoints: about 0.1 m/frame
237
+ large_hip_knee_angles = 45 # Hip and knee angles below this value are considered as imprecise
238
+ trimmed_extrema_percent = 0.25 # Proportion of the most extreme segment values to remove before calculating their mean)
239
+
240
+
241
+ [logging]
242
+ use_custom_logging = false # if integrated in an API that already has logging
243
+
244
+
245
+
246
+ # CUSTOM skeleton
247
+ # If you use a model with different keypoints and/or different ordering
248
+ # Useful if you trained your own model, from DeepLabCut or MMPose for example.
249
+ # Make sure the ids are set in the right order and start from zero.
250
+ #
251
+ # If you want to perform inverse kinematics, you will also need to create an OpenSim model
252
+ # and add to its markerset the location where you expect the triangulated keypoints to be detected.
253
+ #
254
+ # In this example, CUSTOM reproduces the HALPE_26 skeleton (default skeletons are stored in skeletons.py).
255
+ # You can create as many custom skeletons as you want, just add them further down and rename them.
256
+ #
257
+ # Check your model hierarchy with:
258
+ # from anytree import Node, RenderTree
259
+ # for pre, _, node in RenderTree(model):
260
+ # print(f'{pre}{node.name} id={node.id}')[pose.CUSTOM]
261
+ name = "Hip"
262
+ id = 19
263
+ [[pose.CUSTOM.children]]
264
+ name = "RHip"
265
+ id = 12
266
+ [[pose.CUSTOM.children.children]]
267
+ name = "RKnee"
268
+ id = 14
269
+ [[pose.CUSTOM.children.children.children]]
270
+ name = "RAnkle"
271
+ id = 16
272
+ [[pose.CUSTOM.children.children.children.children]]
273
+ name = "RBigToe"
274
+ id = 21
275
+ [[pose.CUSTOM.children.children.children.children.children]]
276
+ name = "RSmallToe"
277
+ id = 23
278
+ [[pose.CUSTOM.children.children.children.children]]
279
+ name = "RHeel"
280
+ id = 25
281
+ [[pose.CUSTOM.children]]
282
+ name = "LHip"
283
+ id = 11
284
+ [[pose.CUSTOM.children.children]]
285
+ name = "LKnee"
286
+ id = 13
287
+ [[pose.CUSTOM.children.children.children]]
288
+ name = "LAnkle"
289
+ id = 15
290
+ [[pose.CUSTOM.children.children.children.children]]
291
+ name = "LBigToe"
292
+ id = 20
293
+ [[pose.CUSTOM.children.children.children.children.children]]
294
+ name = "LSmallToe"
295
+ id = 22
296
+ [[pose.CUSTOM.children.children.children.children]]
297
+ name = "LHeel"
298
+ id = 24
299
+ [[pose.CUSTOM.children]]
300
+ name = "Neck"
301
+ id = 18
302
+ [[pose.CUSTOM.children.children]]
303
+ name = "Head"
304
+ id = 17
305
+ [[pose.CUSTOM.children.children.children]]
306
+ name = "Nose"
307
+ id = 0
308
+ [[pose.CUSTOM.children.children]]
309
+ name = "RShoulder"
310
+ id = 6
311
+ [[pose.CUSTOM.children.children.children]]
312
+ name = "RElbow"
313
+ id = 8
314
+ [[pose.CUSTOM.children.children.children.children]]
315
+ name = "RWrist"
316
+ id = 10
317
+ [[pose.CUSTOM.children.children]]
318
+ name = "LShoulder"
319
+ id = 5
320
+ [[pose.CUSTOM.children.children.children]]
321
+ name = "LElbow"
322
+ id = 7
323
+ [[pose.CUSTOM.children.children.children.children]]
324
+ name = "LWrist"
325
+ id = 9
@@ -0,0 +1,326 @@
1
+ # ###############################################################################
2
+ # ## PROJECT PARAMETERS ##
3
+ # ###############################################################################
4
+
5
+
6
+ # # Configure your project parameters here.
7
+ # #
8
+ # # IMPORTANT:
9
+ # # If a parameter is not found here, Pose2Sim will look for its value in the
10
+ # # Config.toml file of the level above. This way, you can set global batch
11
+ # # instructions and alter them for specific trials.
12
+ # #
13
+ # # If you wish to overwrite a parameter for a specific trial, edit
14
+ # # its Config.toml file by uncommenting its key (e.g., [project])
15
+ # # and editing its value (e.g., frame_range = [10,300]). Also try
16
+ # # uncommenting [filtering.butterworth] and set cut_off_frequency = 10, etc.
17
+
18
+
19
+
20
+ # [project]
21
+ # multi_person = false # true for trials with multiple participants. If false, only the person with lowest reprojection error is analyzed.
22
+ # participant_height = 'auto' # 'auto', float (eg 1.72), or list of floats (eg [1.72, 1.40]) # meters # Only used for marker augmentation
23
+ # participant_mass = 70.0 # float (eg 70.0), or list of floats (eg [70.0, 63.5]) # kg # Only used for marker augmentation and scaling, no impact on results unless you need to further compute forces rather than only kinematics
24
+
25
+ # frame_rate = 'auto' # fps # int or 'auto'. If 'auto', finds from video (or defaults to 60 fps if you work with images)
26
+ # frame_range = [] # For example [10,300], or [] for all frames.
27
+ # ## If cameras are not synchronized, designates the frame range of the camera with the shortest recording time
28
+ # ## N.B.: If you want a time range instead, use frame_range = time_range * frame_rate
29
+ # ## For example if you want to analyze from 0.1 to 2 seconds with a 60 fps frame rate,
30
+ # ## frame_range = [0.1, 2.0]*frame_rate = [6, 120]
31
+
32
+ # exclude_from_batch = [] # List of trials to be excluded from batch analysis, ['<participant_dir/trial_dir>', 'etc'].
33
+ # # e.g. ['S00_P00_Participant/S00_P00_T00_StaticTrial', 'S00_P00_Participant/S00_P00_T01_BalancingTrial']
34
+
35
+
36
+ # [pose]
37
+ # vid_img_extension = 'mp4' # any video or image extension
38
+
39
+ # pose_model = 'Body_with_feet' #With RTMLib:
40
+ # # - Body_with_feet (default HALPE_26 model),
41
+ # # - Whole_body_wrist (COCO_133_WRIST: body + feet + 2 hand_points),
42
+ # # - Whole_body (COCO_133: body + feet + hands),
43
+ # # - Body (COCO_17). Marker augmentation won't work, Kinematic analysis will work,
44
+ # # - Hand (HAND_21, only lightweight mode. Potentially better results with Whole_body),
45
+ # # - Face (FACE_106),
46
+ # # - Animal (ANIMAL2D_17)
47
+ # # /!\ Only RTMPose is natively embeded in Pose2Sim. For all other pose estimation methods, you will have to run them yourself, and then refer to the documentation to convert the output files if needed
48
+ # # /!\ For Face and Animal, use mode="""{dictionary}""", and find the corresponding .onnx model there https://github.com/open-mmlab/mmpose/tree/main/projects/rtmpose
49
+
50
+ # #With MMPose: HALPE_26, COCO_133, COCO_17, CUSTOM. See CUSTOM example at the end of the file
51
+ # #With openpose: BODY_25B, BODY_25, BODY_135, COCO, MPII
52
+ # #With mediapipe: BLAZEPOSE
53
+ # #With alphapose: HALPE_26, HALPE_68, HALPE_136, COCO_133
54
+ # #With deeplabcut: CUSTOM. See example at the end of the file
55
+
56
+ # mode = 'balanced' # 'lightweight', 'balanced', 'performance',
57
+ # # or """{dictionary}""" (see below)
58
+ # # A dictionary (WITHIN THREE DOUBLE QUOTES) allows you to manually select the person detection (if top_down approach) and/or pose estimation models (see https://github.com/Tau-J/rtmlib).
59
+ # # Models can be local paths or URLs.
60
+ # # Make sure the input_sizes are within square brackets, and that they are in the opposite order from the one in the model path (for example, it would be [192,256] for rtmpose-m_simcc-body7_pt-body7-halpe26_700e-256x192-4d3e73dd_20230605.zip).
61
+ # # If your pose_model is not provided in skeletons.py, you may have to create your own one (see example at the end of the file).
62
+ # # Example, equivalent to mode='balanced':
63
+ # # mode = """{'det_class':'YOLOX',
64
+ # # 'det_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/yolox_m_8xb8-300e_humanart-c2c7a14a.zip',
65
+ # # 'det_input_size':[640, 640],
66
+ # # 'pose_class':'RTMPose',
67
+ # # 'pose_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/rtmpose-m_simcc-body7_pt-body7-halpe26_700e-256x192-4d3e73dd_20230605.zip',
68
+ # # 'pose_input_size':[192,256]}"""
69
+ # # Example with one-stage RTMO model (Requires pose_model = 'Body'):
70
+ # # mode = """{'pose_class':'RTMO',
71
+ # # 'pose_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmo/onnx_sdk/rtmo-m_16xb16-600e_body7-640x640-39e78cc4_20231211.zip',
72
+ # # 'pose_input_size':[640, 640]}"""
73
+ # # Example with animal pose estimation:
74
+ # # mode = """{'pose_class':'RTMPose',
75
+ # # 'pose_model':'https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/onnx_sdk/rtmpose-m_simcc-ap10k_pt-aic-coco_210e-256x256-7a041aa1_20230206.zip',
76
+ # # 'pose_input_size':[256,256]}"""
77
+
78
+ # det_frequency = 100 # Run person detection only every N frames, and inbetween track previously detected bounding boxes (keypoint detection is still run on all frames).
79
+ # # Equal to or greater than 1, can be as high as you want in simple uncrowded cases. Much faster, but might be less accurate.
80
+ # device = 'auto' # 'auto', 'CPU', 'CUDA', 'MPS', 'ROCM'
81
+ # backend = 'auto' # 'auto', 'openvino', 'onnxruntime', 'opencv'
82
+
83
+ # tracking_mode = 'sports2d' # 'sports2d' or 'deepsort'. 'deepsort' is slower but more robust in difficult configurations
84
+ # deepsort_params = """{'max_age':30, 'n_init':3, 'nms_max_overlap':0.8, 'max_cosine_distance':0.3, 'nn_budget':200, 'max_iou_distance':0.8}""" # """{dictionary between 3 double quotes}"""
85
+ # # More robust in crowded scenes but Can be tricky to parametrize. More information there: https://github.com/levan92/deep_sort_realtime/blob/master/deep_sort_realtime/deepsort_tracker.py#L51
86
+ # # Note: For faster and more robust tracking, use {'embedder_gpu': True, embedder':'torchreid'}, which uses the GPU and runs osnet_ain_x1_0 by default. requires `pip install torch torchvision torchreid gdown tensorboard`
87
+
88
+ # display_detection = true
89
+ # overwrite_pose = false # set to false if you don't want to recalculate pose estimation when it has already been done
90
+ # save_video = 'to_video' # 'to_video' or 'to_images', 'none', or ['to_video', 'to_images']
91
+ # output_format = 'openpose' # 'openpose', 'mmpose', 'deeplabcut', 'none' or a list of them # /!\ only 'openpose' is supported for now
92
+
93
+
94
+ # [synchronization]
95
+ # synchronization_gui = false # true or false. If true, a player will popup and let the user determine synchronization parameters. If false, it will be done automatically based on the parameters below
96
+ # display_sync_plots = true # true or false (lowercase)
97
+ # keypoints_to_consider = 'all' # 'all' if all points should be considered, for example if the participant did not perform any particicular sharp movement. In this case, the capture needs to be 5-10 seconds long at least
98
+ # # ['RWrist', 'RElbow'] list of keypoint names if you want to specify keypoints with a sharp vertical motion.
99
+ # approx_time_maxspeed = 'auto' # 'auto' if you want to consider the whole capture (default, slower if long sequences)
100
+ # # [10.0, 2.0, 8.0, 11.0] list of times (seconds) if you want to specify the approximate time of a clear vertical event for each camera
101
+ # time_range_around_maxspeed = 2.0 # Search for best correlation in the range [approx_time_maxspeed - time_range_around_maxspeed, approx_time_maxspeed + time_range_around_maxspeed]
102
+ # likelihood_threshold = 0.4 # Keypoints whose likelihood is below likelihood_threshold are filtered out
103
+ # filter_cutoff = 6 # time series are smoothed to get coherent time-lagged correlation
104
+ # filter_order = 4
105
+
106
+
107
+ # # Take heart, calibration is not that complicated once you get the hang of it!
108
+ # [calibration]
109
+ # calibration_type = 'convert' # 'convert' or 'calculate'
110
+
111
+ # [calibration.convert]
112
+ # convert_from = 'qualisys' # 'caliscope', 'qualisys', 'optitrack', vicon', 'opencap', 'easymocap', 'biocv', 'anipose', or 'freemocap'
113
+ # [calibration.convert.caliscope] # No parameter needed
114
+ # [calibration.convert.qualisys]
115
+ # binning_factor = 1 # Usually 1, except when filming in 540p where it usually is 2
116
+ # [calibration.convert.optitrack] # See readme for instructions
117
+ # [calibration.convert.vicon] # No parameter needed
118
+ # [calibration.convert.opencap] # No parameter needed
119
+ # [calibration.convert.easymocap] # No parameter needed
120
+ # [calibration.convert.biocv] # No parameter needed
121
+ # [calibration.convert.anipose] # No parameter needed
122
+ # [calibration.convert.freemocap] # No parameter needed
123
+
124
+
125
+ # [calibration.calculate]
126
+ # # Camera properties, theoretically need to be calculated only once in a camera lifetime
127
+ # [calibration.calculate.intrinsics]
128
+ # overwrite_intrinsics = false # set to false if you don't want to recalculate intrinsic parameters
129
+ # show_detection_intrinsics = true # true or false (lowercase)
130
+ # intrinsics_extension = 'jpg' # any video or image extension
131
+ # extract_every_N_sec = 1 # if video, extract frames every N seconds (can be <1 )
132
+ # intrinsics_corners_nb = [4,7]
133
+ # intrinsics_square_size = 60 # mm
134
+
135
+ # # Camera placements, need to be done before every session
136
+ # [calibration.calculate.extrinsics]
137
+ # calculate_extrinsics = true # true or false (lowercase)
138
+ # extrinsics_method = 'scene' # 'board', 'scene', 'keypoints'
139
+ # # 'board' should be large enough to be detected when laid on the floor. Not recommended.
140
+ # # 'scene' involves manually clicking any point of know coordinates on scene. Usually more accurate if points are spread out.
141
+ # # 'keypoints' uses automatic pose estimation of a person freely walking and waving arms in the scene. Slighlty less accurate, requires synchronized cameras.
142
+ # moving_cameras = false # Not implemented yet
143
+
144
+ # [calibration.calculate.extrinsics.board]
145
+ # show_reprojection_error = true # true or false (lowercase)
146
+ # extrinsics_extension = 'png' # any video or image extension
147
+ # extrinsics_corners_nb = [4,7] # [H,W] rather than [w,h]
148
+ # extrinsics_square_size = 60 # mm # [h,w] if square is actually a rectangle
149
+
150
+ # [calibration.calculate.extrinsics.scene]
151
+ # show_reprojection_error = true # true or false (lowercase)
152
+ # extrinsics_extension = 'png' # any video or image extension
153
+ # # list of 3D coordinates to be manually labelled on images. Can also be a 2 dimensional plane.
154
+ # # in m -> unlike for intrinsics, NOT in mm!
155
+ # object_coords_3d = [[-2.0, 0.3, 0.0],
156
+ # [-2.0 , 0.0, 0.0],
157
+ # [-2.0, 0.0, 0.05],
158
+ # [-2.0, -0.3 , 0.0],
159
+ # [0.0, 0.3, 0.0],
160
+ # [0.0, 0.0, 0.0],
161
+ # [0.0, 0.0, 0.05],
162
+ # [0.0, -0.3, 0.0]]
163
+
164
+ # [calibration.calculate.extrinsics.keypoints]
165
+ # # Coming soon!
166
+
167
+
168
+ # [personAssociation]
169
+ # likelihood_threshold_association = 0.3
170
+
171
+ # [personAssociation.single_person]
172
+ # reproj_error_threshold_association = 20 # px
173
+ # tracked_keypoint = 'Neck' # If the neck is not detected by the pose_model, check skeleton.py
174
+ # # and choose a stable point for tracking the person of interest (e.g., 'right_shoulder' or 'RShoulder')
175
+
176
+ # [personAssociation.multi_person]
177
+ # reconstruction_error_threshold = 0.1 # 0.1 = 10 cm
178
+ # min_affinity = 0.2 # affinity below which a correspondence is ignored
179
+
180
+
181
+ # [triangulation]
182
+ # reproj_error_threshold_triangulation = 15 # px
183
+ # likelihood_threshold_triangulation= 0.3
184
+ # min_cameras_for_triangulation = 2
185
+ # interpolation = 'linear' #linear, slinear, quadratic, cubic, or none
186
+ # # 'none' if you don't want to interpolate missing points
187
+ # interp_if_gap_smaller_than = 10 # do not interpolate bigger gaps
188
+ # fill_large_gaps_with = 'last_value' # 'last_value', 'nan', or 'zeros'
189
+ # show_interp_indices = true # true or false (lowercase). For each keypoint, return the frames that need to be interpolated
190
+ # handle_LR_swap = false # Better if few cameras (eg less than 4) with risk of limb swapping (eg camera facing sagittal plane), otherwise slightly less accurate and slower
191
+ # undistort_points = false # Better if distorted image (parallel lines curvy on the edge or at least one param > 10^-2), but unnecessary (and slightly slower) if distortions are low
192
+ # make_c3d = true # save triangulated data in c3d format in addition to trc
193
+
194
+
195
+ # [filtering]
196
+ # type = 'butterworth' # butterworth, kalman, gaussian, LOESS, median, butterworth_on_speed
197
+ # display_figures = false # true or false (lowercase)
198
+ # make_c3d = true # also save triangulated data in c3d format
199
+
200
+ # [filtering.butterworth]
201
+ # order = 4
202
+ # cut_off_frequency = 6 # Hz
203
+ # [filtering.kalman]
204
+ # # How much more do you trust triangulation results (measurements), than previous data (process assuming constant acceleration)?
205
+ # trust_ratio = 100 # = measurement_trust/process_trust ~= process_noise/measurement_noise
206
+ # smooth = true # should be true, unless you need real-time filtering
207
+ # [filtering.butterworth_on_speed]
208
+ # order = 4
209
+ # cut_off_frequency = 10 # Hz
210
+ # [filtering.gaussian]
211
+ # sigma_kernel = 2 #px
212
+ # [filtering.LOESS]
213
+ # nb_values_used = 30 # = fraction of data used * nb frames
214
+ # [filtering.median]
215
+ # kernel_size = 9
216
+
217
+
218
+ # [markerAugmentation]
219
+ # ## Requires the following markers: ["Neck", "RShoulder", "LShoulder", "RHip", "LHip", "RKnee", "LKnee",
220
+ # ## "RAnkle", "LAnkle", "RHeel", "LHeel", "RSmallToe", "LSmallToe",
221
+ # ## "RBigToe", "LBigToe", "RElbow", "LElbow", "RWrist", "LWrist"]
222
+ # feet_on_floor = true # true or false (lowercase) # If true, markers will be translated so that the feet are on the floor (assuming that the floor is flat). Useful if you want to estimate ground reaction forces or joint loads.
223
+ # make_c3d = true # save triangulated data in c3d format in addition to trc
224
+
225
+
226
+ # [kinematics]
227
+ # use_augmentation = true # true or false (lowercase) # Set to true if you want to use the model with augmented markers
228
+ # use_contacts_muscles = true # true or false (lowercase) # If true, contact spheres and muscles are added to the model
229
+ # right_left_symmetry = true # true or false (lowercase) # Set to false only if you have good reasons to think the participant is not symmetrical (e.g. prosthetic limb)
230
+
231
+ # default_height = 1.7 # meters # If automatic height calculation did not work, this value is used to scale the model
232
+ # remove_individual_scaling_setup = true # true or false (lowercase) # If true, the individual scaling setup files are removed to avoid cluttering
233
+ # remove_individual_ik_setup = true # true or false (lowercase) # If true, the individual IK setup files are removed to avoid cluttering
234
+
235
+ # fastest_frames_to_remove_percent = 0.1 # Frames with high speed are considered as outliers
236
+ # close_to_zero_speed_m = 0.1 # Sum for all keypoints: about 0.1 m/frame
237
+ # large_hip_knee_angles = 45 # Hip and knee angles below this value are considered as imprecise
238
+ # trimmed_extrema_percent = 0.25 # Proportion of the most extreme segment values to remove before calculating their mean)
239
+
240
+
241
+ # [logging]
242
+ # use_custom_logging = false # if integrated in an API that already has logging
243
+
244
+
245
+
246
+ # # CUSTOM skeleton
247
+ # # If you use a model with different keypoints and/or different ordering
248
+ # # Useful if you trained your own model, from DeepLabCut or MMPose for example.
249
+ # # Make sure the ids are set in the right order and start from zero.
250
+ # #
251
+ # # If you want to perform inverse kinematics, you will also need to create an OpenSim model
252
+ # # and add to its markerset the location where you expect the triangulated keypoints to be detected.
253
+ # #
254
+ # # In this example, CUSTOM reproduces the HALPE_26 skeleton (default skeletons are stored in skeletons.py).
255
+ # # You can create as many custom skeletons as you want, just add them further down and rename them.
256
+ # #
257
+ # # Check your model hierarchy with:
258
+ # # from anytree import Node, RenderTree
259
+ # # for pre, _, node in RenderTree(model):
260
+ # # print(f'{pre}{node.name} id={node.id}')
261
+ # [pose.CUSTOM]
262
+ # name = "Hip"
263
+ # id = 19
264
+ # [[pose.CUSTOM.children]]
265
+ # name = "RHip"
266
+ # id = 12
267
+ # [[pose.CUSTOM.children.children]]
268
+ # name = "RKnee"
269
+ # id = 14
270
+ # [[pose.CUSTOM.children.children.children]]
271
+ # name = "RAnkle"
272
+ # id = 16
273
+ # [[pose.CUSTOM.children.children.children.children]]
274
+ # name = "RBigToe"
275
+ # id = 21
276
+ # [[pose.CUSTOM.children.children.children.children.children]]
277
+ # name = "RSmallToe"
278
+ # id = 23
279
+ # [[pose.CUSTOM.children.children.children.children]]
280
+ # name = "RHeel"
281
+ # id = 25
282
+ # [[pose.CUSTOM.children]]
283
+ # name = "LHip"
284
+ # id = 11
285
+ # [[pose.CUSTOM.children.children]]
286
+ # name = "LKnee"
287
+ # id = 13
288
+ # [[pose.CUSTOM.children.children.children]]
289
+ # name = "LAnkle"
290
+ # id = 15
291
+ # [[pose.CUSTOM.children.children.children.children]]
292
+ # name = "LBigToe"
293
+ # id = 20
294
+ # [[pose.CUSTOM.children.children.children.children.children]]
295
+ # name = "LSmallToe"
296
+ # id = 22
297
+ # [[pose.CUSTOM.children.children.children.children]]
298
+ # name = "LHeel"
299
+ # id = 24
300
+ # [[pose.CUSTOM.children]]
301
+ # name = "Neck"
302
+ # id = 18
303
+ # [[pose.CUSTOM.children.children]]
304
+ # name = "Head"
305
+ # id = 17
306
+ # [[pose.CUSTOM.children.children.children]]
307
+ # name = "Nose"
308
+ # id = 0
309
+ # [[pose.CUSTOM.children.children]]
310
+ # name = "RShoulder"
311
+ # id = 6
312
+ # [[pose.CUSTOM.children.children.children]]
313
+ # name = "RElbow"
314
+ # id = 8
315
+ # [[pose.CUSTOM.children.children.children.children]]
316
+ # name = "RWrist"
317
+ # id = 10
318
+ # [[pose.CUSTOM.children.children]]
319
+ # name = "LShoulder"
320
+ # id = 5
321
+ # [[pose.CUSTOM.children.children.children]]
322
+ # name = "LElbow"
323
+ # id = 7
324
+ # [[pose.CUSTOM.children.children.children.children]]
325
+ # name = "LWrist"
326
+ # id = 9