- yolov8を使用したトラッキングによりBounding BoxとIDを取得済み
- MOTのフォーマットで記録
<frame>, <id>, <bb_left>, <bb_top>, <bb_width>, <bb_height>, <conf>, <x>, <y>, <z>, <class>
0, 1, 759.8, 386.7, 31.7, 29.9, 1, -1, -1, -1, player
0, 2, 1848.4, 637.5, 31.0, 31.7, 1, -1, -1, -1, player
0, 3, 1044.8, 550.9, 26.2, 27.0, 1, -1, -1, -1, player
0, 4, 811.3, 514.3, 33.0, 31.7, 1, -1, -1, -1, player
0, 5, 1703.1, 570.8, 28.3, 27.8, 1, -1, -1, -1, player
- 検出の途切れによりトラッキングIDが同一のオブジェクトに複数ついている状態
- 一つのオブジェクトに一つのIDが対応した状態にしたい
- 動画を見て統合するIDを記録し、PythonのプログラムでIDを統合する
Bounding BoxとIDの可視化
- 動画上にBounding BoxとIDを表示する(draw_bboxes_on_video.pyを使用)
python draw_bboxes_on_video.py <path_to_mot_file> <path_to_input_video> <path_to_output_video>
IDの変更
- 動画を目視で確認し、PythonのプログラムでIDを変更(change_id.pyを使用)
- old_idsには15,17,18のようにコンマ区切りのIDを指定
- new_idには整数を指定
- old_idsに指定したIDがすべてnew_idに指定したIDに変更される
python change_id.py --folder_path <folder_path> --output_folder_path <output_folder_path> <file_name> <old_ids> <new_id>
- output_folder_pathに指定したパスのディレクトリ下に<input_file_name>_val**.txtという名前のファイルがファイルを実行するごとに作成される(**は数字)
IDの統合
- 変更を統合する(integrate_id.pyを使用)
- <input_file_name>_val**.txtの変更をすべて統合する
- ここで複数の選手にまたがってついたIDは削除される
python integrate_id.py --folder_path <folder_path> --changed_folder_path <changed_folder_path> --file_name <file_name> --output_folder_path <output_folder_path>
Datasetsの作成
-
Catalog内の「+ New」を選択し、データセットの名前を決める
-
動画をアップロード
💡 Unprocessable Contentというエラーが出る場合は以下のコマンドを使用すると良いffmpeg -i <input.mp4> -vcodec libx264 -acodec aac <output.mp4>
Projectの作成
- Annotate内の「+ New project」を選択し、タスクの種類と名前を指定
- Project内のOverviewから「Add data」を選択
- 追加するデータを選択し、右上の「Queue batch of ~」を選択
- 「Submit」を選択
- オントロジーを選択 or 作成
アノテーション
-
Data Rowsからエクスポートするデータを選択
-
「selected」タブから「Export data v2」を選択
-
必要なデータを選択
-
「Export JSON」を選択
-
左下Notificationsからデータをダウンロードする
- Labelboxのアノテーションを反映させる(labelbox_ndjson_to_mot.pyを使用)
- MOTフォーマットのファイルをアップデート
python labelbox_ndjson_to_mot.py <ndjson_file> <txt_file>