トップページインストール,運用Ubuntu, WSL2OpenCV 4.5.2, OpenCV Contrib のビルドとインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu 上)

OpenCV 4.5.2, OpenCV Contrib のビルドとインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu 上)

Ubuntu で,OpenCV 最新版をソースコードからビルドして,インストールする手順をスクリーンショット等で説明する.

ユースケース.OpenCVは「apt install opencv-dev」で簡単にインストールできるが,OpenCV の最新版を追いかけたい場合.自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.

【目次】

  1. 前準備
  2. Ubuntu で OpenCV のビルドとインストール(OpenCV サイトから最新版をダウンロード)

OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.

【サイト内の OpenCV 関連ページ】

【OpenCV の公式情報】

前準備

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行.

Ubuntu のインストールは別ページで説明している

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)

インストールするには, 端末で,次のコマンドを実行.

sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv

Python 開発環境,Python コンソールJupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, spyder)のインストール(Ubuntu 上)

Ubuntu で,Python 開発環境,Python コンソールJupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, spyder)のインストールを行う.

jupyter qtconsole, nteract, JupyterLab, spyder は,次のコマンドで起動できる.

Ubuntu では,端末で,次のコマンドを実行.

sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv
sudo pip3 uninstall ptyprocess sniffio terminado tornado jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder
sudo apt -y install jupyter jupyter-qtconsole spyder3
sudo apt -y install python3-ptyprocess python3-sniffio python3-terminado python3-tornado 
sudo pip3 install -U jupyterlab nteract_on_jupyter

git, wget, p7zip-full のインストール

  1. 端末を開く
  2. git, wget, p7zip-full のインストール

    端末で,次のコマンドを実行.

    sudo apt -y update
    sudo apt -y install git wget p7zip-full
    

cmake 最新版のインストール

手間は少しかかるが,後ほど OpenCV で cmake するときのエラー(ファイルをダウンロードできないエラー)を回避するために, cmake 最新版をインストールする.

端末で,次のコマンドを実行.

sudo apt -y update
sudo apt -y install build-essential
# cmake には curl, zlib が必要
sudo apt -y install zlib1g-dev libcurl4-gnutls-dev
cd /tmp
git clone https://github.com/Kitware/CMake.git
cd CMake
./configure --system-curl --system-zlib
make
sudo make install

C/C++ コンパイラー,make,パッケージツール,qt5-qmake のインストール

端末で,次のコマンドを実行.

sudo apt -y update
sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
sudo apt -y install qt5-qmake

Intel Performance ライブラリのインストール

Intel Performance ライブラリを使いたいときは,インストールしておく (必ずしもインストールする必要はない)

Inter Performance ライブラリのインストールは,別ページで説明している.

(NVIDIA グラフィックス・カードを使うとき)NVIDIA ドライバのインストール

  1. NVIDIA グラフィックス・カードの確認

    CUDA 対応の GPU であるかを確認のため, 端末で,次のコマンドを実行.

    (表示が空になるときは,NVIDIAのグラフィックス・カードが無い可能性がある).

    lspci | grep -i nvidia | grep VGA
    

    [image]
  2. nouveau ドライバの無効化

    端末で,次のコマンドを実行.

    echo 'blacklist nouveau' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
    echo 'options nouveau modeset=0' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
    cat /etc/modprobe.d/blacklist-nouveau.conf
    sudo update-initramfs -u
    

    [image]
  3. NVIDIA グラフィックスドライバとNVIDIA CUDA ツールキットのアンインストール

    NVIDIA グラフィックスドライバのインストール,NVIDIA CUDA ツールキットがインストールされていた場合には,アンイントールする. 端末で,次のコマンドを実行.

    dpkg -l | grep cuda 
    sudo apt --purge remove nvidia-*
    sudo apt --purge remove cuda-*
    sudo apt autoremove
    
  4. カーネルヘッダーと,カーネル開発用パッケージのインストール

    端末で,次のコマンドを実行.

    sudo apt -y update
    sudo apt -y install linux-headers-$(uname -r)
    
  5. NVIDIA グラフィックスドライバのインストール操作

    Ubuntu 20.04 で実際に試したところ「sudo ubuntu-drivers autoinstall」を用いて NVIDIA グラフィックスドライバをインストールするのが最も安定しているようである.

    端末で,次のコマンドを実行.

    sudo apt -y update
    sudo apt upgrade
    sudo apt dist-upgrade
    ubuntu-drivers devices
    sudo ubuntu-drivers autoinstall
    sudo update-initramfs -u
    
  6. Ubuntu システムの再起動

    グラフィックスドライバが入れ変わったので,Ubuntu システムを再起動する.

    端末で,次のコマンドを実行.

    sudo /sbin/shutdown -r now
    

    [image]
  7. NVIDIA グラフィックスドライバの確認

    システムの再起動後,端末で,次のコマンドを実行し,ドライバ等を確認する

    先頭の「Driver Version」のところに,ドライバのバージョンが表示される.

    nvidia-smi
    

    [image]

