6
10

More than 3 years have passed since last update.

Yolo v3をCudaとOpenCVで動かす

Last updated at Posted at 2019-10-16

Yolo v3をCudaとOpenCVで動かす

環境

Server: Supermicro 1029U-TR4
GPU: NVIDIA TESLA V100
CPU: Xeon Gold 5117M x2
Memory: 32GB x4
Storage:800GB SSD
USB Camera:Logicool C270n

大まかな手順

1, Ubuntu 18.04をクリーンインストール
2, Yolo v3をインストールして単体で動かす
3, CudaをインストールしてMake
4, OpenCVのライブラリをインストールしてMake


1, Ubuntu 18.04をクリーンインストール

1)update 色々
インストーラでは特別変わった設定はなし。
インストール後アップデートとgit,build-esentialを追加しておく
\$sudo apt-get update
\$sudo apt-get upgrade
\$sudo apt-get install git
\$sudo apt-get install build-essential

2)SSHを有効にしておく
\$sudo apt-get install ssh
\$sudo vi /etc/ssh/sshd_config
PermitRootLoginをprohibit-passwordからnoに変更


2, Yolo v3をインストールして単体で動かす

\$git clone https://github.com/pjreddie/darknet
\$cd darknet
\$make 

\$wget https://pjreddie.com/media/files/yolov3.weights (20分くらいかかるかも。)
\$./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
(/data/以下を別のjpgにすると別の写真で実行する。鳥とかキリンとか。)
結果は下記のように出る。
*data/dog.jpg: Predicted in 20.787187 seconds.
dog: 100%
truck: 92%
bicycle: 99%*

結果の出力画像はdarknetフォルダにpredictions.jpgという名前で保存される。

dog.png
有名なやつ。


3, CudaをインストールしてMake

1)nouveauを使用しないようにするため、blacklist-nouveau.confを作る
\$sudo vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

2)設定を反映させて再起動
\$sudo update-initramfs -u
\$reboot

3)
再起動後Ctrl+Alt+F3を押してコンソールにログイン
それか、SSHで入ってコピペした方が良いかも。

4)NVIDIAドライバーのインストール
http://download.nvidia.com 参照
\$wget http://download.nvidia.com/XFree86/Linux-x86_64/435.17/NVIDIA-Linux-x86_64-435.17.run
\$chmod a+x NVIDIA-Linux-x86_64-435.17.run
\$sudo ./NVIDIA-Linux-x86_64-435.17.run --no-opengl-files
インストーラが起動するのでDefaultで進む。

5)CUDAインストール
https://developer.nvidia.com
High Performanice ComputingからCuda tool kitの項目を参照
\$wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
\$chmod a+x cuda_10.1.243_418.87.00_linux.run
\$sudo sh cuda_10.1.243_418.87.00_linux.run --silent --no-opengl-libs --toolkit

6)環境変数の設定
始めにバージョンとパス確認=>/usr/local/cudaが有るかどうか確認しておく。
\$echo 'export PATH=/usr/local/cuda/bin:\$PATH' >> ~/.bashrc
\$echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:\$LD_LIBRARY_PATH' >> ~/.bashrc
\$source ~/.bashrc # CUDAのパスが書き込まれた~/.bashrcを読み込む。

PATHの確認(それぞれの結果に/usr/local/cudaが含まれていればOK)
\$echo \$PATH
\$echo \$LD_LIBRARY_PATH
\$which nvcc

7)GPUの確認
\$nvidia-smi
GPUがリストされればOK

8)CUDAでYolo v3をmake
\$cd darknet
\$vi Makefile(GPU=0を1にする。)
GPU=1
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
9)makeして再度試すとGPUを使用して検知が行われる
\$make
\$./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
GPU無しでも動かして比較するといかにGPUが有効かわかる。
\$./darknet -nogpu detect cfg/yolov3.cfg yolov3.weights data/dog.jpg


4, OpenCVのライブラリをインストールしてMake

OpenCVを正しくインストールすると結構ハマります。
取り急ぎ動かしたい場合はlibopencv-devだけでもOK。

\$sudo apt-get install libopencv-dev
\$cd darknet
\$vi Makefile (OPENCV=0も1にする。)
GPU=1
CUDNN=0
OPENCV=1
OPENMP=0
DEBUG=0
\$make

\$./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

すると別ウインドが出て、リアルタイムの物体検知が始まります。
detect.png


補足 (OpenCVを完全にインストールしたい場合)

1,OpenCVのインストール準備
\$sudo add-apt-repository 'deb http://security.ubuntu.com/ubuntu xenial-security main'
\$sudo apt-get update
\$sudo apt-get upgrade
\$sudo apt-get -y install checkinstall cmake unzip pkg-config yasm
\$sudo apt-get -y install git gfortran python3-dev
\$sudo apt-get -y install libjpeg8-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev \$libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
\$sudo apt-get -y install libjpeg-dev libpng-dev libtiff-dev libtbb-dev
\$sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libatlas-\$base-dev libxvidcore-dev libx264-dev libgtk-3-dev

2,OpenCVのコピー
\$cd /usr/local/src
\$git clone https://github.com/opencv/opencv.git
\$git clone https://github.com/opencv/opencv_contrib.git
\$cd opencv_contrib
\$git checkout -b 3.4.3 refs/tags/3.4.3
\$cd ../opencv/
\$git checkout -b 3.4.3 refs/tags/3.4.3

3,OpenCVのインストール
\$mkdir build
\$cd build
\$cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
\$make -j7
\$make install
\$echo /usr/local/lib > /etc/ld.so.conf.d/opencv.conf
\$ldconfig -v

4,上記手順 4, OpenCVのライブラリをインストールしてMake へ。
(あれ?これだけでよくね?
という事に後で気づきました。)

6
10
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
6
10