LoginSignup
10
7

More than 3 years have passed since last update.

Docker(Ubuntu18.04+CUDA10.1+cudnn7)でOpenCV4.1.1インストールするメモ

Last updated at Posted at 2019-09-01

修正履歴

  • 2019/12/05 コメントで提案いただいた内容を反映しました。
  • 2019/12/05 fix typo

概要

  1. NVIDIA Driverのインストール
  2. dockerのインストール
  3. nvidia-dockerのインストール
  4. docker image(nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04)のpull
  5. docker runしてOpenCV4.1.1のインストール
  6. docker imageにcommit

前提

  • Ubuntu16.04へのOpenCV 3.3.0インストールメモから1年以上経ってOpenCVのメジャーバージョンも上がったので。
  • 作業したノートパソコンでは、「Intel® HD Graphics」で画面表示しないと、ログインループが発生したので表示は「Intel® HD Graphics」、計算等にNVIDIA GPUを使うことにしました。
  • コピペで動くようにコマンドはそのまま貼りつけています。
    • historyから抽出して貼り付けているので、間違っているかも...
  • 不要なパッケージも入るけれどとりあえず動けばOK。
  • nvidia-dockerでnvidia/cudaレポジトリのimageにOpenCVをインストールします。

環境

  • 環境は下表の通り。
Name Version
OS(host) Ubuntu 18.04.3 LTS (Bionic Beaver)
CPU Intel® Core™ i5-8300H CPU @ 2.30GHz × 8
kernel Linux 5.0.0-23-generic
GPU NVIDIA GeForce GTX 1050

前準備

NVIDIA Driverのインストール

runファイルのダウンロード

install

sudo apt update
sudo apt install build-essential
sudo bash NVIDIA-Linux-x86_64-430.40.run --no-opengl-files
sudo prime-select intel

Dockerのインストール

packageのダウンロード

sudo apt install wget
wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/containerd.io_1.2.6-3_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce-cli_19.03.1~3-0~ubuntu-bionic_amd64.deb
wget https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_19.03.1~3-0~ubuntu-bionic_amd64.deb

install

  • ダウンロードしたパッケージを以下のコマンドでインストール
sudo dpkg -i containerd.io_1.2.6-3_amd64.deb 
sudo dpkg -i docker-ce-cli_19.03.1~3-0~ubuntu-bionic_amd64.deb 
sudo dpkg -i docker-ce_19.03.1~3-0~ubuntu-bionic_amd64.deb 

確認

sudo docker --version
  • 以下のようにダウンロードしたバージョンが表示されればインストール完了
出力
Docker version 19.03.1, build 74b1e89

インストール後の設定

ユーザーをdockerグループへ追加

sudo usermod -aG docker $USER

一度ログアウト

gnome-session-quit --logout --no-prompt

確認

  • ログイン後、sudo無しでdockerを利用できるか確認する。
docker --version

nvidia-dockerのインストール

install

sudo apt install curl
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey |   sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list |   sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt-get install -y nvidia-container-toolkit

確認とpull

docker run --gpus 1 nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 nvidia-smi

OpenCVのインストール

  • Docker imageはnvidia/cuda:10.1-cudnn7-devel-ubuntu18.04を使用
  • ソースコードのダウンロードは省略
  • ソースコードはホスト側に保存
    • OpenCVの保存先/data/opencv-4.1.1
    • contribの保存先/data/opencv-4.1.1/opencv_contrib-4.1.1

containerの起動

  • GUIを使えるようにオプションを指定
docker run --gpus 1 -it --rm --name opencv -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix -v /data/:/data nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04

(container内)依存パッケージ等のinstall

  • Ubuntu 16.04のときとの変更点は以下
    • libjasperがなくなった。
    • pythonのバージョンアップ
apt update
apt 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 libpng++-dev libtiff5-dev \
libopenexr-dev libwebp-dev libhdf5-dev libpython3.6-dev python3-numpy \
python3-scipy python3-matplotlib libopenblas-dev liblapacke-dev

(container内)CMakeの実行

