(作業メモ 20240820) DeepLabCut のおそらく間違ったインストール方法

20 8月

1か月ほど前から、DeepLabCut を利用することを試みています。最初は ubuntu で利用しようと試みたのですがうまく行かず、現在は windows で利用方法を探っています。怪しいやり方ではあるのですが、こうすればビデオカードの演算機能を利用できるというのが分かったので記録したいと思います。

参考サイト:DeepLabCutのインストール方法(GPU版、Windows11)

色々と上手くいかなかった理由として、Tensorflow を使うのか PyTorch なのかというところがあったかなと思います。現在のバージョンの DeepLabCut は PyTorch を推奨しているようです。初めは Tensorflow を使うものだとばかり考えていて混乱しました。結局、古いバージョンの DeepLabCut を 、Tensorflow で動かすことになりました(20240909 現在は Pytorch も試みています)。

下記に、パソコンの仕様を挙げます。

  • マザーボード:ASUS Pro H510M-C/CSM
  • CPU:Core i3-10105
  • メモリ:16.0 GB
  • ビデオカード:RTX 2070
  • OS:Windows 11 Education

ビデオカードのドライバーは最新のもの(560.81)を入れました。

最初に、Visual Studio (community) 2019 のインストールです。インストールの項目を選ぶときに「C++によるデスクトップ開発」だけを選択しました(下図)。

そのあと CUDA のインストールです。バージョンは 11.2 です(ファイル名:cuda_11.2.2_461.33_win10.exe)。

CUDAのあと、Anaconda をインストールしました。ファイル名は Anaconda3-2024.06-1-Windows-x86_64.exe です。インストール途中で質問があるのですが、下図にあるように個人用としてインストールしました。

また他には、下図のように、パスを環境ファイルに書き込むようにチェックを入れました。警告が来ていますね。

続いて、cudnn のインストールですが、バージョンは 8.1.1.33、ファイル名は cudnn-11.2-windows-x64-v8.1.1.33.zip です。解凍して中にある CUDA フォルダーごとAnacondaのインストール先にある Tools フォルダー(C:\Users\ユーザー名\anaconda3\Toolsなど)にコピーします。これにパスを通します。

パスの設定は(上の図をご覧ください)コントロールパネルの「システム」から、「システムの詳細」、「環境変数」とたどると、設定画面が現れます。作業しているユーザー名は buturi で、その場合 Path に

    C:\Users\buturi\anaconda3\Tools\cuda\bin

を加えます。下記のコマンドを打ってパスが通っていることを確認します。

    where cudnn_adv_infer64_8.dll

この後は、DeepLabCut のインストールです。Anaconda の機能を利用します。公式サイトにあるインストール方法の説明記事 にリンクがある DEEPLABCUT.yaml は最新のもので、中を見ると PyTorch を利用するもののようです。ここでは Tensorflow を利用しようと思います。それで下記に内容を改めました。

# DLC-GPU.yaml

#DeepLabCut2.0 Toolbox (deeplabcut.org)
#© A. & M. Mathis Labs
#https://github.com/DeepLabCut/DeepLabCut
#Please see AUTHORS for contributors.

#https://github.com/DeepLabCut/DeepLabCut/blob/master/AUTHORS
#Licensed under GNU Lesser General Public License v3.0
#
# DeepLabCut environment
# FIRST: INSTALL CORRECT DRIVER for GPU, see https://stackoverflow.com/questions/30820513/what-is-the-correct-version-of-cuda-for-my-nvidia-driver/30820690
#
# install: conda env create -f DLC-GPU.yaml
# update:  conda env update -f DLC-GPU.yaml
name: DLC-GPU
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.9
  - pip
  - jupyter
  - nb_conda
  - ffmpeg
  - pip:
    - deeplabcut[gui, tf]

Anaconda に全く詳しくないので、ここにもっと書き込めば色々手間が省けるのかもしれません。C ドライブの直下にでもフォルダー(ここでは c:\dlc とします)を作り、上記の内容のファイルを ファイル名 DEEPLABCUT.yaml として配置します。続いて Anaconda Prompt を管理者権限で起動します。端末で現在位置を c:\dlc へ移動して、下記のコマンドで新しい環境を作成します。

conda env create -f DEEPLABCUT.yaml

構築が完了したら、下記のコマンドで環境をアクティベイト(起動)します。

conda activate DLC-GPU

下図はアクティベイトした時の端末画面です。

Anaconda Navigator を見ると、下図のように、新しい環境が追加されています。