(NVIDIA GPU を使うとき)NVIDIA CUDA ツールキット 11.0 のインストール

CUDA は,NVIDIA社が提供している GPU 用のプラットフォームである.

NVIDIA CUDA ツールキットの URL: https://developer.nvidia.com/cuda-toolkit-archive

指定されているバージョンより高いものは使わない. その根拠は次のページ. URL: https://www.tensorflow.org/install/source#common_installation_problems

Ubuntu での NVIDIA CUDA ツールキットのインストール: 別ページで説明している.

(NVIDIA GPU を使うとき)NVIDIA cuDNN のインストール

NVIDIA グラフィックス・カードがある場合に限り, インストールを行うこと.

NVIDIA 機械学習パッケージレポジトリからダウンロードして,インストールするという手順を説明する.

NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/

Ubuntu 20.04 の場合

  1. NVIDIA 機械学習パッケージレポジトリで,ファイル名を確認

    NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/

    Ubuntu 20.04 の場合は,https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/ で確認.

    スクロールして「nvidia-machine-learning-repo ・・・」を探す

    [image]
  2. NVIDIA 機械学習パッケージレポジトリを,Ubuntu システムに追加

    端末で,次のように操作する. このとき,確認したファイル名を指定すること

    cd /tmp
    wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
    sudo dpkg -i nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb
    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
    sudo apt -y update
    
  3. パッケージ名の確認
    apt-cache search cudnn
    

    [image]
  4. いま確認したパッケージ名を指定して,NVIDIA cuDNN のインストール
    sudo apt -y update
    sudo apt -y install libcudnn8 libcudnn8-dev
    
  5. インストールされたパッケージの確認
    dpkg -l | grep cuda 
    

Ubuntu 18.04 の場合

  1. NVIDIA 機械学習パッケージレポジトリで,ファイル名を確認

    NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/

    Ubuntu 18.04 の場合は,https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/ で確認.

    スクロールして「nvidia-machine-learning-repo ・・・」を探す

    [image]
  2. NVIDIA 機械学習パッケージレポジトリを,Ubuntu システムに追加

    端末で,次のように操作する. このとき,確認したファイル名を指定すること

    cd /tmp
    wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
    sudo dpkg -i nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
    sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
    sudo apt -y update
    
  3. パッケージ名の確認
    apt-cache search cudnn
    

    [image]
  4. いま確認したパッケージ名を指定して,NVIDIA cuDNN のインストール
    sudo apt -y update
    sudo apt -y install libcudnn7 libcudnn7-dev
    
  5. インストールされたパッケージの確認
    dpkg -l | grep cuda 
    

