ここでは初心者でもDeepLabCutが使えるような操作説明を記述しています。
DeepLabCut、Anacondaがインストールされているのを前提に紹介しています
DeepLabCut、Anacondaのインストール方法はこちら
参考記事はこちら←(一部メニューが変更になっていたり、コツがあったので、備忘録として以下に手順を記載します)
DeepLabCutを起動する前に
サンプルデータをダウンロード
説明に利用するサンプルデータをGitHubよりダウンロードしておきます
-
ZIPファイルを展開します。
右クリックして「すべて展開」を選択
展開する場所は好きなところで結構です。(今回はc:¥User¥ユーザー名 の中にしました・・ユーザー名はあなたのPCの名前です)
展開されたか確認してください
仮想環境に入る
DeepLabCutを起動するために仮想環境にはいります
Anaconda promptを起動します
DeepLabCutの起動
DeepLabCutの使い方
ここから本題です
Manage Project
プロジェクトを新規作成します
-
「Create new project」を選択
プロジェクト名を入力 (今回はtest)
実験者を入力 (今回はaaa)
解析するデータを「Load Videos」 をクリックして選択
(ダウンロードしたサンプルデータを選択)
C:¥ユーザー¥ユーザー名¥DeepLabCut-master¥examples¥openfield-Pranav-2018-10-30/videos
フォルダ内のm3v1mp4.mp4
ファイル
新プロジェクトのconfig.yamlファイルが作成されます。
新プロジェクトの一連ファイルは
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付
のフォルダ内に保存されます
(例) プロジェクト名:test 実験者名:aaa 日付:2022/5/26 の場合
config.yamlファイルの編集
config.yamlファイルを編集すると追跡ポイント数や名称を変更できます
開かないときはメモ帳などを起動し、ファイルを開きます。ファイルの場所は
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥config.yaml
- 自作のデータの場合は自分が追跡したいポイントのリストを記述します
※config.yamlファイルを変更した時は、一旦リセットボタンをクリックしてリセットし、[Load existing project」を選択し、「Select the config file」の「Browse」から、修正したプロジェクトの.yamlファイルを選びます。
これをやらないとなぜか、後半のanalyzeがうまく表示されませんでした。
「OK」をクリックしてプロジェクトを呼び出します
- 以前のプロジェクトの続きをしたい場合も[Load existing project」を選択し、「Select the config file」から、再開したいプロジェクトの.yamlファイルを選びます。
Extract Frames
動画からtraining datasetを作るために、動画から複数のフレーム(画像)を抽出します。今後、抽出したフレームに映る対象物の特定の部分(鼻、耳、尻尾など)をラベルして正解画像として使うためです。
- 「Choose the extraction method」は、フレームの抽出を自動・手動どちらを選択
- 「Want to crop the frames?」は、動画の全領域を使うのではなく、中央部分、右側といった特定の領域だけを切り取って使うかを選択
- 「Need user feedback?」は、抽出後、追加したいフレームがある場合はyes
- 「Want to use openCV?」は、動画の編集にopenCVやmoviepyを使用するかを選択
Label Data
抽出したフレームにラベルをしていきます。
-
「Label Frames」ボタンをクリックすると Labeling ToolBoxが表示されますので「Load frames」ボタンをクリック
前のステップで抽出したフレームが1つのフォルダに集められています。フォルダの場所は以下です
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥labeled-data¥m3v1mp4
すると、Labeling ToolBoxに抽出されたフレームがLoadされます
- ラベルをつけます。
Manage Projectのステップでconfig.yamlファイルを編集した場合、「Select a bodypart to label」のところに編集したパーツ(nose, leftear, rightear, tailbase)の文字が表示されます。
画像が小さい場合は、ウインドウ下の「Zoom」ボタンを押してマウスを囲えば、マウスが拡大されます
noseを選択して、画像のマウスの鼻のところを右クリックするとその場所がマーキングされます。
* マーカーの大きさ調節・・・「Adjust marker size.」をチェックし、スライダーを動かす
* マーカーの移動・・・マーカーを左クリックでドラッグ
* 次のフレーム・・・Nextボタン
* マーカーの削除・・・削除したいマーカーを選択しbackspaceキー
6. 他の部位(leftear, rightear, tailbase)も同じ要領でマーキングします。画像に部位が写っていない場合はマークしなくて構いません。
抽出したすべてのフレーム(今回は19枚)でおこないます。
7. 完了したら「Save」ボタンをクリックします
labeled-dataフォルダにCSVファイルが作成されます。
8. 「Quit」ボタンをクリックして終了します。
「Do you want to label another data set?」のメッセージが表示されますが、Noを選択します。
Create Training Dataset
作成したラベルデータを使ってtraining datasetを作成します。
- 「Select the network」は使用するNeural Network
- 「Select the augmentation method」は画像拡張(augmentation)のアルゴリズムを選択します。
※画像拡張とは、学習時にモデルの汎化性能向上や推論精度の底上げを目的に、ラベル画像に対して様々な変換を掛けて画像を増やすことです。。その他のオプションは複数のモデルを比較するためのものです。
ターミナルに「The training dataset is successfully created」と表示されるまで待ちます。
Train
ラベルした画像を何度も反復して学習をおこないます
- 「Display iterations」は反復する間隔
- 「Save iterations」は保存する間隔
- 「Maximum iterations」は反復回数
今回は100 1000 50000と指定します。
「OK」をクリックすると学習がスタートします。
Evaluate
トレーニングを評価します。
評価された結果(画像ファイル)は
c:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥evalution rezults¥iteration-0¥test1May26-trainset95shuffle1¥LabeledImages_DLC_resnet50_test1May26shuffle1_5000_snapshot-5000
フォルダに保存
Analyze videos
学習させたモデルを使って動画を解析する
-
「Choose the videos」で解析(推測)する動画を指定します。
今回はC:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos/m3v1mp4.mp4
- 「Specify the videotype」、「Specify the shuffle」はデフォルトのままでOK。
- 「Want to save result(s) as csv」は、ラベル位置のXY座標をCSV形式で出力できます。
- 「Want to filter the predictions?」は、ラベル部位の推定に前後のフレームの情報も使用できます
(前後のフレームの情報も考慮すると推定の精度が上昇するときがあります。) - 「Create labeled video(s)?」は、推測したラベル部位を動画として出力します
- 「Include the skeleton in the video」は、でラベル部位を直線で結んだ体の骨格ラインを動画に表示します。
- 「Want to plot the trajectories?」は、ラベル部位の軌跡を図として出力します
「Want to plot the trajectories?」がデフォルトでyesになっていますが、
一度Noをクリックし、再度Yesをクリックしてbodypartsの種類を表示してください。
これをやらないと、軌跡が表示されません!!
3. 「Analyze Videos」ボタンをクリックすると、いくつかグラフが作成されます。
作成されたファイルは以下に保存されます
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos¥plot-poses¥m3v1mp4¥
Create videos
作成したラベルを使って動画を作成します。
-
「Choose the videos」で動画を指定します。
今回はC:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos¥m3v1mp4.mp4
-
今回はデフォルトのままで「RUN」ボタンをクリックします
作成された動画は
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos¥
の中にあります。
解析した動画をみてラベルが正確にできていれば精度の高い結果になっていますが、
そうではない場合、修正して再度解析してみてください。
また、オプション指定でさらに精度を上げることもできます。
詳細はこちらの Extract outlier frames を参考