mocap-desktop-gui 0.2.1__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 (46) hide show
  1. mocap_desktop_gui/__init__.py +18 -0
  2. mocap_desktop_gui/axengine_1726054966_187673042.py +246 -0
  3. mocap_desktop_gui/gen/rc_icons.py +18 -0
  4. mocap_desktop_gui/gen/rc_qml.py +18 -0
  5. mocap_desktop_gui/gen/rc_style.py +18 -0
  6. mocap_desktop_gui/main.py +18 -0
  7. mocap_desktop_gui/mc/__init__.py +18 -0
  8. mocap_desktop_gui/mc/bld_fbx_2_glb.py +18 -0
  9. mocap_desktop_gui/mc/camera_models.py +18 -0
  10. mocap_desktop_gui/mc/mc_app_manager.py +18 -0
  11. mocap_desktop_gui/mc/mc_calib.py +18 -0
  12. mocap_desktop_gui/mc/mc_cam_ui_states.py +18 -0
  13. mocap_desktop_gui/mc/mc_common_paths.py +18 -0
  14. mocap_desktop_gui/mc/mc_context.py +18 -0
  15. mocap_desktop_gui/mc/mc_project.py +18 -0
  16. mocap_desktop_gui/mc/mc_project_manager.py +18 -0
  17. mocap_desktop_gui/mc/mc_sync_media_player.py +18 -0
  18. mocap_desktop_gui/mc/mc_sync_video_decoder_service.py +18 -0
  19. mocap_desktop_gui/mc/mc_sync_video_paint_item.py +18 -0
  20. mocap_desktop_gui/mc/mc_take.py +18 -0
  21. mocap_desktop_gui/mc/mc_take_list_model.py +18 -0
  22. mocap_desktop_gui/mc/mc_take_run.py +18 -0
  23. mocap_desktop_gui/mc/mc_take_run_data_prep.py +18 -0
  24. mocap_desktop_gui/mc/mc_take_run_settings.py +18 -0
  25. mocap_desktop_gui/mc/mc_take_runs_manager.py +18 -0
  26. mocap_desktop_gui/mc/mc_take_settings.py +18 -0
  27. mocap_desktop_gui/mc/mc_take_video_model.py +18 -0
  28. mocap_desktop_gui/mc/mc_task_trt_engine_gen.py +18 -0
  29. mocap_desktop_gui/mc/qml_engine.py +18 -0
  30. mocap_desktop_gui/mc/rig/Move_Mo.blend +0 -0
  31. mocap_desktop_gui/mc/rig/mapping_body.csv +21 -0
  32. mocap_desktop_gui/mc/rig/mapping_fingers.csv +31 -0
  33. mocap_desktop_gui/mc/rig/sdc_rig.zip +0 -0
  34. mocap_desktop_gui/mc/scene/scene_3d.blend.5a95cd45 +0 -0
  35. mocap_desktop_gui/mc/settings/camera_models.yaml +71 -0
  36. mocap_desktop_gui/mc/settings/settings_action.yaml +530 -0
  37. mocap_desktop_gui/mc/settings/settings_extrinsic.yaml +169 -0
  38. mocap_desktop_gui/mc/util.py +18 -0
  39. mocap_desktop_gui/operations/__init__.py +18 -0
  40. mocap_desktop_gui/sample.py +18 -0
  41. mocap_desktop_gui/settings.ini +3 -0
  42. mocap_desktop_gui/utils/__init__.py +18 -0
  43. mocap_desktop_gui-0.2.1.dist-info/METADATA +36 -0
  44. mocap_desktop_gui-0.2.1.dist-info/RECORD +46 -0
  45. mocap_desktop_gui-0.2.1.dist-info/WHEEL +4 -0
  46. mocap_desktop_gui-0.2.1.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,530 @@
