1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DeepLabCutの使い方(Linux)

Last updated at Posted at 2022-05-25

ここではdeeplabcutがインストールされていることを前提としています。
deeplabcutのLinuxへのインストール方法はこちら
参考記事はこちら←(一部メニューが変更になっていたため、以下の内容で実施しました)

DeepLabCutの起動

ターミナルを起動します

  1. 仮想環境に切り替える
    $ conda activate DEEPLABCUT
  2. Deeplabcutを起動
    (DEEPLABCUT)$ python -m deeplabcut
    img50.png

Manage Project

プロジェクトを新規作成します

  1. Manage Projectタブを選択
    img51.png

  2. 「Create new project」を選択
    プロジェクト名、実験者を入力、解析するデータを「Load Videos」 をクリックして選択
    ※ここではサンプルデータを使用します
    deeplabcutのインストール の続きになります
    Downloads/DeepLabCut/examples/openfield-Pranav-2018-10-30/videosフォルダ内のm3v1mp4.mp4ファイル
    img52.png

  3. 「Copy the videos」 もチェックしOKボタンをクリック
    img53.png

新プロジェクトのconfig.yamlファイルが作成されます。
新プロジェクトの一連ファイルは
/home/(computer-name) /(Name of the Project) - (Name of the experimenter) - (Date)のフォルダ内に保存されます

config.yamlファイルの編集

config.yamlファイルを編集すると追跡ポイント数や名称を変更できます
ファイルの場所
/home/(computer-name) /(Name of the Project) - (Name of the experimenter) - (Date)/config.yaml

  1. config.yamlファイルを開きBodypartsの部分を書き換えてみる
    (例)
    img54.png
  • 自作のデータの場合は自分が追跡したいポイントのリストを記述します
    ※config.yamlファイルを変更した時は、一旦リセットボタンをクリックしてリセットし、[Load existing project」を選択し、「Select the config file」から、修正したプロジェクトの.yamlファイルを選びます。
    これをやらないとなぜか、後半のanalyzeがうまく表示されませんでした。
  • 以前のプロジェクトの続きをしたい場合は[Load existing project」を選択し、「Select the config file」から、再開したいプロジェクトの.yamlファイルを選びます。

Extract Frames

動画からtraining datasetを作るために、動画から複数のフレーム(画像)を抽出します。今後、抽出したフレームに映る対象物の特定の部分(鼻、耳、尻尾など)をラベルして正解画像として使うためです。

  1. Extract Framesタブを選択
    img55.png

  2. オプションを選択し、OKボタンをクリックします(今回はデフォルトのままでOK)

  • 「Choose the extraction method」は、フレームの抽出を自動・手動どちらを選択
  • 「Want to crop the frames?」は、動画の全領域を使うのではなく、中央部分、右側といった特定の領域だけを切り取って使うかを選択
  • 「Need user feedback?」は、抽出後、追加したいフレームがある場合はyes
  • 「Want to use openCV?」は、動画の編集にopenCVやmoviepyを使用するかを選択

Label Data

抽出したフレームにラベルをしていきます。

  1. Label Dataタブを選択
    img56.png

  2. 「Label Frames」ボタンをクリック

  3. Labeling ToolBoxが表示されますので「Load frames」ボタンをクリック
    img57.png
    前のステップで抽出したフレームが1つのフォルダに集められています。フォルダの場所は以下です
    /home/(computer-name) /(Name of the Project) - (Name of the experimenter) - (Date)/labeled-data/m3v1mp4

  4. フォルダを選択してOpenをクリック
    img58.png
    すると、Labeling ToolBoxに抽出されたフレームがLoadされます
    img59.png

  5. ラベルをつけます。
    Manage Projectのステップでconfig.yamlファイルを編集した場合、「Select a bodypart to label」のところに編集したパーツ(nose, leftear, rightear, tailbase)の文字が表示されます。
    画像が小さい場合は、ウインドウ下の「Zoom」ボタンを押してマウスを囲えば、マウスが拡大されます
    img60.png

noseを選択して、画像のマウスの鼻のところを右クリックするとその場所がマーキングされます。
img61.png
 * マーカーの大きさ調節・・・「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を作成します。

  1. Create Training Datasetタブをクリック
    img62.png
  • 「Select the network」は使用するNeural Network
  • 「Select the augmentation method」は画像拡張(augmentation)のアルゴリズムを選択します。
    ※画像拡張とは、学習時にモデルの汎化性能向上や推論精度の底上げを目的に、ラベル画像に対して様々な変換を掛けて画像を増やすことです。。その他のオプションは複数のモデルを比較するためのものです。今回は全てデフォルトのままでおこないます。そのままOkをクリックします。

ターミナルに「The training dataset is successfully created」と表示されるまで待ちます。

Train

ラベルした画像を何度も反復して学習をおこないます

  1. Trainタブをクリック
    img63.png
  • 「Display iterations」は反復する間隔
  • 「Save iterations」は保存する間隔
  • 「Maximum iterations」は反復回数
    今回は100 1000 50000と指定します。
    「OK」をクリックすると学習がスタートします。
    img64.png

学習が終了すると以下の画面が表示されます
img65.png

Evaluate

トレーニングを評価します。

  1. Evaluateタブをクリックします。
    img66.png
  2. 「Want to plot predictions?」をYesに変更します。
    他はデフォルトのままでいいです。
    「RUN:Evaluate Network」をクリックすると評価が始まります
    以下が表示されれば評価終了です。
    img66-1.png

評価された結果は
/home/(computer-name) / (Name of the Project) - (Name of the experimenter) - (Date)/evalution rezultsフォルダに保存
img67.png

  • シンボル「+」は自分でラベルした位置。シンボル「●」がDeepLabCutが推測した位置。

Analyze videos

学習させたモデルを使って動画を解析する

  1. Analyze videosタブをクリック。
    img68.png
  2. 「Choose the videos」で解析(推測)する動画を指定します。
    今回は /home/(computer-name) / (Name of the Project) - (Name of the experimenter) - (Date)/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?」は、ラベル部位の軌跡を図として出力します
    trajectory.png

「Want to plot the trajectories?」がデフォルトでyesになっていますが、
一度Noをクリックし、再度Yesをクリックしてbodypartsの種類を表示してください。
これをやらないと、軌跡が表示されません!!

img69.png

 3. 「Analyzevideos」ボタンをクリックすると、グラフが作成されます。
 plot.png
plot-likelihood.png

 作成されたファイルは以下に保存されます
 /home/(computer-name) / (Name of the Project) - (Name of the experimenter) - (Date)/videos/plot-poses/m3v1mp4/

Create videos

作成したラベルを使って動画を作成します。

  1. Create videosタブをクリックします
    img70.png

  2. 「Choose the videos」で動画を指定します。
    今回は /home/(computer-name) / (Name of the Project) - (Name of the experimenter) - (Date)/videos/m3v1mp4.mp4

  3. 今回はデフォルトのままで「RUN」ボタンをクリックします
    作成された動画は
    /home/(computer-name) / (Name of the Project) - (Name of the experimenter) - (Date)/videos/の中にあります。

解析した動画をみてラベルが正確にできていれば精度の高い結果になっていますが、
そうではない場合、修正して再度解析してみてください。
また、オプション指定でさらに精度を上げることもできます。

詳細はこちらの Extract outlier frames を参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?