概要
.参考文献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の息の根を止めます.
やり方は様々あるようですが,私はこれでうまく行きました.
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
sudo update-initramfs -u
sudo reboot
再起動すると画面が少々ラリるようですが,気にしないでください.
####3.ドライバを入れます
本体を実行すると英文で選択を迫られますが,それほど難しくないので読みながらやってください.全部左選択で十分使えます.
cd nvidia_driver
sudo chmod +x NVIDIA-Linux-x86_64-xxx.xx.run
sudo bash ./NVIDIA-Linux-x86_64-xxx.xx.run
これでnvidia-smi
が使えるようになったはずです.
$ 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.パスを通します
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$PATH' >> ~/.bashrc
source ~/.bashrc
これでnvcc
が使えるようになったはずです.
$ 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
の該当箇所を以下のようにしてみてください.
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$PATH
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/
に保存します.
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を使ってインストールしていきます.順番通りにやらないとかなり苦行が待っているそうです.
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
を使います.
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.解凍してビルド用のディレクトリを作ります.
unzip opencv.zip
unzip opencv_contrib.zip
cd opencv-3.4.7
mkdir build && cd build
####3.cmakeしてmakeします.ものすごくシンプルですが,完全体を目指していただいても構いません.ただ, ENABLE_PRECOMPILED_HEADERS=OFF
を設定しておかないと失敗します.私の場合は行列計算系のライブラリ不足で怒られました.
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から引っ張ってきます.
git clone https://github.com/pjreddie/darknet.git
cd darknet
####2.Makefile
の先頭部分を編集してmakeします.
GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
GPU=1
CUDNN=1
OPENCV=1
OPENMP=0
DEBUG=0
make -j16
これでうまくいったはずです.楽しい顔検出機の自作をしましょう.
##その他
もし,hoge.h
がないことを理由にコンパイルエラーになった場合,何も考えずにsudo apt install libhoge-dev
等で無理やりインストールしてみてください.
参考文献
この記事は以下の情報を参考にして執筆しました.