DeepLabCut 環境構築メモ : Xubuntu インストールから DeepLabCut 実行まで

深層学習 (ResNet) を用いたマーカーレス動画解析ライブラリ、DeepLabCut のGPU版を Linux (Xubuntu) マシンで使えるようにするための環境構築メモです。Google Colab など外部サーバーを使ってもできるけど、本記事は自分のGPUマシンで解析したい人向けです。今回はサーバーにせず普通にクライアントとして設定します。

DeepLabCut とは

深層学習の1つで、畳み込みニューラルネットワークを発展させた、残差ネットワーク (Residual Network: ResNet) という手法を用いて、動物のマーカーレスなトラッキングを可能にするPythonライブラリです。

トラッキングしたい動画を用意して、アノテーション用に目的のポイント (e.g. 動物の関節) に手動でマーカーを打った後、DeepLabCutに学習させることで、同じ動物が映っている他の動画でも目的のポイントを自動でマーキングしてくれるようになります。複数個体、3次元移動にも対応しています。便利。百聞は一見に如かず↓

PC環境

PC
CPU : インテル Core i7-9700K (3.60GHz-4.90GHz/8コア/8スレッド)
GPU : NVIDIA GeForce GTX 1660 SUPER 6GB GDDR6 (DVI x1,HDMI x1,DisplayPort x1)
メモリ : 16GB DDR4 SDRAM (PC4-21300/8GBx2/2チャネル)
SSD : 512GB NVMe SSD (M.2 2280, 読込速度 3200MB/s, 書込速度 2000MB/s)
HDD : 2TB HDD

OS :Xubuntu 16.04 LTS
NVIDIA Driver : 415.27
CUDA : 10.0
cuDNN : 7
Python : 3.6.10
Anaconda : 4.8.3
TensorFlow(GPU) : 1.10.0
DeepLabCut : 2.1.8.2

Xubuntu 16.04 LTS の環境設定

Xubuntuにしているのは趣味。UbuntuでもWindowsでもいいです。

  • Xubuntu のインストール
    公式から .iso ファイルをダウンロード Rufus で USB に焼いた
  • インストールできたらネットにつなぐ
    インターネット接続を自動→手動にして、IP打ち込み
  • 一旦アップデートをかける
# ターミナル (以下、#はコメントアウト)
$ sudo apt update
$ sudo apt upgrade
  • デスクトップになにも表示しないようにする (デスクトップ画面右クリックして設定から変更できる)
  • フォルダ名を英語にする
# ターミナル
$ LANG = C
$ xdg-user-dirs-gtk-update

Don’t ask me again にチェックを入れて、Update Names をクリックする

その後、再起動すると、Blueman (Bluetooth ソフト) でエラーメッセージが出るので、Blueman を削除する (Bluetooth 使わないので…)

DeepLabCut (DLC) の環境設定

DLC のインストール方法は公式を含めていろいろネットに落ちているが、依存関係 (特に NVIDIA 関係) が結構面倒。私の環境では、以下がうまくいきました。基本は参考資料に書いてある通り進めれば OK (ただし一カ所エラーが出るので注意)

手順

  1. Anaconda のインストールと仮想環境の構築
  2. DeepLabCut のインストール
  3. NVIDIA ドライバのインストール
  4. CUDA のインストール
  5. cuDNN のインストール
  6. TensorFlow のインストール
  7. エラー対策
1. Anacondaのインストールと仮想環境の構築

Anaconda公式 から最新版の Anaconda (Linux版) をインストールする
今回、ダウンロード先はDownloadsにした

# ターミナル
$ sudo apt upgrade
$ cd Downloads
$ bash Anaconda3-2018.12-Linux-x86_64.sh

一度、ターミナルを抜けて、再度ターミナルから仮想環境を設定する
以下では、DLCという名前の仮想環境を作る
名前は任意だが、Pythonのバージョンは3.6推奨

# $USERの部分は自分のユーザー名を指定するここと (例: iwaoki)
$ /home/$USER/anaconda3/bin/conda create -n DLC python=3.6

作成した仮想環境に入りたいときは

$ conda activate DLC
2. DeepLabCut のインストール

上記で作成した仮想環境の中で DLC と wxPython をインストールする

# 仮想環境DLCに入って
$ pip install deeplabcut
$ pip install https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04/wxPython-4.0.3-cp36-cp36m-linux_x86_64.whl