Ubuntu で OpenCV のビルドとインストール

  1. 前提ソフトウエア類

    端末で,次のコマンドを実行.

    sudo apt -y build-dep libopencv-dev
    sudo apt -y install openalpr openalpr-utils libopenalpr-dev
    sudo apt -y install openni2-utils libopenni2-dev
    sudo apt -y install libpcl-dev
    sudo apt -y install libguava-java
    sudo apt -y install python3-dev pylint3 flake8 python3-flake8
    sudo apt -y install libjasper-dev libleveldb-dev liblmdb-dev 
    sudo apt -y install libatlas-base-dev libopenblas-dev liblapack-dev libtbb-dev libeigen3-dev
    
  2. ソースコードのダウンロードと cmake の実行

    端末で,次のコマンドを実行. 「/usr/local/cuda-11.4」のところは,NVIDIA CUDA ツールキット をインストールしたディレクトリに読み替えること.

    NVIDIA グラフィックスドライバ (https://www.nvidia.com/download/index.aspx), NVIDIA CUDA ツールキット 11.4,NVIDIA cuDNN 8.2 のインストール: 別ページで説明している.

    Intel MKL を使いたいときは「-DUSE_MKL=ON」に設定する.このとき, 「/opt/intel/compilers_and_libraries_2020.0.166/linux/mkl/include」のところは,Intel MKL の mkl.h があるディレクトリに読み替えること.Intel MKL のインストールのインストールは,別ページで説明している.

      cd /usr/local
      sudo rm -rf opencv
      sudo git clone https://github.com/opencv/opencv.git
      sudo chown -R ${USER} /usr/local/opencv
      cd /usr/local
      sudo rm -rf opencv_contrib
      sudo git clone https://github.com/opencv/opencv_contrib.git
      sudo chown -R ${USER} /usr/local/opencv_contrib
      cd /usr/local/opencv
      sudo rm -rf build
      sudo mkdir build
      sudo chown -R ${USER} /usr/local/opencv/build
      cd build
      CUDA_PATH="/usr/local/cuda-11.4" CFLAGS="-I/usr/local/cuda-11.4/include -I/opt/intel/compilers_and_libraries/linux/mkl/include" LDFLAGS="-L/usr/local/cuda-11.4/lib64" \
      cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D OPENCV_EXTRA_MODULES_PATH=/usr/local/opencv_contrib/modules \
      -D OpenBLAS_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \
        -D OpenBLAS_LIB=/usr/lib/x86_64-linux-gnu/libopenblas.so \
      -D INSTALL_TESTS=ON \
      -D INSTALL_C_EXAMPLES=ON \
      -D WITH_PYTHON=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D BUILD_opencv_python2=OFF \
      -D BUILD_opencv_python3=ON \
      -D PYTHON_DEFAULT_EXECUTABLE=python3 \
      -D WITH_MKL=ON \
      -D WITH_CUDA=ON \
      -D CUDA_FAST_MATH=ON \
      -D WITH_CUBLAS=ON \
      -D WITH_CUDNN=ON \
      -D WITH_NVCUVID=OFF \
      -D OPENCV_DNN_CUDA=OFF \
      -D BUILD_opencv_cudaimgproc=OFF \
      -D BUILD_EXAMPLES=ON ..
    #   -D CUDA_ARCH_PTX=7.5 \
    

    補足説明

    • MKL (Intel Math Kernel Library) を使わないときは「-D WITH_MKL=OFF
    • NVIDIA CUDA使わないときは,次の設定を外す
        -D WITH_CUDA=ON \
        -D CUDA_FAST_MATH=ON \
        -D WITH_CUBLAS=ON \
        -D WITH_CUDNN=ON \
        -D WITH_NVCUVID=OFF \
        -D OPENCV_DNN_CUDA=ON \
        -D CUDA_ARCH_PTX=7.5 \
        -D BUILD_opencv_cudaimgproc=OFF \
      
    • 「-DCUDA_ATCH_PTX=7.5」は,CUDA PTX 7.5 用のみをビルドすることにして,ビルド時間短縮のためなので,問題があれば外す
    • cmake のオプションについては「ccmake ..」で確認できる
    • 古いバージョンである OpenCV 3.4.1ubuntu 18.04 でビルドするとき 「unsupported GNU version! gcc version later than 6 are not supported!」というエラーが出る場合がある. このエラーを回避するために,次のコマンドを実行する
      CC=gcc-6 CXX=g++-6 cmake -D CMAKE_BUILD_TYPE=RELEASE \
            -D CMAKE_INSTALL_PREFIX=/usr/local \
            -D INSTALL_PYTHON_EXAMPLES=ON \
            -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib/modules \
            -D BUILD_opencv_python3=ON \
            -D PYTHON_DEFAULT_EXECUTABLE=python3 \
            -D BUILD_EXAMPLES=ON ..
      
  3. cmake の結果の確認

    エラーメッセージが出ていないこと

    [image]
  4. ビルド

    端末で,次のコマンドを実行.

    cd /usr/local/opencv/build
    CUDA_PATH="/usr/local/cuda-11.4" CFLAGS="-I/usr/local/cuda-11.4/include" LDFLAGS="-L/usr/local/cuda-11.4/lib64" \
    make -j4
    

    [image]
  5. ビルドの結果の確認

    エラーメッセージが出ていないことを確認

    [image]
  6. インストール

    端末で,次のコマンドを実行.

    sudo make install
    sudo /sbin/ldconfig
    
  7. インストールの結果の確認

    エラーメッセージが出ていないことを確認

    [image]
  8. バージョン確認

    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.

    python3 -c "import cv2; print( cv2.__version__ )"
    

    [image]
  9. プログラムを動かしてみる

    Python プログラムを動かす.

    Python プログラムを動かすために, Windows では「python」, Ubuntu では「python3」などのコマンドを使う.

    あるいは, 開発環境や Python コンソール(Jupyter Qt ConsoleSpyderPyCharmPyScripter など)の利用も便利である.

    あるいは,オンラインで動くGoogle Colaboratory のノートブックの利用も,場合によっては便利である.

    import cv2
    CVSAMPLEDAT="/usr/local/share/opencv4/samples/data/"
    bgr = cv2.imread(CVSAMPLEDAT + "fruits.jpg")
    cv2.imshow("", bgr)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる

    [image]