#はじめに
私は、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
#参考にさせていただいたもの
-
深層学習で動物の身体をトラッキングするdeeplabcutをgoogle colaboratoryで走らせる
このサイトは神・・・大変参考になりました。ありがとうございます!👏 -
DeepLabCut 2.2 / maDeepLabCut multi-animal support
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起動します。
起動したらこんな画面がでてきます。
上あたりにあるManage Projectタブをクリックして次に進みます。
こんな感じでprojectやらexperimenterの名前を決めるのです
select the directoryは適当に指定していいけど、個体追跡してたところと同じところを指定しておくとまとまっていいかも。
これでOKを押すと
指定したところに[project]-[experimenter]-[year]-[month]-[day]って名前でフォルダが生成して、こんなものが入ってます。
config.yamlはやりたいように書き換えます。個体追跡やってたらだいたいわかります。
できたらgoogle driveのマイドライブに同じ名前のフォルダを作り、
手元と同じ感じにします。
evalation-resultsは別にいらないです。
こんな感じで。
driveの方のconfigファイルの中身は手元のやつを
こんな感じにproject_path video_setsのところを変更してコピー。
あとは動画(DeepLabCut 2.2 / maDeepLabCut multi-animal support)に従ってラベリング頑張ってください。(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でもいれて少しでも学習させるようにしたらいいと思います。動画じゃ学習の回数は5万回で十分とか言ってましたが自分のデータでは全然たりなかったです。いっぱいやりましょう。
4. 評価する
学習が終わったら評価しましょう。
driveの自分で作ったもの(nooob-wanwan-2020-09-01)をダウンロードします。
そこで手元のPCの方にtraning-datasetsとdlc-modelsをコピーします。
ここからはguiを使います。
動画の3:34からしたがってください。x-validateはよくわかりません。教えてください。
これで終わりです。
#終わりに
結局環境構築をしっかりすればいいのです。だれか教えてください。
#追記
環境構築を教えてもらい、手元のpcの環境で全部できるようになりました。色々さよなら〜