DLC のサンプルファイルをダウンロードする (Optional)

$ sudo apt-get install git
# $USERは自分のユーザー名
$ cd /home/$USER
$ git clone https://github.com/AlexEMG/DeepLabCut
3. NVIDIA ドライバのインストール

以降、バージョン情報には注意すること (だいたいバージョンの依存関係でつまずく)
参考に TensorFlow 公式の表を置いておきます

NVIDIA ドライバをレポジトリからインストールする

# ターミナル
$ sudo add-apt-repository ppa:graphics-drivers
$ sudo apt-get update
$ ubuntu-drivers devices

NVIDIA ドライバのバージョンは 415

# ターミナル
$ sudo apt-get install nvidia-415

うまくインストールできれば、下記コマンドで NVIDIA ドライバの情報が表示されるようになる

# ターミナル
$ nvidia-smi
4. CUDA のインストール

CUDA のバージョンは 10.0

# ターミナル
$ wget "https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb" -P /home/$USER/Downloads

CUDA のインストール

# ターミナル
$ sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
$ sudo apt-get update

CUDA Toolkit のインストール

$ sudo apt-get install cuda-toolkit-10.0
5. cuDNN のインストール

公式から .deb ファイルをダウンロードできる
ただしアカウントの登録が必要

# ターミナル
$ cd /home/$USER/Downloads
$ sudo dpkg -i libcudnn7_7.5.0.56-1+cuda9.0_amd64.deb
$ sudo dpkg -i libcudnn7-dev_7.5.0.56-1+cuda9.0_amd64.deb
$ sudo dpkg -i libcudnn7-doc_7.5.0.56-1+cuda9.0_amd64.deb
$ cd ..
6. TensorFlow のインストール

上記で作成した仮想環境 (DLC) の中で、TensorFlow-GPU をインストール

# 仮想環境ターミナル
$ conda activate dlc
$ pip install tensorflow-gpu==1.10

TensorFlow-GPU が入ったことを確認する

# 仮想環境ターミナル
$ ipython
> import tensorflow as tf
> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

以上で、仮想環境 (DLC) からDeepLabCut を実行する準備が整った

7. エラー対策

と思いきや、多分これではエラーが出る
問題は libsdl1.2 がインストールされていないことなので、インストールする

# 仮想環境ターミナル
$ sudo apt-get install libsdl1.2debian

DeepLabCut 実行

仮想環境でPythonを立ち上げて、deeplabcutをインポートすると使える
詳細に関しては DeepLabCut 公式を参照

# Python
> import deeplabcut

# 日付、名前、動画ファイルの順
# 動画ファイルは複数でも大丈夫(ファイル形式は少なくともmp4, avi, msvはOK)
> deeplabcut.create_new_project('20200919','Iwaoki',['test.mp4'])

# パスの設定
# create_new_project()でconfig.yamlファイルが作成されるので、そのパスを指定 ('/~~/config.yaml'部分は各自のディレクトリ参照)
> path_config = '/~~/config.yaml'
# 解析したいビデオファイルのパス
> path_video = ['/~~/.mp4']

# -------------------------------------------------------------------------------------
# 訓練
# 事前にconfig.yamlを編集してマーカーの名前、ラベリングするフレーム数等を決める
> deeplabcut.extract_frames(path_config, 'automatic', 'kmeans')
# GUIが開いて手動でラベリングできる(アノテーション)
> deeplabcut.label_frames(path_config)
# データセットの作成
> deeplabcut.create_training_dataset(path_config)
# 訓練開始
> deeplabcut.train_network(path_config, shuffle=1, displayiters=10, saveiters=500)

# --------------------------------------------------------------------------------------
# 動画解析
# 解析開始
> deeplabcut.analyze_videos(path_config, videofile_path)
# DLCによる自動ラベリング開始
> deeplabcut.create_labeled_video(path_config, videofile_path)
# ラベリングの結果(マーカーのx, y座標とlikelihood)をcsv形式で出力
> deeplabcut.analyze_videos_converth5_to_csv('/~~/folder_path', '.mp4')

以上です。

質問・コメント等あれば下のコメント欄・TwitterのDM・e-mailでお願いします。

DeepLabCut 環境構築メモ : Xubuntu インストールから DeepLabCut 実行まで

コメントを残す

メールアドレスが公開されることはありません。

トップへ戻る