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.
- mocap_desktop_gui/__init__.py +18 -0
- mocap_desktop_gui/axengine_1726054966_187673042.py +246 -0
- mocap_desktop_gui/gen/rc_icons.py +18 -0
- mocap_desktop_gui/gen/rc_qml.py +18 -0
- mocap_desktop_gui/gen/rc_style.py +18 -0
- mocap_desktop_gui/main.py +18 -0
- mocap_desktop_gui/mc/__init__.py +18 -0
- mocap_desktop_gui/mc/bld_fbx_2_glb.py +18 -0
- mocap_desktop_gui/mc/camera_models.py +18 -0
- mocap_desktop_gui/mc/mc_app_manager.py +18 -0
- mocap_desktop_gui/mc/mc_calib.py +18 -0
- mocap_desktop_gui/mc/mc_cam_ui_states.py +18 -0
- mocap_desktop_gui/mc/mc_common_paths.py +18 -0
- mocap_desktop_gui/mc/mc_context.py +18 -0
- mocap_desktop_gui/mc/mc_project.py +18 -0
- mocap_desktop_gui/mc/mc_project_manager.py +18 -0
- mocap_desktop_gui/mc/mc_sync_media_player.py +18 -0
- mocap_desktop_gui/mc/mc_sync_video_decoder_service.py +18 -0
- mocap_desktop_gui/mc/mc_sync_video_paint_item.py +18 -0
- mocap_desktop_gui/mc/mc_take.py +18 -0
- mocap_desktop_gui/mc/mc_take_list_model.py +18 -0
- mocap_desktop_gui/mc/mc_take_run.py +18 -0
- mocap_desktop_gui/mc/mc_take_run_data_prep.py +18 -0
- mocap_desktop_gui/mc/mc_take_run_settings.py +18 -0
- mocap_desktop_gui/mc/mc_take_runs_manager.py +18 -0
- mocap_desktop_gui/mc/mc_take_settings.py +18 -0
- mocap_desktop_gui/mc/mc_take_video_model.py +18 -0
- mocap_desktop_gui/mc/mc_task_trt_engine_gen.py +18 -0
- mocap_desktop_gui/mc/qml_engine.py +18 -0
- mocap_desktop_gui/mc/rig/Move_Mo.blend +0 -0
- mocap_desktop_gui/mc/rig/mapping_body.csv +21 -0
- mocap_desktop_gui/mc/rig/mapping_fingers.csv +31 -0
- mocap_desktop_gui/mc/rig/sdc_rig.zip +0 -0
- mocap_desktop_gui/mc/scene/scene_3d.blend.5a95cd45 +0 -0
- mocap_desktop_gui/mc/settings/camera_models.yaml +71 -0
- mocap_desktop_gui/mc/settings/settings_action.yaml +530 -0
- mocap_desktop_gui/mc/settings/settings_extrinsic.yaml +169 -0
- mocap_desktop_gui/mc/util.py +18 -0
- mocap_desktop_gui/operations/__init__.py +18 -0
- mocap_desktop_gui/sample.py +18 -0
- mocap_desktop_gui/settings.ini +3 -0
- mocap_desktop_gui/utils/__init__.py +18 -0
- mocap_desktop_gui-0.2.1.dist-info/METADATA +36 -0
- mocap_desktop_gui-0.2.1.dist-info/RECORD +46 -0
- mocap_desktop_gui-0.2.1.dist-info/WHEEL +4 -0
- 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/"
|