上図にあるのですが、この Numpy は新しすぎるようです。少しバージョンを落とします。一旦 numpy を削除して、ver. 1.23.5 をインストールしました。

(DLC-GPU) C:\dlc>pip uninstall numpy
Found existing installation: numpy 2.0.1
Uninstalling numpy-2.0.1:
  Would remove:
    c:\users\buturi\anaconda3\envs\dlc-gpu\lib\site-packages\numpy-2.0.1-cp39-cp39-win_amd64.whl
    c:\users\buturi\anaconda3\envs\dlc-gpu\lib\site-packages\numpy-2.0.1.dist-info\*
    c:\users\buturi\anaconda3\envs\dlc-gpu\lib\site-packages\numpy.libs\.load-order-numpy-2.0.1
    c:\users\buturi\anaconda3\envs\dlc-gpu\lib\site-packages\numpy.libs\libscipy_openblas64_-fb1711452d4d8cee9f276fd1449ee5c7.dll
    c:\users\buturi\anaconda3\envs\dlc-gpu\lib\site-packages\numpy.libs\msvcp140-8021418012832a07a8ca5105a33b1086.dll
    c:\users\buturi\anaconda3\envs\dlc-gpu\lib\site-packages\numpy\*
    c:\users\buturi\anaconda3\envs\dlc-gpu\scripts\f2py.exe
    c:\users\buturi\anaconda3\envs\dlc-gpu\scripts\numpy-config.exe
Proceed (Y/n)? y
  Successfully uninstalled numpy-2.0.1
(DLC-GPU) C:\dlc>pip install numpy==1.23.5
Collecting numpy==1.23.5
  Downloading numpy-1.23.5-cp39-cp39-win_amd64.whl.metadata (2.3 kB)
Downloading numpy-1.23.5-cp39-cp39-win_amd64.whl (14.7 MB)
   ---------------------------------------- 14.7/14.7 MB 15.9 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-1.23.5

(DLC-GPU) C:\dlc>

Tensorflow をインストールします。

pip install tensorflow-gpu==2.10.0

続いて、 deeplabcut のインストールですが、バージョンを指定します。

pip install deeplabcut[gui,tf]==2.3.9

deeplabcut を起動します。

無事、起動しました。利用方法は下記を参考にしています。

下図の動画を解析してみました。動画のサイズは 1920 x 1080 です。

 

おまかせで進めていくと、動画から19枚の静止画が切り出されました。その一枚、一枚にしるしを付けていきます。下図にあるように、今回は4点しるしを付けました。

トレーニングを開始します。そのときのタスクマネージャーです。

ビデオメモリは 7GB 程度利用されています。ビデオカードの温度は激熱になります。4時間弱ぐらいでトレーニングが終了しました。動画の解析から注目した点のピクセル位置(縦横の座標というか)の時間変化が得られます(CSVファイル)。それを使って作成したビデオが下記のものです。

 

途中で、一瞬見失っているようです。ひとつの動画で学習するとその学習結果は他の動画にも利用できます。再び4時間かかることはありません。1 分程度の動画なら、解析して座標を得るのに約 2 分で済みました。動画の作成はもっと短いです。これで学生実験のテーマを作りたいと考えています。作用反作用を扱うテーマとしたいと思っていますが、力学分野のテーマは数が少ないので貴重です。また維持費も安いのではないかと思っています。

追記

 下記のリンクは Pytorch の場合の記事です。

上記の記事の通りにやってみて GPU を利用することはできました。GPU メモリの使用量とか見ていると、Tensorflow とは異なった動きでした。トレーニング中にメモリーの使用量が変動していました。Tensorflow は一定だったのですが。ただ、最新のバージョンの GUI に慣れません。それと、トレーニングのパラメーター設定が異なるように思えます。適当なパラメーターで訓練してみたのですが、2時間以内ぐらいの時間で良い結果が得られました。しかし、推論に時間が 20 分程かかりました。何かインストールに良くないところがあったのでしょうか?他には、推論した座標の印を上書きしたビデオを書き出す際に、なぜか一回目が失敗しました。上書きできなくて、元のビデオのままとなりました。それで、そのビデオを削除してもう一度ビデオを作成してみると上手く印を上書きしたビデオが作成できました。

追記2

Pytorch の続きです。多少ましになってきました。以下、インストール方法を記述します。Tensorflow と同じ部分が多いのですが、あとあと以下の記事は独立させるかもしれません。それで重複しても省略せずに書いてみます。

