DEEPLABCUT2.3のインストールと操作

追加情報　2024.8.1

https://qiita.com/suginaga/items/bb7c5773df94d70a4723

---------------------------
Deeplabcutのバージョンが2.3になりました(2023)
旧バージョンとは違い、インストール方法が簡単です。

:::note warn
ubuntu22.04　で　deeplabcut をインストールする際は　CUDA11.7　cuDNN11.x　にしてください。
CUDA12 とcuDNN12を入れるとdeeplabcutが動かない可能性があります。2023/2/1
:::

ここではubuntu22.04,cuda11.7,cuDNN11.x,anaconda が既にインストールされている環境でやっています。
ここで使用した環境設定は[こちらのページ](https://qiita.com/suginaga/items/dfd6b891ecf3d678f476)を参考にしています。
Anacondaのインストールまで行ったら仮想環境をつくって入っておいてください。
~~~
conda create -n お好きな仮想環境名
~~~
~~~
conda activate 作った仮想環境名
~~~
あと、好きな動画ファイルを１つ用意しておいてください。


# Deeplabcutインストール

~~~
pip install 'deeplabcut[gui,tf]'
~~~
この１行で終わり。すごい簡単！！
次にDeeplabcutの起動
~~~
python3 -m deeplabcut
~~~
![img1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/f4a73b6a-4c30-4896-ca14-8f8402e00815.png)
ver2.3の起動画面です。
# 操作方法
用意した動画で簡単な学習をやってみます。
1. まずはウィンドウ下の`Create New Progect`をクリック
プロジェクト名や名前を入力、使用するビデオを選択。
copy video　に☑をいれて　`Create`ボタンをクリックします。
![img2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/3ec52991-8969-e705-2d0b-62a580f32501.png)
デスクトップにプロジェクト名-名前-日付のフォルダが作成されます。
（中身はこんな感じです）
![img3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/f2956995-cbe2-4072-30ad-b1f1c5db6ea1.png)
config.yamlファイルを編集することで表示名や数、色など変更可能ですが、
ここでは初期設定のまま進めます。
### Extract frames
`Extract frames`タブに移ります
training datasetを作るために、動画から複数のフレーム（画像）を抽出します

そのまま`Extract Frames`ボタンをクリック。
![img4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/fad132e0-397c-7ba4-2705-00efecfb22ca.png)
デスクトップに作成されたフォルダのlabeled-dataフォルダ内に静止画が作成されます。
### Label frames
抽出したフレームに映る対象物の特定の部分（鼻、耳、尻尾など）をラベルして正解画像として使うためです。
保存された静止画を呼び出しますので`Label Frames`ボタンをクリックします。
![img5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/03de482e-b081-5553-30c4-bae245df8fcb.png)
`napari`ウィンドウが立ち上がり
一枚目の静止画が表示されます。
![img6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/0b2f0665-646b-696e-a987-33813dcb9113.png)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/fd965420-e0b1-81f9-c448-b74ed52dd3b0.png" width="250">

マーカーの大きさは`point size`で変更できます。
（ただし、実際に動画生成されるときのマーカーサイズは.yamlファイルに記述されているサイズになります）
指定箇所にマーカーを付け、ウィンドウ下のバーをクリックして２枚目に移ります。
すべて(20枚）の静止画にマーカーをつけたら、保存します。
`File`メニューより`File Save Selected Layer(s)`を選択します。
`File`メニュー`または×ボタンで閉じます。

### Create training dataset
作成したラベルデータを使ってtraining datasetを作成します。
![img7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/79b4c946-4b64-1d72-28aa-6c04e6659d2d.png)

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

ラベルした画像を何度も反復して学習をおこないます
![img8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/fa14242d-5cca-f501-c92e-bc41bc26bf64.png)
* 「Display iterations」は反復する間隔
* 「Save iterations」は保存する間隔
* 「Maximum iterations」は反復回数
ここでは100　1000　50000と指定しています
。
`Train Network`をクリックすると学習がスタートします。
![img9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/0046df5b-b6c9-3fb1-4026-f6d1033e1704.png)
### Evaluate network
![img10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/3b743871-1051-c895-ca36-0288c0f8d53c.png)
トレーニングを評価します。
`Evaluate Network`をクリックします。

### Analyze videos
学習させたモデルを使って動画を解析する
`Analyze videos`タブをクリック
![img11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/6852ea65-3246-bf12-b095-5cf840cddd33.png)

* 「Select videos」で解析（推測）する動画を指定します。
* 「Save result(s) as csv」は、ラベル位置のXY座標をCSV形式で出力できます。
* 「Filter predictions」は、ラベル部位の推定に前後のフレームの情報も使用できます
（前後のフレームの情報も考慮すると推定の精度が上昇するときがあります。）

`Analyze videos`をクリックします。

### create videos
作成したラベルを使って、動画を作成します。
`Create videos`タブをクリック
![img12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/59f1575f-08ba-e814-3c63-f99383ff08f0.png)
* `Draw Skeleton`・・・骨格ラインを表示します
`Build skeleton`ボタンをクリックすると骨格ラインの設定ができます。
![skelton3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/59b1a25a-3347-cc94-64ef-b80599cc2dca.png)
マーカーをつなげて`export`をクリックします（画面はなにも反応しないですが保存されるのでXで閉じます）
`Create videos`をクリックすると動画がvideoフォルダ内に作成されます。

マーカーの大きさや骨格ラインの色は.yamlファイルを加工してます
|<iframe width="560" height="315" src="https://www.youtube.com/embed/QdgcgPLWf_g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>|<iframe width="560" height="315" src="https://www.youtube.com/embed/fIbg1YDeI3k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>|
|:-----------:|:------------:|

補足
〇作成した動画をみて「もう少しマーカーを小さくしたいなー」と思った時は
　１．作成した動画を消す　or　名前を変更する　(作成済のファイルがあると新しく作成されません）
　２．デスクトップに作成されたフォルダ内の.yamlを修正、保存
　３．fileメニューよりopenで.yamlを指定しプロジェクトを呼び出す　
　４．Analyze videos　を走らす
　５．create videos　を走らす
　です。