mocap-desktop-gui 0.2.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
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/"