1
0

More than 3 years have passed since last update.

ubuntu16.04に CUDA cuDNN YOLOv3_darknetのインストール

Last updated at Posted at 2019-10-18

目的

YOLOv3を使ってobject detectionをする。
前の記事で学習データの作り方と学習方法を書きましたが、この記事ではYOLOv3のインストール方法を書いていきます。
yolov3はROSにも対応していて、ROS上でも動かすことができるので、将来的にROS上で使うことも検討してdarknet_rosもインストールします。これはまた別の記事で。

ただopencv関連でめちゃくちゃ手こずったので、エラー奮闘記を後半に。

環境

ubunu16.04(ubuntu18.04でも確認済み)
ROS kinetic
Geforce 1080ti
Nvidia driver 384.

CUDAのインストール

今回YOLOはGPUを使ってやっていきたいので、CUDAとcuDNNもインストールします。
Nvidia driverのバージョンが384系なのでCUDA9.0をインストールします。
ここの対応はめちゃめちゃ大事です。間違えるとログインループに陥ります。

参考URL
https://qiita.com/min9813/items/90a1ef62b3dc37d0cc33
https://qiita.com/JeJeNeNo/items/b30597918db3781e20cf

CUDA Toolkit ダウンロードサイトからCUDA9.0 debを選択download(Network)
downloadしたdirで

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-toolkit-9-0

ここ大事。最後の部分は、sudo apt-get install cuda-9-0やcudaとすると、同梱されているnvidiaドライバーもインストールされるので注意。

そしてbashrcを編集して末尾にpathを加えておきます。

nano ~/.bashrc
## CUDA and cuDNN paths
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

反映して

source ~/.bashrc

これらのコマンドでCUDAの情報が現れればokです。

nvcc -V       -->CUDAの情報が現れればOK
echo $PATH             # 出力に"/usr/local/cuda-9.0/bin"が含まれているか?
echo $LD_LIBRARY_PATH  # 出力に"/usr/local/cuda-9.0/lib64"が含まれているか?
which nvcc             # 出力が"/usr/local/cuda-9.0/bin/nvcc"になっているか?
nvidia-smi             # nvidiaのGPUの情報が表示されているか?

cuDNNのインストール

cuDNNダウンロードサイトから自分のCUDAのバージョンに合ったcuDNNをダウンロードしてきます。
今回は7.1.4.18をダウンロードしました。
「Runtime Library」と「Developer Library」「Code Samples」の3つをダウンロード
ダウンロードしたフォルダに移動し下記を実行

sudo dpkg -i libcudnn7-dev_7.1.4.18-1+cuda9.0_amd64.deb 
sudo dpkg -i libcudnn7-doc_7.1.4.18-1+cuda9.0_amd64.deb 
sudo dpkg -i libcudnn7_7.1.4.18-1+cuda9.0_amd64.deb 

darknetのインストール

参考URL
https://qiita.com/k65c1/items/b80fd2af67a9880a0fd5
https://qiita.com/harmegiddo/items/c3db5fd567fa4c6cc9fb

cd workspace/
git clone https://github.com/pjreddie/darknet.git
cd darknet
nano Makefile

GPUを使うのでMakefileを修正します。

GPU=1
cuDNN=1
OPENCV=1 

そしてコンパイル

make

これでdarknetのディレクトリで./darknet を実行してエラーなしで出力されればokです。

$ ./darknet 
usage: ./darknet 

サンプル画像

darknet直下のフォルダにweightをダウンロードして実行すると、色々な%とdetectされた犬が出力されます。

wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

webカメラ

同じくdarknet直下で以下のコマンドを実行

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

エラー奮闘記

最初、犬の検出結果のpredictionが自動で表示されないかつ、webカメラを動かそうとするとopencvが見つからないというエラー発生

  •  /pkgconfig の中に opencv.pcがなく作成したけどうまく行かず
  •  /bash.bashrcの中にPATHを指定するところも見つからなかったどうなってるの?

自分でも意味不明の謎が…

参考にさせていただきました:bow:
https://qiita.com/MuAuan/items/8190b5f25e8a6f4491c1

結局

結局opencv.confをいじったり色々してみたけれど、opencvをアンインストールして再インストールしました..

opencvのアンインストール

opencvをインストールしたディレクトリの中で

cd opencv_ws/opencv/build
make clear
sudo make uninstall

そして、フォルダごとごみばこへ
さらに、usr/local のlibとincludeにある残骸を全部削除

実はこの方法で合っているのか分からないのですが、今のところ問題ないです。

opencvの再インストール

参考にさせていただきました:bow:
https://www.trifields.jp/how-to-install-opencv-on-ubuntu-2742
https://qiita.com/schwalbe1996/items/cfa9fde7ea2b825e4e6b
https://qiita.com/nakasuke_/items/51664807bdd7794db0da
https://github.com/intel/caffe/wiki/Ubuntu-16.04-or-15.10-OpenCV-3.1-Installation-Guide

関連パッケージ諸々をインストール

sudo apt-get install cmake libeigen3-dev libgtk-3-dev qt5-default freeglut3-dev \
libvtk6-qt-dev libtbb-dev ffmpeg libdc1394-22-dev libavcodec-dev libavformat-dev \
libswscale-dev libjpeg-dev libjasper-dev libpng++-dev libtiff5-dev \
libopenexr-dev libwebp-dev libhdf5-dev libpython3.5-dev python3-numpy \
python3-scipy python3-matplotlib libopenblas-dev liblapacke-dev

自分のworkspaceにディレクトリ作成&今回はgithubからバージョン指定してダウンロード

mkdir opencv3.3 && cd opencv3.3
wget https://github.com/opencv/opencv/archive/3.3.0.tar.gz
tar xvf 3.3.0.tar.gz
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j8
sudo make install

しかしここでエラー
こちらのissueの通りに、以下のコマンドで解決
https://github.com/pjreddie/darknet/issues/382

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'`
sudo ldconfig`

そしてもう一度

sudo make install

opencvあるのになぜか認識してくれず、色々試して…
ここまでが大変だったよぉ

おわりに

まぁ色々エラーが起きて一筋縄では行きませんでした。
結局opencvを再インストールしたわけですが、その方法も意外と分からず…
でも今は問題なく動いています、

1
0
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
1
0