LoginSignup
1
5

More than 1 year has passed since last update.

Windows10でDeepLabCutを使いたい(操作編)

Last updated at Posted at 2022-05-27

ここでは初心者でもDeepLabCutが使えるような操作説明を記述しています。
DeepLabCut、Anacondaがインストールされているのを前提に紹介しています
DeepLabCut、Anacondaのインストール方法はこちら
参考記事はこちら←(一部メニューが変更になっていたり、コツがあったので、備忘録として以下に手順を記載します)

DeepLabCutを起動する前に

サンプルデータをダウンロード

説明に利用するサンプルデータをGitHubよりダウンロードしておきます

  1. 「Code」より「Download ZIP]をクリック
    img30.png

  2. エクスプローラーを開きダウンロードフォルダをクリックするとDeepLabCut-master.zipファイルがあります
    img31.png

  3. ZIPファイルを展開します。
    右クリックして「すべて展開」を選択

展開する場所は好きなところで結構です。(今回はc:¥User¥ユーザー名 の中にしました・・ユーザー名はあなたのPCの名前です)
img33.png
展開されたか確認してください
img33-1.png

仮想環境に入る

DeepLabCutを起動するために仮想環境にはいります
Anaconda promptを起動します

  1. スタートメニューよりAnaconda3を選択しAnaconda promptをクリックします
    img13.png

1.Anaconda promptが表示されます
img14.png

  1. conda activate DEEPLABCUTと入力し「Enter」キー
    img33-2.png

DeepLabCutの起動

  1. python -m deeplabcutを入力し、「Enter]
    img33-3.png

DeepLabCutが起動します
img22.png

DeepLabCutの使い方

ここから本題です

Manage Project

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

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

  2. 「Create new project」を選択
    プロジェクト名を入力 (今回はtest)
    実験者を入力 (今回はaaa)
    解析するデータを「Load Videos」 をクリックして選択
    (ダウンロードしたサンプルデータを選択)
    C:¥ユーザー¥ユーザー名¥DeepLabCut-master¥examples¥openfield-Pranav-2018-10-30/videosフォルダ内のm3v1mp4.mp4ファイル
    img34.png

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

新プロジェクトのconfig.yamlファイルが作成されます。
新プロジェクトの一連ファイルは
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付のフォルダ内に保存されます
(例) プロジェクト名:test 実験者名:aaa 日付:2022/5/26 の場合
img36.png

config.yamlファイルの編集

config.yamlファイルを編集すると追跡ポイント数や名称を変更できます

  1. 「Editconfig file」をクリック
    img37.png

開かないときはメモ帳などを起動し、ファイルを開きます。ファイルの場所は
C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥config.yaml

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

    img39.png

img40.png

「OK」をクリックしてプロジェクトを呼び出します

  • 以前のプロジェクトの続きをしたい場合も[Load existing project」を選択し、「Select the config file」から、再開したいプロジェクトの.yamlファイルを選びます。

Extract Frames

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

  1. Extract Framesタブを選択
    img41.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タブを選択
    img42.png

  2. 「Label Frames」ボタンをクリックすると Labeling ToolBoxが表示されますので「Load frames」ボタンをクリック
    img57.png
    前のステップで抽出したフレームが1つのフォルダに集められています。フォルダの場所は以下です
    C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥labeled-data¥m3v1mp4

  3. フォルダを選択して「Selevt Folder」をクリック
    img43.png

すると、Labeling ToolBoxに抽出されたフレームがLoadされます
img59.png

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

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

Train

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

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

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

Evaluate

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

  1. Evaluateタブをクリックします。
    img47.png

  2. すべてそのままでいいです。
    「RUN:Evaluate Network」をクリックすると評価が始まります
    以下が表示されれば評価終了です。

img52.png

評価された結果(画像ファイル)は
c:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥evalution rezults¥iteration-0¥test1May26-trainset95shuffle1¥LabeledImages_DLC_resnet50_test1May26shuffle1_5000_snapshot-5000フォルダに保存

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

Analyze videos

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

  1. Analyze videosタブをクリック。
    img49.png

  2. 「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?」は、ラベル部位の軌跡を図として出力します
    trajectory.png

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

img50.png

 3. 「Analyze Videos」ボタンをクリックすると、いくつかグラフが作成されます。
  作成されたファイルは以下に保存されます
 C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos¥plot-poses¥m3v1mp4¥
 plot.png
plot-likelihood.png

Create videos

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

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

  2. 「Choose the videos」で動画を指定します。
    今回は C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos¥m3v1mp4.mp4

  3. 今回はデフォルトのままで「RUN」ボタンをクリックします
    作成された動画は
    C:¥ユーザー¥ユーザー名¥プロジェクト名 - 実験者名 - 日付¥videos¥の中にあります。

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

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

1
5
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
5