LoginSignup
2
2

More than 3 years have passed since last update.

yolov3の環境作成を1からやる

Last updated at Posted at 2020-05-17

概要

.参考文献1のような素晴らしいチュートリアルを見つけたけれど,環境構築が辛いのでまとめます.(ライブラリ/パッケージ不足が主ですが)

環境

  • OS: Ubuntu 18.04.4 LTS x86_64(クリーンインストール)
  • Kernel: 5.3.0-51-generic
  • CPU: AMD Ryzen 7 1700
  • GPU: NVIDIA GeForce GTX 1060 6GB

インストール

この通りに入れないと修行がまっています(した).

落とす順番

1.大量のパッケージ/ライブラリ
2.GPUのドライバ
3.cuda
4.cudnn
5.opencv
6.darknet

大量のパッケージ/ライブラリ

1.有名どころと滅多に聞かない(主観)ものをとりあえずインストールします.

有名どころ
sudo apt install git python3-pip python3-dev wget cmake make build-essential ffmpeg
縁の下の力持ち
sudo apt install zlib1g-dev libcurl4-gnutls-dev build-essential build-dep  \ 
libopencv-dev openalpr openalpr-utils libopenalpr-dev openni2-utils  \
libopenni2-dev libpcl-dev libguava-java libjasper-dev libleveldb-dev  \
liblmdb-dev libnccl-dev libatlas-base-dev libopenblas-dev liblapack-dev  \
libtbb-dev libavcodec-dev libavformat-dev libswscale-dev libavcodec-dev  \
libavformat-dev libswscale-dev libv4l-dev libatlas-base-dev libxvidcore-dev \
libx264-dev libgtk-3-dev libopenexr-dev libwebp-dev libswscale-dev  \
libjpeg-dev libjasper-dev libpng++-dev libavcodec-dev libavformat-dev  \
libxvidcore-dev libx264-dev libatlas-base-dev gfortran python3-numpy
掃除
sudo apt autoremove
sudo apt update

GPUのドライバ

1.Nvidia公式から,自分のGPUにあった最新のドライバを落としてきます.

mkdir ~/nvidia_driver && cd ~/nvidia_driver
wget http://jp.download.nvidia.com/XFree86/Linux-x86_64/440.xx/NVIDIA-Linux-x86_64-xxx.xx.run

2.nouveauの息の根を止めます.

やり方は様々あるようですが,私はこれでうまく行きました.

/etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
/etc/modprobe.d/nouveau-kms.conf
options nouveau modeset=0
shell
sudo update-initramfs -u
sudo reboot

再起動すると画面が少々ラリるようですが,気にしないでください.

3.ドライバを入れます

本体を実行すると英文で選択を迫られますが,それほど難しくないので読みながらやってください.全部左選択で十分使えます.

shell
cd nvidia_driver
sudo chmod +x NVIDIA-Linux-x86_64-xxx.xx.run
sudo bash ./NVIDIA-Linux-x86_64-xxx.xx.run

これでnvidia-smiが使えるようになったはずです.

shell
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82       Driver Version: 440.82       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| 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 106...  Off  | 00000000:0C:00.0 Off |                  N/A |
| 66%   73C    P2   122W / 120W |   2491MiB /  6070MiB |     98%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0     15327      C   ./darknet                                   2481MiB |
+-----------------------------------------------------------------------------+

nvidia-smiが使えない時は,再起動するかもう一度やってみてください.

cudaのインストール

最新信者の方も一定数いらっしゃると思いますが,tensorflow-gpuをcuda-10.2で使うにはビルド修行をするしかなさそうなので(2020/5/17),cuda-10.0を入れます.

1.Nvidia公式で,自分の環境に合わせてポチポチしていき,Installer Typeまで選び切ると公式のやり方が出てくるのでそれを横目に見つつ,右側に表示されているであろうDownload(1.6GB)をポチって~/cuda_build/に保存してください.

mkdir ~/cuda_build && cd ~/cuda_build
wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda-repo-ubuntu1804-10-0-local-10.0.xxx-xxx.xx_x.x-x_amd64

2.先ほど横目に見た公式のやり方をほとんどそのままターミナルに貼り付けます.

sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.xxx-xxx.xx_x.x-x_amd64
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

3.パスを通します

shell
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$PATH' >> ~/.bashrc
source ~/.bashrc

これでnvccが使えるようになったはずです.

shell
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

使えない場合パスの設定が怪しいので,.bashrcの該当箇所を以下のようにしてみてください.

.bashrc(旧)
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$PATH
.bashrc(新)
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10/lib64:$PATH

cudnnのインストール

あんまり修行じゃないです.

1.Nvidia公式に行きます.アカウントを持ってなければ作ってください.ここで自分の使っているバージョンに合わせたcudnn(今回はcudaが10.0なのでcudnn7.6.5)のライブラリたち(以下)を~/cudnn_build/に保存します.

Libraries
cuDNN Runtime Library for Ubuntu18.04 (Deb)
cuDNN Developer Library for Ubuntu18.04 (Deb)
cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)

2.dpkgを使ってインストールしていきます.順番通りにやらないとかなり苦行が待っているそうです.

shell
cd ~/cudnn_build
#本体
sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.0_amd64.deb
#発展
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.0_amd64.deb
#文書
sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.0_amd64.deb

インストールが成功したか検証することは少々大変なので,darknetのコンパイルで検証してください(無責任).

opencvのインストール

元祖モンスターです.これまでのビルドでかなり心をやられたので,すごく簡単なopencvを作ります.(ダウンロードしたcontribを使いません)

1.opencv公式から,程よいバージョンを見繕ってwgetでインストールします.今回はなんとなくopencv-3.4.7を使います.

shell
mkdir opencv_build && cd opencv_build
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.7.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.7.zip

2.解凍してビルド用のディレクトリを作ります.

shell
unzip opencv.zip
unzip opencv_contrib.zip
cd opencv-3.4.7
mkdir build && cd build

3.cmakeしてmakeします.ものすごくシンプルですが,完全体を目指していただいても構いません.ただ,ENABLE_PRECOMPILED_HEADERS=OFFを設定しておかないと失敗します.私の場合は行列計算系のライブラリ不足で怒られました.

shell
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D ENABLE_PRECOMPILED_HEADERS=OFF ..
make -j16
sudo make install
sudo ldconfig

これもインストールが成功したか検証することは少々大変なので,darknetのコンパイルで検証してください(無責任)

darknetのインストール

これ以外のインストールに比べればすごく簡単です.

1.githubから引っ張ってきます.

shell
git clone https://github.com/pjreddie/darknet.git
cd darknet

2.Makefileの先頭部分を編集してmakeします.

Makefile(旧)
GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
Makefile(新)
GPU=1
CUDNN=1
OPENCV=1
OPENMP=0
DEBUG=0
shell
make -j16

これでうまくいったはずです.楽しい顔検出機の自作をしましょう.

その他

もし,hoge.hがないことを理由にコンパイルエラーになった場合,何も考えずにsudo apt install libhoge-dev等で無理やりインストールしてみてください.

参考文献

この記事は以下の情報を参考にして執筆しました.

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