EnsekiTT Blog

EnsekiTTが書くブログです。

DeepLearningの手法の一つ、Yolo v2で物体検出して遊ぶ話(CUDA,Darkflowインストール編)

こんにちは、えんせきです。
画処理に帰ってきました。寝不足気味ですが明日も頑張って行きたいと思います。

つまりなにしたの?

DarkflowでYolo v2を動かしてみたらいい感じにバウンディングボックスを描くことができそうなので今日はまず環境構築の部分を紹介する。
github.com

手順

  • 環境を準備する
  • Darkflowを準備する

今日はここまで

  • コードを書いていく
  • 実行してみる

こんどここ

環境を準備する

今回はうちのGPU(GTX1070)を使いたいということでおうちのUbuntu16.04にした。
DarkflowはTensorFlowを使うのでCuda9.0とcudnnを入れた。(久しくアップデートしてなかったのでついでにアップデートしている。

Cudaのインストール

CUDA Toolkit 9.0 Downloads | NVIDIA Developer
こちらから、
f:id:ensekitt:20180222221855p:plain
こんな感じで選んで、
debファイルをダウンロードする。

cd download
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda-9.0

これで、/usr/local/cuda-9.0にCudaが突っ込まれる。

.bashrc とかに以下を追加する

export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-9.0:$CUDA_HOME
確認
cvnn --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.30                 Driver Version: 390.30                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1070    Off  | 00000000:01:00.0  On |                  N/A |
| 27%   38C    P8     8W / 151W |    577MiB /  8116MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1284      G   /usr/lib/xorg/Xorg                           243MiB |
|    0      2059      G   compiz                                       264MiB |
|    0      4096      G   ...-token=HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE    56MiB |
+-----------------------------------------------------------------------------+

cudnnのインストール

※登録とソフトウェア・ライセンスへの承諾が必要です。
NVIDIA cuDNN | NVIDIA Developer
f:id:ensekitt:20180222222406p:plain
これで、
cudnn-9.0-linux-x64-v7.tgz
がダウンロードできる。

tar -xzvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

*1

確認
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN

# わらわら出る

Result of classification: 1 3 5

Test passed! #←これが出れば大丈夫

Python

いつものごとく、PyEnvで環境を用意した。

pyenv virtualenv 3.6.2 yolo
pyenv local yolo
pip install numpy tensorflow-gpu python-opencv

Darkflowを準備する

github.com
DarkflowをいれるといろんなYoloが試せる。今回はYolo v2を試す。
(読み込むファイルを変えれば簡単に変えられる)

git clone https://github.com/thtrieu/darkflow.git
cd darkflow
python setup.py build_ext --inplace
mkdir bin
cd bin
wget https://pjreddie.com/media/files/yolo.weights
cd ..

学習済みのデータ(yolo.weights)ダウンロードに時間がかかる。

次回は実行できるコードを書いて行く。

次回はこちら

ensekitt.hatenablog.com

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。