1
+ version: 1.1.0.dev0
2
+ general_cfg:
3
+ foo: 'bar'
4
+
5
+ ops:
6
+ OpsDownloadDataset: false
7
+ OpsInputVideosAudios: true # atm this just validates the videos metadata if is_gopro is true.
8
+ OpsSyncMultiviewVideos: true
9
+ OpsCorrectCalib: false
10
+ # cpp pose and tracking op
11
+ OpsMocap: true
12
+ # ea jersey pose and tracking op (this is an alternative to OpsMocap)
13
+ OpsMdcDetections: false
14
+ OpsJerseyClassify: false
15
+ OpsMdcTracking: false
16
+
17
+ OpsDetectObjects: false
18
+ OpsDetectMarkerObjects: false
19
+ OpsPose3dMultiview: false # runs pose-3d for mdc, mainly useful for 2 camera cases.
20
+ OpsPrepKalmanData: true
21
+ OpsKalman: true
22
+ OpsHand3dPoseOnTracks: false
23
+ OpsFloorPlaneRootAdjustment: false
24
+ OpsMarkerKalmanFilter: false
25
+ OpsMarkersToBlend: false
26
+ OpsBlenderFBXExport: true
27
+ OpsMayaExport: false
28
+
29
+ # OpsFinalizeARun: false # if true. upload results to remote storage, etc.
30
+ #failure_ops: OpsOnFailure
31
+
32
+
33
+ ops_cfg:
34
+ OpsDownloadDataset:
35
+ dataset:
36
+ - in_files: # input video files
37
+ - "s3://testcases.moveai/MDC/case6/videos/cam01.mov"
38
+ - "s3://testcases.moveai/MDC/case6/videos/cam02.mov"
39
+ - "s3://testcases.moveai/MDC/case6/videos/cam03.mov"
40
+ - "s3://testcases.moveai/MDC/case6/videos/cam04.mov"
41
+ - "s3://testcases.moveai/MDC/case6/videos/cam05.mov"
42
+ - "s3://testcases.moveai/MDC/case6/videos/cam06.mov"
43
+ out_path: "~/MOX_projects/videos"
44
+ unzip: false
45
+ - in_files: [ "s3://testcases.moveai/MDC/case6/calib/cam01.pkl", # calib files
46
+ "s3://testcases.moveai/MDC/case6/calib/cam02.pkl",
47
+ "s3://testcases.moveai/MDC/case6/calib/cam03.pkl",
48
+ "s3://testcases.moveai/MDC/case6/calib/cam04.pkl",
49
+ "s3://testcases.moveai/MDC/case6/calib/cam05.pkl",
50
+ "s3://testcases.moveai/MDC/case6/calib/cam06.pkl" ]
51
+ out_path: "~/MOX_projects/calib"
52
+ unzip: false
53
+ - in_files: [ "s3://testcases.moveai/MDC/case1/sdc_rig.zip" ] # rig compressed directory
54
+ out_path: "~/MOX_projects/rig"
55
+ unzip: true
56
+ - in_files: [ "s3://testcases.moveai/MDC/case1/scene/scene_3d.blend" ] # scene file
57
+ out_path: "~/MOX_projects/scene"
58
+ unzip: false
59
+
60
+ OpsInputVideosAudios:
61
+ is_gopro: false
62
+ inputs:
63
+ video_raw_dir: '~/MOX_projects/videos'
64
+ outputs:
65
+ log_dir: '~/MOX_projects/log'
66
+
67
+ OpsSyncMultiviewVideos:
68
+ # auto sync settings
69
+ # set action_ss and action_to if you want to crop a specific time range in input videos.
70
+ # warning: 'ss' and 'to' must be specified on the video whose lag is smallest; otherwise, it could fail
71
+ # for the case when the lag between videos are large.
72
+ # example. action_start_time: '20.15' action_end_time: '30.35' means action stats from the seconds 20.15 to 30.35
73
+ action_start_time: 5 # start time of the action in format seconds.millisecond. ffmpeg -ss
74
+ action_end_time: 20 # end time of the action in the format seconds.millisecond. ffmpeg -to
75
+ search_win: [3.0, 5.0] # clap hand time range, in seconds. If no range is specified then search_win
76
+ # is calculated automatically in the code based on clapping.
77
+ delete_input_videos: false
78
+ inputs:
79
+ video_raw_dir: '~/MOX_projects/videos'
80
+ outputs:
81
+ log_dir: '~/MOX_projects/log'
82
+ video_dir: '~/MOX_projects/videos_processed'
83
+ sync_vis_dir: '~/MOX_projects/sync_vis'
84
+ # Use iphone metadata to sync
85
+ iphone_sync:
86
+ use_host_timecode: false
87
+ use_tentacle: false
88
+ # manual sync settings
89
+ manual_sync:
90
+ active: false # set it to true if you want to run manual sync given delay in timestamp
91
+ # seconds.milliseconds. relative offset. earliest camera should have ss = 0.0
92
+ cams_lag: # ffmpeg -ss
93
+ cam01: 0.0
94
+ #cam02: 0.02
95
+ #cam03: 0.04
96
+ #....
97
+ # all cameras share the same duration and starting time
98
+ base_ss: 0.0 # seconds.milliseconds
99
+ duration: 0.0 # ffmpeg -t seconds.milliseconds. 0.0 means the whole video.
100
+ win_len_samples: 1024
101
+ win_step_sec: 0.001
102
+ use_audio_files: false
103
+ timecode: false
104
+
105
+
106
+ OpsCorrectCalib:
107
+ bump_threshold: 0.01
108
+ inputs:
109
+ calib_pkl_dir: '~/MOX_projects/calib'
110
+ video_dir: '~/MOX_projects/videos_processed'
111
+ outputs:
112
+ calib_quality_dir: '~/MOX_projects/calib_quality'
113
+
114
+ OpsMocap:
115
+ max_actor_number: 1
116
+ enable_vis_debug: true # expensive video debugging
117
+ vis_debug_rate_ms: 1000 # one frame every second
118
+ enable_new_track_vis_debug: true # cheap debugging that output the first frame of a new cross-view match
119
+ max_cpp_running_time_minutes: 2000
120
+ use_actor_profile_if_avail: false
121
+ use_cuda_decoder: true
122
+ use_jersey_id_prediction: false
123
+ MocapCppParams:
124
+ DebugCaptureVolumeVisDir: ""
125
+ DebugLabeledBBoxVisDir: ""
126
+ CudaGraphInference: false
127
+
128
+ YoloModelMaxBs: -1
129
+ YoloModelType: "yolov5m"
130
+ YoloModelFp16: true
131
+
132
+ JerseyModelName: "jersey_model_7"
133
+ DetectJerseyNumber: false
134
+ DetectJerseyFramePeriod: 3
135
+
136
+ PoseModelFp16: true
137
+ UseVerticalPoseAlignment: false
138
+ PoseModelMaxBs: -1
139
+ Single2DPoseModelName: "pose_2D_vit_small_moveai29"
140
+ use_temporal_2D_pose_refinement: false
141
+ Temporal2DPoseModelName: "pose_2D_refine_3"
142
+ UseTemporalRefinementPostProcess: false
143
+ TemporalRefinementPostProcessQueueSize: 4
144
+
145
+ NewTrackRequireHandOverShoulder: false
146
+
147
+ NewTrackCheckInsideCaptureVolume: false
148
+ NewTrackMinCaptureVolumeEdgeDist: 0.0
149
+ NewTrackMinReprojectionError: 0.15
150
+ NewTrackMinMultiviewKeypoints: 2
151
+ NewTrackMinCameraNumbers: 2
152
+ NewTrackMinDistanceFromOthers: 0.25
153
+
154
+ ActorProfileMatchMaxTimestampDifference: 1000
155
+ ActorProfileMatchMinIoU: 0.25
156
+ ActorProfileMatchMinValidObsCount: 1
157
+
158
+ NumMaxPeople: 1
159
+ DebugNumMaxActors: -1
160
+ NumMaxBoundingBoxPerFrameFactor: 4
161
+
162
+ TrackingBBOX_LPF_Parameter: 0.1
163
+ PoseTorsoDir_LPF_Parameter: 0.1
164
+ PoseKpts_LPF_Parameter: 0.1
165
+ BBOXVerticalScalingFactor: 1.0
166
+ BBOXHorizontalScalingFactor: 1.0
167
+
168
+ ExportSpineHeatmap: false
169
+
170
+ Clamp2DBBoxSizeChange: true
171
+ MaxBBSizeChangePercentage: 0.1
172
+
173
+ TrackFilterTopKBest2DPoses: 4
174
+ FilterBadObjectAssociation: false
175
+ FilterBadObjectAssociationTemporalDstFactor: 1.5
176
+ FilterBadObjectAssociationBBoxWidthFactor: 0.4
177
+
178
+ Clamp3DJointLocationChange: true
179
+ Max3DJointLocationChange: 0.5
180
+ Max3DJointLocationMaxAcclerationFactor: 5.0
181
+ ClampJointStateChange: true
182
+ MaxJointStateChange: 0.5
183
+ MaxJointStateMaxAcclerationFactor: 5.0
184
+
185
+ UseKalmanFilter: false
186
+ KalmanLatencyUpdateFrames: 0
187
+ NumKalmanTransitionFrames: 20
188
+ NumFramesBeforeKalmanFilter: 50
189
+
190
+ NumBoneLengthOptimzationFrames: 50
191
+ UseBoneLengthFromTriangulation: true
192
+
193
+ PinoStateUpdateFactor: 0.0
194
+ MaxPoseOptimizeIteration: 10
195
+ MaxBoneOptimizeIteration: 10
196
+ PoseFunctionTolerance: 0.01
197
+ PoseParameterTolerance: 0.01
198
+ PoseSolverHeightNormalization: true
199
+ BoneLengthFunctionTolerance: 0.01
200
+ BoneLengthParameterTolerance: 0.01
201
+ NumCeresThreads: 4
202
+
203
+ CalcCircularCaptureAreaFrom2CameraPositions: true
204
+ CalcCaptureAreaFromCameraPositions: true
205
+
206
+ inputs:
207
+ video_dir: '~/MOX_projects/videos_processed'
208
+ calib_pkl_dir: '~/MOX_projects/calib'
209
+ mocap_path: '/usr/local/moveai/bin/mocap-nogui'
210
+ settings_path: '/usr/local/moveai/settings_rt.ini'
211
+ actor_profile_dir: null
212
+ actor_prior_obs_dir: null
213
+ outputs:
214
+ log_dir: '~/MOX_projects/log'
215
+ mocap_result_dir: '~/MOX_projects/mocap_result'
216
+ mocap_new_track_debug_dir: '~/MOX_projects/mocap_new_track_debug'
217
+ mocap_viz_debug_dir: '~/MOX_projects/mocap_viz_debug'
218
+ vis_calib_area_dir: '~/MOX_projects/vis_calib_area'
219
+ prelabelled_bb_dir: '~/MOX_projects/prelabelled_bb'
220
+ pose2d_dir: '~/MOX_projects/pose2d_track'
221
+ calib_yaml_dir: '~/MOX_projects/mocap_calib'
222
+
223
+ OpsPose3dMultiview:
224
+ torch_batch_size: 4
225
+ inputs:
226
+ metrabs_3dpose_ckpt_path: "/usr/local/moveai/models/metrabs/metrabs_eff2l_384px_800k_28ds_pytorch"
227
+ video_dir: "~/MOX_projects/videos_processed"
228
+ calib_pkl_dir: "~/MOX_projects/calib"
229
+ pose2d_dir: "~/MOX_projects/pose2d_track"
230
+ outputs:
231
+ pose3d_dir: "~/MOX_projects/pose_3d"
232
+
233
+
234
+ OpsPrepKalmanData:
235
+ run_type: multiview
236
+ mdc_use_3d_bone_dir_obs: false
237
+ inputs:
238
+ video_path: '~/MOX_projects/videos_processed'
239
+ pose2d_dir: '~/MOX_projects/pose2d_track'
240
+ pose3d_dir: null # '~/MOX_projects/pose_3d'
241
+ calib_pkl_dir: '~/MOX_projects/calib'
242
+ odometry_dir: null
243
+ outputs:
244
+ kalman_dir: '~/MOX_projects/kalman'
245
+ actor_profile_dir: '~/MOX_projects/actor_profile'
246
+ actor_track_mapping_dir: '~/MOX_projects/actor_track_mapping'
247
+
248
+
249
+ OpsKalman:
250
+ run_type: multiview
251
+ kinematic_model_id: 9
252
+ use_3d_bone_dir_obs: false
253
+ use_2d_pose_obs: true
254
+ use_spine_observations: false
255
+ run_second_kalman_pass: true
256
+ run_locomotion_model: true
257
+ use_foot_contact: true
258
+ use_dynamics: false
259
+ sync_mobs_observations: true
260
+ planar_floor_cfg:
261
+ assume_planar_floor: false
262
+ n_frames_blend: 10
263
+ use_outwards_blend: true
264
+ ransac_n_iterations: 10
265
+ ransac_grid_bin_size: 0.1
266
+ ransac_min_bin: 10
267
+ ransac_sample_size: 10
268
+ ransac_max_delta_angle: 5
269
+ ransac_percentage_inliers: 70.0
270
+ ransac_threshold_Z: 0.02
271
+ foot_contact_dist_plane_thresh: 0.05
272
+ force_all_foot_above_single_plane: false
273
+ resample: false
274
+ frame_ranges:
275
+ - 0.0
276
+ - 0.0
277
+ - 0.001
278
+ motion_definitions:
279
+ slowest: 0.25
280
+ slow: 0.5
281
+ normal: 1.0
282
+ fast: 3.5
283
+ fastest: 7.0
284
+ motion_selections:
285
+ - fast
286
+ - slow
287
+ animation_fps: -1.0
288
+ ik_pose3d_error_threshold: 1.5
289
+ inputs:
290
+ pose2d_dir: ~/MOX_projects/pose2d_track
291
+ kalman_dir: ~/MOX_projects/kalman
292
+ outputs:
293
+ kalman_dir: ~/MOX_projects/kalman
294
+
295
+ OpsQualityMetrics:
296
+ visualize_epipolar_line: true
297
+
298
+
299
+ OpsFloorPlaneRootAdjustment:
300
+ enforce_spatial_distribution: true # To spatially distribute the sample points
301
+ grid_size: 1.0 # [m]
302
+ n_pts_in_cell_max: 20 # Max number of points per cell for each sample
303
+ iterations: 2500
304
+ Z_threshold: 0.05 # [m]
305
+ ransac_sample_perc: 0.2
306
+ inputs:
307
+ pose2d_dir: '~/MOX_projects/pose2d_track'
308
+ kalman_dir: '~/MOX_projects/kalman'
309
+
310
+
311
+ OpsMarkersToBlend:
312
+ export_fbx: true
313
+ inputs:
314
+ video_dir: '~/MOX_projects/videos_processed'
315
+ props_assets_dir: 'addon_bld/kalman/props' # relative to root_code_dir
316
+ marker_kalman_dir: '~/MOX_projects/markers_kalman'
317
+ outputs:
318
+ log_dir: '~/MOX_projects/log'
319
+ props_dir: '~/MOX_projects/props_anims'
320
+
321
+
322
+ OpsBlenderFBXExport:
323
+ camera_model: unknown
324
+ export_fbx: true
325
+ rig_to_export: both
326
+ render_viz: true
327
+ resolution_x: 720
328
+ resolution_y: 1280
329
+ resolution_percentage: 100
330
+ ffmpeg_container: MPEG4
331
+ render_engine: EEVEE
332
+ render_fps: 30
333
+ export_fps: null
334
+ urdf_mapping_path: MoveAIKinematics9_Joint_Rotation_Mapping.csv
335
+ import_fingers: false
336
+ export_bvh: false
337
+ export_gltf: false
338
+ export_c3d: false
339
+ export_usd: true
340
+ do_render_overlay: false
341
+ overlay_padding: 30
342
+ overlay_scale: 0.19
343
+ rig_origin: feet
344
+ background_videos_import: true
345
+ background_camera_num: 0
346
+ background_faster_playback: false
347
+ use_namespaces: true
348
+ rest_pose_on_1st_frame: false
349
+ timecode_sync: false
350
+ output_name_video: render
351
+ output_name_3d_assets: main
352
+ inputs:
353
+ calib_pkl_dir: ~/MOX_projects/calib
354
+ kalman_dir: ~/MOX_projects/kalman
355
+ video_dir: ~/MOX_projects/videos_processed
356
+ rig_dir: ~/MOX_projects/rig
357
+ fingers_dir: null
358
+ props_dir: null
359
+ actor_dir: ~/MOX_projects/actor_profile
360
+ jersey_nums_mapping_path: null
361
+ state_paths: {}
362
+ urdf_paths: {}
363
+ user_mapping_body_path: ~/MOX_projects/rig/mapping_body.csv
364
+ user_mapping_fingers_path: ~/MOX_projects/rig/mapping_fingers.csv
365
+ user_rig_blend_path: null
366
+ outputs:
367
+ bone_len_dir: ~/MOX_projects/bone_lens
368
+ blender_dir: ~/MOX_projects/blender
369
+ log_dir: ~/MOX_projects/log
370
+ calib_bld_path: ~/MOX_projects/blender/calib.blend
371
+ is_multiple_tracks: false
372
+
373
+ OpsHand3dPoseOnTracks:
374
+ run_type: "multicam"
375
+ enable_denoising: false
376
+ inputs:
377
+ video_path: '~/MOX_projects/videos_processed'
378
+ smplx_path: '/usr/local/moveai/models/hands/SMPLX_NEUTRAL.pkl'
379
+ model_path: '/usr/local/moveai/models/hands/pose_shape_best.pth'
380
+ pose2d_dir: '~/MOX_projects/pose2d_track'
381
+ pose3d_dir: '~/MOX_projects/kalman'
382
+ calib_pkl_dir: '~/MOX_projects/calib'
383
+ outputs:
384
+ hand_dir: '~/MOX_projects/hands'
385
+
386
+
387
+ OpsDetectObjects:
388
+ # sort all detect bbs using area or score, then pick the first n_max_objects, if it > 0
389
+ n_max_objects: -1 # -1 for taking all object bounding boxes.
390
+ n_max_objects_selection_strategy: "area" # in ["score", "area", "score_area"]
391
+ batch_size: 8
392
+ # for YOLOV5.
393
+ conf_thres: 0.25 # NNS threshold
394
+ iou_thres: 0.45 # NNS threshold
395
+ augment: false # flipping augmentation.
396
+ yolov5_class_ids: [ 32 ]
397
+ yolov5_class_names: [ 'ball' ]
398
+ visualize: true
399
+ inputs:
400
+ video_dir: '~/MOX_projects/videos_processed'
401
+ model_path: '/usr/local/moveai/models/yolo/yolov5x_updated.pt'
402
+ outputs:
403
+ detect_dir: '~/MOX_projects/detect_obj_2d'
404
+ detect_vis_dir: '~/MOX_projects/detect_obj_2d_viz'
405
+
406
+
407
+ OpsDetectMarkerObjects:
408
+ marker_settings: [ { "object": "ball", "n_markers": 1, "n_objects": 1 } ]
409
+ inputs :
410
+ video_dir: '~/MOX_projects/videos_processed'
411
+ detect_dir: '~/MOX_projects/detect_obj_2d'
412
+ outputs:
413
+ detect_semantic_dir: '~/MOX_projects/detect_semantic_obj_2d'
414
+
415
+
416
+ OpsMarkerKalmanFilter:
417
+ marker_settings: [ { "object": "ball", "n_markers": 1, "n_objects": 1 } ]
418
+ inputs:
419
+ detect_semantic_dir: '~/MOX_projects/detect_semantic_obj_2d'
420
+ calib_pkl_dir: '~/MOX_projects/calib'
421
+ outputs:
422
+ marker_kalman_dir: '~/MOX_projects/markers_kalman'
423
+
424
+ OpsOnFailure:
425
+ inputs:
426
+ run_dir: '~/MOX_projects'
427
+ log_dir: '~/MOX_projects/logs'
428
+ output_run_dir: "s3://testcases.moveai/dummy_run/"
429
+
430
+
431
+ OpsMdcDetections:
432
+ max_people: 4 # TODO: no. of people to track
433
+ use_gpu_decoder_if_possible: true
434
+ num_parallel_process: 2
435
+ vitpose_cfg_path: 'ViTPose/configs/wholebody/2d_kpt_sview_rgb_img/topdown_heatmap/coco-wholebody/ViTPose_large_moveai29.py'
436
+
437
+ debug_vis_detection: false
438
+
439
+ use_pose_fp16: true
440
+ use_yolo_fp16: true
441
+
442
+ yolo_imgsz: 1920
443
+ yolo_score_threshold: 0.2
444
+ yolo_nms_threshold: 0.4
445
+
446
+ yolo_num_split_regions: 0
447
+ yolo_crop_top_margin: 0.00
448
+ yolo_split_ver_margin_factor: 0.3
449
+ yolo_split_hor_margin_factor: 0.2
450
+
451
+ inputs:
452
+ video_dir: '~/MOX_projects/videos_processed'
453
+ calib_pkl_dir: '~/MOX_projects/calib'
454
+ vitpose_model_path: '/usr/local/moveai/models/vit/large_coco_finetuned.pth'
455
+ yolo_model_path: "/usr/local/moveai/models/yolo/yolov9e.pt"
456
+ outputs:
457
+ detect_dir: '~/MOX_projects/mdc_detects'
458
+ debug_vis_dir: '~/MOX_projects/mdc_detects_vis'
459
+
460
+
461
+ OpsJerseyClassify:
462
+ use_gpu_decoder_if_possible: true
463
+ num_parallel_process: 2
464
+
465
+ num_jersey_classes: 13
466
+ num_color_classes: 3
467
+
468
+ color_model_input_size: 224
469
+ jersey_model_input_size: 224
470
+
471
+ vis_debug: False
472
+
473
+ inputs:
474
+ video_dir: '~/MOX_projects/videos_processed'
475
+ detect_dir: "~/MOX_projects/mdc_detects"
476
+ jersey_model_path: "/usr/local/moveai/models/jersey/jersey_model_v5.pth"
477
+ team_color_model_path: "/usr/local/moveai/models/jersey/color_model_v8_3_cls_resnet_224.pth"
478
+ outputs:
479
+ jersey_detect_dir: "~/MOX_projects/mdc_detects_jersey"
480
+ jersey_debug_vis_dir: "~/MOX_projects/jersey_debug"
481
+
482
+
483
+ OpsMdcTracking:
484
+ max_people: 4 # TODO THIS IS THE CORRECT NUMBER OF ACTORS IN YOUR TAKE, SET IT ACCORDINGLY
485
+
486
+ run_visualization: False
487
+
488
+ good_object_cri_min_bbox_width: 25
489
+ good_object_cri_min_bbox_height: 50
490
+ good_object_cri_hor_edge_margin: 10
491
+ good_object_cri_ver_edge_margin: 10
492
+ good_object_cri_min_valid_kpt_score: 0.25
493
+ good_object_cri_min_valid_kpt_count_per_pose_percent: 0.5
494
+
495
+ tracking_max_idle_time_ms_to_death: 1000
496
+ estimator_type: 'Estimator3dType.ONE_EURO'
497
+ use_ransac_triangulation: true
498
+ merge_tracks_with_same_jersey_ids: true
499
+
500
+ new_track_min_reproject_error_affinity_score: 0.5
501
+ new_track_min_num_views: 3
502
+ new_track_min_reproject_error_affinity_score_if_two_views: 0.9
503
+ new_track_check_inside_capture_area: True
504
+ new_track_min_dst_to_capture_area_edge: 1.0
505
+ new_track_max_per_frame: 5
506
+
507
+ debug_new_track: False
508
+ debug_cross_view_association: False
509
+ debug_vis_tracking: False
510
+ debug_temporal_track_association: False
511
+ debug_temporal_track_association_per_view: False
512
+ debug_track_id: -1
513
+ debug_load_img_start_frm_idx: -1
514
+ debug_load_img_end_frm_idx: -1
515
+
516
+ inputs:
517
+ video_dir: '~/MOX_projects/videos_processed'
518
+ calib_pkl_dir: '~/MOX_projects/calib'
519
+ jersey_detect_dir: '~/MOX_projects/mdc_detects_jersey'
520
+ outputs:
521
+ debug_vis_dir: '~/MOX_projects/mdc_detects_vis'
522
+ pose2d_dir: '~/MOX_projects/pose2d_track'
523
+ debug_pose2d_tracking_dir: '~/MOX_projects/mdc_detects_tracking'
524
+ track_2_team_jersey_path: "~/MOX_projects/track_2_team_jersey/track_2_team_jersey.json" # optional, can have null value
525
+ debug_track_3d_dir: null # optional, can have null value
526
+ debug_kalman_state_dir: null # optional, can have null value
527
+ debug_cross_view_association_dir: "~/MOX_projects/mdc_tracking_mv_assoc_vis" # optional, can have null value
528
+ debug_temporal_track_association_dir: "~/MOX_projects/mdc_temporal_track_assoc_vis" # optional, can have null value
529
+ debug_temporal_track_association_view_dir: "~/MOX_projects/mdc_temporal_track_assoc_vis_cams" # optional, can have null value
530
+ debug_new_track_dir: "~/MOX_projects/mdc_new_track_vis" # optional, can have null value
@@ -0,0 +1,169 @@
1
+ version: 1.1.0.dev0
2
+ general_cfg:
3
+ webapp_input_args:
4
+ status_sns_arn: ""
5
+ processing_job_guid: ""
6
+ output_metadata:
7
+ user_guid: ""
8
+
9
+ ops:
10
+ OpsInputVideosAudios: true
11
+ OpsSyncMultiviewVideos: true
12
+ OpsTrackingCalib: true
13
+ OpsCalibrate: true
14
+ OpsReportCalib: true
15
+ OpsVisualization: false
16
+ # OpsFinalizeARun: false # if true. upload results to remote storage, etc.
17
+ #failure_ops: [] # list of ops to run in case of failure
18
+
19
+ ops_cfg:
20
+ OpsDownloadDataset:
21
+ dataset:
22
+ - in_files:
23
+ - "s3://testcases.moveai/MDC/case5/videos/cam01.mov"
24
+ - "s3://testcases.moveai/MDC/case5/videos/cam02.mov"
25
+ - "s3://testcases.moveai/MDC/case5/videos/cam03.mov"
26
+ - "s3://testcases.moveai/MDC/case5/videos/cam04.mov"
27
+ - "s3://testcases.moveai/MDC/case5/videos/cam05.mov"
28
+ - "s3://testcases.moveai/MDC/case5/videos/cam06.mov"
29
+ out_path: "~/MOX_projects_calib/videos"
30
+ unzip: false
31
+
32
+ OpsInputVideosAudios:
33
+ is_gopro: false
34
+ inputs:
35
+ video_raw_dir: '~/MOX_projects_calib/videos'
36
+ outputs:
37
+ log_dir: '~/MOX_projects_calib/log'
38
+
39
+ OpsSyncMultiviewVideos:
40
+ # auto sync settings
41
+ # set action_ss and action_to if you want to crop a specific time range in input videos.
42
+ # warning: 'ss' and 'to' must be specified on the video whose lag is smallest; otherwise, it could fail
43
+ # for the case when the lag between videos are large.
44
+ # example. action_start_time: '20.15' action_end_time: '30.35' means action stats from the seconds 20.15 to 30.35
45
+ action_start_time: 5 # start time of the action in format seconds.millisecond. ffmpeg -ss
46
+ action_end_time: 20 # end time of the action in the format seconds.millisecond. ffmpeg -to
47
+ search_win: [3.0, 5.0] # clap hand time range, in seconds. If no range is specified then search_win
48
+ # is calculated automatically in the code based on clapping.
49
+ delete_input_videos: false
50
+ inputs:
51
+ video_raw_dir: '~/MOX_projects_calib/videos'
52
+ outputs:
53
+ log_dir: '~/MOX_projects_calib/log'
54
+ video_dir: '~/MOX_projects_calib/videos_processed'
55
+ sync_vis_dir: '~/MOX_projects_calib/sync_vis'
56
+ # Use iphone metadata to sync
57
+ iphone_sync:
58
+ use_host_timecode: false
59
+ use_tentacle: false
60
+ # manual sync settings
61
+ manual_sync:
62
+ active: false # set it to true if you want to run manual sync given delay in timestamp
63
+ # seconds.milliseconds. relative offset. earliest camera should have ss = 0.0
64
+ cams_lag: # ffmpeg -ss
65
+ cam01: 0.0
66
+ #cam02: 0.02
67
+ #cam03: 0.04
68
+ #....
69
+ # all cameras share the same duration and starting time
70
+ base_ss: 0.0 # seconds.milliseconds
71
+ duration: 0.0 # ffmpeg -t seconds.milliseconds. 0.0 means the whole video.
72
+ win_len_samples: 1024
73
+ win_step_sec: 0.001
74
+ use_audio_files: false
75
+ timecode: false
76
+
77
+ OpsTrackingCalib:
78
+ enable_vis_debug: true # expensive video debugging
79
+ vis_debug_rate_ms: 1000 # one frame every 1000ms
80
+ n_max_people: 1
81
+ capture_area_type: normal
82
+ min_move_factor: 2.0 # the tracklet head width / 0.25*mean_bb_width must be greater than this threshold
83
+ min_head_kps_score: 0.6 # tracklet must have medium score of at least 0.6
84
+ min_object_calib_score: 0.1 # calib object [human] must have confidence score of at least 0.8
85
+ is_background_people_moving: false
86
+ min_hand_over_shoulder_perc: 0.3 # hand over shoulder for at least 25% of track duration
87
+ min_tracklet_duration: 0.25 # seconds
88
+ max_initial_idle_secs: 3 # the first few seconds when the calib person does not move
89
+ use_detection_cpp: true
90
+ use_nonoverlapping_rule: true
91
+ use_cuda_decoder: true
92
+ CalibCppParams:
93
+ NumMaxObjectPerFrame: 16
94
+ YoloModelType: "yolov5m"
95
+ YoloModelFp16: true
96
+ YoloModelMaxBs: -1
97
+
98
+ PoseModelMaxBs: -1
99
+ PoseModelBsFactor: 2
100
+ Single2DPoseModelName: "pose_2D_vit_large_moveai29"
101
+ PoseModelFp16: true
102
+ CudaGraphInference: false
103
+
104
+ UseTracking: true
105
+ DetectionIntervalMs: 2000
106
+ inputs:
107
+ video_dir: '~/MOX_projects_calib/videos_processed'
108
+ mocap_path: '/usr/local/moveai/bin/mocap-calibration'
109
+ settings_path: '/usr/local/moveai/settings_rt.ini'
110
+ outputs:
111
+ pose2d_dir: '~/MOX_projects_calib/pose2d_track'
112
+ calib_detections_dir: '~/MOX_projects_calib/calib_detections'
113
+ log_dir: '~/MOX_projects_calib/log'
114
+ debug_viz_dir: '~/MOX_projects_calib/calib_detect_viz_debug'
115
+
116
+ OpsCalibrate:
117
+ is_intrinsic_k_from_video: false
118
+ subject_height: 1.77
119
+ capture_area_type: normal
120
+ cam_intrinsics: {}
121
+ # if all cameras are the same model, using only a single cam_k
122
+ # if cameras are different, have one line for each camera. The number of lines must be equal to the number of cameras.
123
+ cam_k:
124
+ - [ [ 885.98, 0, 960.04 ], [ 0, 900.27, 533.31 ], [ 0, 0, 1 ] ]
125
+ secs_to_use_scale: [ 0, 1.0 ]
126
+ frames_to_use_calib: [ 0, -1 ]
127
+ frames_to_use_floor: [ [ 0, -1 ] ]
128
+
129
+ recalibrate: true # run calibration again with bad keypoint filtering
130
+ err_threshold: 50 # bad keypoint re-projection threshold, used with recalibration
131
+ use_bundle_adjustment: true
132
+ optimize_plane: false
133
+ max_dist: 0.02
134
+ # just run calibration for keypoints whose confidences above this value.
135
+ min_kps_confidence: 0.8
136
+ # Filter keypoints used for the estimation of scaling factor according to their confidence scores.
137
+ min_confidence_scaling: { 'normal': 0.5, 'large': 0.85 }
138
+ scale_factor_capture_area: 1.15
139
+ inputs:
140
+ pose2d_dir: '~/MOX_projects_calib/pose2d_track'
141
+ video_dir: "~/MOX_projects_calib/videos_processed"
142
+ video_raw_dir: "~/MOX_projects_calib/videos"
143
+ outputs:
144
+ calib_pkl_dir: '~/MOX_projects_calib/calib'
145
+ calib_quality_dir: '~/MOX_projects_calib/calib_quality'
146
+ calib_yaml_dir: '~/MOX_projects_calib/mocap_calib'
147
+
148
+
149
+ OpsReportCalib:
150
+ inputs:
151
+ calib_quality_dir: '~/MOX_projects_calib/calib_quality'
152
+ video_dir: "~/MOX_projects_calib/videos_processed"
153
+ outputs:
154
+ report_pdf_path: '~/MOX_projects_calib/calib_quality/report.pdf'
155
+
156
+
157
+ OpsVisualization:
158
+ inputs:
159
+ pose2d_dir: '~/MOX_projects_calib/pose2d_track'
160
+ video_dir: "~/MOX_projects_calib/videos_processed"
161
+ outputs:
162
+ viz_dir: '~/MOX_projects_calib/calib_vis'
163
+
164
+
165
+ OpsOnFailure:
166
+ inputs:
167
+ run_dir: '~/MOX_projects_calib'
168
+ log_dir: '~/MOX_projects_calib/logs'
169
+ output_run_dir: "s3://testcases.moveai/dummy_run/"