DeepLabCut 2.2を環境構築さぼってgpuで使いたい

#はじめに
私は、DeepLabCut（__個体追跡__）を使うとき、手元のPCでラベリングして、Dockerで学習と評価をしています。おや、なんだか__複数追跡__もしたくなってきたな・・・
これはそんな人向け。
備忘録として書きました。

よーし、やってみよう。
あれ、docker( https://github.com/AlexEMG/Docker4DeepLabCut )で今まで通りできない・・・
あー、環境構築めんどくさい。
どうしよ。

どうやったか結論からいいますと、
__1.__ 手元のPCでラベリング
__2.__ google colaboratoryで学習
__3.__ 手元のPCで評価～終わり
といった手順でできました。
ぬかるみに体をつっこみまくったため、ごり押しです。

#途中で起こった問題
上記の手順に行くまでにいろいろエラーなど起きていたのでメモ

1.　Docker編
まず、旧バージョン（2.1.8.1）でできるかな？？
対応してないとおこられました。

Dockerfileの中に書いてある
```pip install deeplabcut```
を
```pip install deeplabcut==2.2.b7```
にすりゃいいんじゃないかと思い試しましたが、ipython開いてimport deeplabcutしたら・・・
```cannot import name '_log'```
がでてインポートできませんでした。
解決法・・・わからないなぁ

2.　google colaboratory編
google colaboratoryで評価をしようとしたら
```deeplabcut.plot_trajectories(path_config_file,videofile_path, videotype=VideoType)```
この部分でFileNotFoundErrorやらが出力。analyze_videosでsave_as_csvをtrueにしてるのに作られてない。プロットされている動画も作られてない・・・
解決するのはめんどくさくなって断念。そういえば手元のPCでGUIでできるやんとひらめく。

#いるもの
* Ubuntu 16.04
* google colaboratory
* google driveの学生アカウント
    * 学生アカウントだと容量が無制限。うれしい。そうでないなら200GBぐらいあればいいかも。
* [Anaconda](https://www.digitalocean.com/community/tutorials/how-to-install-the-anaconda-python-distribution-on-ubuntu-16-04)

#参考にさせていただいたもの
* [深層学習で動物の身体をトラッキングするdeeplabcutをgoogle colaboratoryで走らせる](https://qiita.com/riichirohira/items/b92723278ba92fb42db9)
このサイトは神・・・大変参考になりました。ありがとうございます！👏

* [DeepLabCut 2.2 / maDeepLabCut multi-animal support](https://youtu.be/Kp-stcTm77g)
youtubeのチュートリアル動画。なにいってるかわかんねぇが動きを見とけばよいです。

#手順
__1.　仮想環境を作る__
ターミナルを、ひらけ

```
conda create -n <名前> python=3.6
source activate <名前>
```
次にdlcのmultiをインストール

```
pip install deeplabcut==2.2.b7
```
今のところ(2020/09現在)これが最新。ベータ版らしい。
次にwxpythonをインストール。

```
pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04/wxPython-4.0.3-cp36-cp36m-linux_x86_64.whl
```
次、tensorflowをインストール

```
pip install tensorflow==1.10
```

たぶんどっかでnumpyのヴァァジョンについての赤字がでるから

```
pip install numpy==1.16.4
```

これもやった。
次に

```
ipython
```
でipython開いて


```
import deeplabcut
```
これがなにもエラーでなかったらよい。
次からipythonぬけてgui起動です。

__2.　ラベリングまでの手順__
さーーて、ちゃんとipythonぬけたら

```
python -m deeplabcut
```
でgui起動します。

![ss1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701298/3bd33ad6-5456-dfca-ef65-8a1b31a4fad5.png)

起動したらこんな画面がでてきます。
上あたりにあるManage Projectタブをクリックして次に進みます。

![ss2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701298/3651b1e8-24c3-ad19-0ed7-d8d36b3390e4.png)

こんな感じでprojectやらexperimenterの名前を決めるのです
select the directoryは適当に指定していいけど、個体追跡してたところと同じところを指定しておくとまとまっていいかも。
これでOKを押すと

![ss3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701298/0edfc3f3-d5d4-ae1b-62ab-bc0937f0b104.png)

指定したところに[project]-[experimenter]-[year]-[month]-[day]って名前でフォルダが生成して、こんなものが入ってます。

config.yamlはやりたいように書き換えます。個体追跡やってたらだいたいわかります。

できたらgoogle driveのマイドライブに同じ名前のフォルダを作り、
手元と同じ感じにします。
evalation-resultsは別にいらないです。

![ss4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701298/d5c504d1-16f7-85d4-41eb-5e9eca9a6bed.png)![ss6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701298/381eeed9-251e-aec6-ca8c-bef860328471.png)

こんな感じで。
driveの方のconfigファイルの中身は手元のやつを
![ss7 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701298/cd864334-7a48-7120-d6a2-9772bbc4a3e8.png)
こんな感じにproject_path video_setsのところを変更してコピー。

あとは動画（[DeepLabCut 2.2 / maDeepLabCut multi-animal support](https://youtu.be/Kp-stcTm77g)）に従ってラベリング頑張ってください。（check_labelまで)
ラベリングが終わったらgoogledriveにlabeled-dataをコピーしておいてください。

__3.　学習する__
https://github.com/DeepLabCut/DeepLabCut/tree/master/examples
の__[Open in Colab]__をクリックで開きます。

開いたらまず、

```
from google.colab import drive
drive.mount('/content/drive')
```
これをrunします。
マウントできたら

```
!pip install deeplabcut==2.2.b7
```

```
# Use TensorFlow 1.x:
%tensorflow_version 1.x
```
runします。
そのあと私の場合、

```
#Setup your project variables:
# PLEASE EDIT THESE:
  
ProjectFolderName = 'nooob-wanwan-2020-09-01'
VideoType = 'mp4' 

#don't edit these:
videofile_path = ['/content/drive/My Drive/'+ProjectFolderName+'/videos/動画名.mp4'] #Enter the list of videos or folder to analyze.
videofile_path
```

にしつかり変更し、

```
deeplabcut.create_training_dataset(path_config_file, net_type='resnet_50', augmenter_type='imgaug')
```
動かしましょう

そして学習します。

```
deeplabcut.train_network(path_config_file, shuffle=1, displayiters=10,saveiters=500)
```
学習してくれるのはいいのですが、セッション切れで全然回してくれない問題があるのでEasy Auto Refreshでもいれて少しでも学習させるようにしたらいいと思います。動画じゃ学習の回数は５万回で十分とか言ってましたが自分のデータでは全然たりなかったです。いっぱいやりましょう。

__4.　評価する__
学習が終わったら評価しましょう。
driveの自分で作ったもの(nooob-wanwan-2020-09-01)をダウンロードします。
そこで手元のPCの方にtraning-datasetsとdlc-modelsをコピーします。
ここからはguiを使います。
動画の[3:34](https://youtu.be/Kp-stcTm77g?t=214)からしたがってください。x-validateはよくわかりません。教えてください。
これで終わりです。

#終わりに
結局環境構築をしっかりすればいいのです。だれか教えてください。

#追記
環境構築を教えてもらい、手元のpcの環境で全部できるようになりました。色々さよなら〜