0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu16.04にCUDAとOpenCV2.4を入れる

Posted at

はじめに

動画による行動認識を行うため、精度が良さそうなTwo-stream I3Dを使いたかった。独自のデータを使う必要があったので、オプティカルフローのデータを作る必要があるのでオプティカルフローを作成する環境が必要なので、Ubuntu上に作成した。

環境

今回はGCPのVMを使いました。

  • Ubuntu16.04
  • OpenCV2.4.10
  • CUDA8.0
  • NVIDIA Tesla K80

CUDAのインストール

nvidiaの公式ホームページからCUDA8.0をダウンロードします。OS等を選択するところがあるので、以下で選択してください。
Operating System: Linux
Architecture: x86_64
Distribution: Ubuntu
Version: 16.04
Install Type: deb(network)
選択するとダウンロードボタンが出るので、ダウンロードしてください。

sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt update
sudo apt install cuda-8-0

PATHの設定をしなければいけないので、以下を~/.bashrcに書き込み、sourceコマンドで再読み込み。

export PATH=/usr/local/cuda-8.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:${LD_LIBRARY_PATH}
source ~/.bashrc

CuDNNのインストール

nvidiaのディベロッパーサイトから以下の3つをダウンロード

  • cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)
  • cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)
  • cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)

以下のコマンドでインストール

sudo dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb

OpenCVのビルド

Opencv2系を入れられるものがあったので、そちらを利用します。

git clone https://github.com/jayrambhia/Install-OpenCV.git
cd Install-OpenCV/Ubuntu/2.4

このまま./opencv2_4_10.shの中身を変えます。
36行目に-D WITH_CUDA=ON -DBUILD_ZLIB=ON -DWITH_ZLIB=ONをオプション追加し、今回のGPUはTesla K80なのでCUDA_ARCH_BIN=3.7, CUDA_ARCH_PTX=3.7に変更。
参考
[https://developer.nvidia.com/cuda-gpus]
[https://answers.opencv.org/question/131451/errors-on-compile-ubuntu-1604/]

このままビルドしてもエラーがおきます。
nppiGraphcut missingのようなエラーが出ると思います。CUDA8ではgraphcutがサポートしなくなったためらしいです。[https://answers.opencv.org/question/95148/cudalegacy-not-compile-nppigraphcut-missing/]
graphcuts.cppファイルを変更してください。

graphcuts.cpp
# include "precomp.hpp"

# if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

以下に変更。

graphcuts.cpp
# include "precomp.hpp"

# if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)  || (CUDART_VERSION >= 8000)

これで./openc2_4_10.shでうまくビルドできると思います。

[これ][link-1]を実行する時に/usr/bin/ldのエラーが出ると思いますが、/usr/lib/x86_64-linux-gnu配下に/usr/local/cuda-8.0/targets/x86_64-linux/lib/配下にあるsoファイルのシンボリックリンクを貼れば動くはずです。

終わりに

別にオプティカルフローくらい普通にopencv3とか4でやれば苦労しなかったなと
改めてバージョンを意識しないといけないと感じました(小並感)
[link-1]:https://github.com/yangwangx/denseFlow_gpu

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?