mkdir /data/opencv-4.1.1/build && cd /data/opencv-4.1.1/build
cmake -G "Unix Makefiles" --build . -D BUILD_CUDA_STUBS=OFF -D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=ON -D BUILD_JASPER=OFF -D BUILD_JPEG=OFF -D BUILD_OPENEXR=OFF \
-D BUILD_PACKAGE=ON -D BUILD_PERF_TESTS=OFF -D BUILD_PNG=OFF -D BUILD_SHARED_LIBS=ON \
-D BUILD_TBB=OFF -D BUILD_TESTS=OFF -D BUILD_TIFF=OFF -D BUILD_WITH_DEBUG_INFO=ON \
-D BUILD_ZLIB=OFF -D BUILD_WEBP=OFF -D BUILD_opencv_apps=ON -D BUILD_opencv_calib3d=ON \
-D BUILD_opencv_core=ON -D BUILD_opencv_cudaarithm=ON -D BUILD_opencv_cudabgsegm=ON \
-D BUILD_opencv_cudacodec=ON -D BUILD_opencv_cudafeatures2d=ON \
-D BUILD_opencv_cudafilters=ON -D BUILD_opencv_cudaimgproc=ON -D BUILD_opencv_cudalegacy=ON \
-D BUILD_opencv_cudaobjdetect=ON -D BUILD_opencv_cudaoptflow=ON \
-D BUILD_opencv_cudastereo=ON -D BUILD_opencv_cudawarping=ON -D BUILD_opencv_cudev=ON \
-D BUILD_opencv_features2d=ON -D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_imgcodecs=ON -D BUILD_opencv_imgproc=ON -D BUILD_opencv_java=OFF \
-D BUILD_opencv_ml=ON -D BUILD_opencv_objdetect=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D BUILD_opencv_shape=ON \
-D BUILD_opencv_stitching=ON -D BUILD_opencv_superres=ON -D BUILD_opencv_ts=ON \
-D BUILD_opencv_video=ON -D BUILD_opencv_videoio=ON -D BUILD_opencv_videostab=ON \
-D BUILD_opencv_viz=OFF -D BUILD_opencv_world=OFF -D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_1394=ON -D WITH_CUBLAS=ON -D WITH_CUDA=ON -D WITH_CUFFT=OFF -D WITH_EIGEN=ON \
-D WITH_FFMPEG=ON -D WITH_GDAL=OFF -D WITH_GPHOTO2=OFF -D WITH_GIGEAPI=OFF \
-D WITH_GSTREAMER=OFF -D WITH_GTK=ON -D WITH_INTELPERC=OFF -D WITH_IPP=ON -D WITH_IPP_A=OFF \
-D WITH_JASPER=ON -D WITH_JPEG=ON -D WITH_LIBV4L=ON -D WITH_OPENCL=ON \
-D WITH_OPENCLAMDBLAS=OFF -D WITH_OPENCLAMDFFT=OFF -D WITH_OPENCL_SVM=OFF \
-D WITH_OPENEXR=ON -D WITH_OPENGL=ON -D WITH_OPENMP=OFF -D WITH_OPENNI=OFF -D WITH_PNG=ON \
-D WITH_PTHREADS_PF=OFF -D WITH_PVAPI=OFF -D WITH_QT=ON -D WITH_TBB=ON -D WITH_TIFF=ON \
-D WITH_UNICAP=OFF -D WITH_V4L=OFF -D WITH_VTK=OFF -D WITH_WEBP=ON -D WITH_XIMEA=OFF \
-D WITH_XINE=OFF -D WITH_LAPACKE=ON -D WITH_MATLAB=OFF -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.1.1/modules/ ..

(container内)build

make -j4
sudo make install

(container内)確認

python3 -c 'import cv2;print(cv2.__version__)'
  • 以下のように表示されれば完了
出力
4.1.1

commit

  • デタッチしてcommit
docker commit opencv test/opencv:4.1.1-ubuntu1804

commitの確認

  • docker imagesで確認する。
出力
REPOSITORY          TAG                             IMAGE ID            CREATED             SIZE
nvidia/cuda         10.1-cudnn7-devel-ubuntu18.04   1dc5cbc98312        4 weeks ago         3.6GB
test/opencv         4.1.1-ubuntu1804                ************        *                   *GB
10
7
1

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