2
3

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 3 years have passed since last update.

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

Last updated at Posted at 2020-08-31

#はじめに
私は、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

#参考にさせていただいたもの

#手順
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

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

ss2.png

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

ss3.png

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

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

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

ss4.pngss6.png

こんな感じで。
driveの方のconfigファイルの中身は手元のやつを
ss7 (2).png
こんな感じに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の環境で全部できるようになりました。色々さよなら〜

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?