解析するのは、下記の動画です。浮かんだ磁石が、ただうろうろしているだけの動画ですが、とにかく磁石の特徴を記憶させるために使うものなので、変な動きをしている方が良いかもと考えました。丸い磁石を使用しています。大きさの違うものを二つ用意しました。

 

最初は、とにかくビデオカードのドライバーを入れます。560.81 で最新のものを入れました。

続いて、Visual Studio (community) 2019 のインストールです。インストールの項目を選ぶときに「C++によるデスクトップ開発」だけを選択しました(下図)。

とりあえず、Git (Git-2.45.2-64-bit.exe)をインストールしておきます。Git のサイトはここです。

そのあと CUDA のインストールです。バージョンは 11.8 です(ファイル名:cuda_11.8.0_522.06_windows.exe)。

CUDNN を入れませんでした。こんな記事があって、現在の PyTorchにはcuDNNのインストールは不要と書かれています。それでとりあえずインストールせずにやってみました。

CUDAのあと、Anaconda をインストールしました。ファイル名は Anaconda3-2024.06-1-Windows-x86_64.exe です。インストール途中で質問があるのですが、下図にあるように個人用としてインストールしました。

また他には、下図のように、パスを環境ファイルに書き込むようにチェックを入れました。警告が来ていますね。

続いて、Anaconda を使って、環境を作ります。deeplabcut のサイトにある DEEPLABCUT.yaml を使用します。内容は下記。

# DEEPLABCUT.yaml

#DeepLabCut Toolbox (deeplabcut.org)
#© A. & M.W. Mathis Labs
#https://github.com/DeepLabCut/DeepLabCut
#Please see AUTHORS for contributors.

#https://github.com/DeepLabCut/DeepLabCut/blob/main/AUTHORS
#Licensed under GNU Lesser General Public License v3.0
#
# DeepLabCut environment
# FIRST: INSTALL CORRECT DRIVER for GPU, see https://stackoverflow.com/questions/30820513/what-is-the-correct-version-of-cuda-for-my-nvidia-driver/30820690
#
# AFTER THIS FILE IS INSTALLED, if you have a GPU be sure to install cudnn from conda-forge: conda install cudnn -c conda-forge
#
# install: conda env create -f DEEPLABCUT.yaml
# update:  conda env update -f DEEPLABCUT.yaml
name: DEEPLABCUT
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.10
  - pip
  - ipython
  - jupyter
  - nb_conda
  - notebook<7.0.0
  - ffmpeg
  - pytables==3.8.0
  - pip:
    - "git+https://github.com/DeepLabCut/DeepLabCut.git@pytorch_dlc#egg=deeplabcut[gui,modelzoo,wandb]"

C ドライブの直下にでもフォルダー(ここでは c:\dlc とします)を作り、上記の内容のファイルを ファイル名 DEEPLABCUT.yaml として配置します。続いて Anaconda Prompt を管理者権限で起動します。端末で現在位置を c:\dlc へ移動して、下記のコマンドで新しい環境を作成します。

conda env create -f DEEPLABCUT.yaml

構築が完了したら、下記のコマンドで環境をアクティベイト(起動)します。

conda activate DEEPLABCUT

deeplabcut を起動します。

python -m deeplabcut

起動しました。バージョンが新しいです。Pytorch と Tensorflow の切り替えがあります。ただし、まだトレーニングに GPU は利用できませんでした。それで、ここに記述されているコマンドふたつを実行してみます。

pip uninstall torch
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

トレーニングしてみると、今度は GPU が利用できています。

GPU の温度はあまり上がりません。GPU は RTX 3060 に代わっています。

上図はトレーニングの設定画面ですが、デフォルトから display iterations だけ 100 に変更しました。この設定だと 20 分程度で終了します。動画の解析には5分ほどかかりました。検出した座標を重ねた動画の作成は、いつも通り、さほど時間はかからないのですが、なぜか1回目に失敗します。それで作成した動画を削除してもう一度実行したところ、無事作成されました。

 

動画には、丸い点がいろいろと在って分かりにくいのですが、大きめの丸が検出した座標点です。小さい丸は目印にと思って張った、丸いシールです。

座標値は上手く検出できているように見えます。ただ、likelihood (可能性)の値は tensorflow よりも控えめな値です。tensorflow だと 0.99 とかなんですが。

検出された座標を図に重ねるにあたって、likelihood で閾値を制御できるようになってました。Plotting confidence cutoff という値です。

上図だと、likelihood の値が 0.60 以上の座標点を動画に重ねて書いてきます。