\

PythonでOpenCVを使う場合、pipを使ってインストールすると、CUDAを使用することができません。しかし、OpenCVをC++からビルドすることで、PythonでGPUを使用できるようになります。

OpenCV with GPU

OpenCVでGPUを使うことができます。具体的には、OpenCVで用意されているCUDAモジュールを使用することで、NVIDIA GPUを使うことができます。

pipでインストールしたOpenCVには制限がある?

pipでOpenCVをインストールすると、CUDAを使用することができません。CUDAを使用するには、C++からオプションを指定してビルドしたものを使う必要があります。

C++からビルドって何の話?

OpenCVのソースコードは公開されており、C++から実行することができます。ビルドはCMakeを使用しますが、その際にCUDAが使えるように、WITH_CUDNNWITH_CUDAといったオプションをONにする必要があります。

OpenCVをビルドする

ビルドは時間がかかりますが、以下のソースコードで問題ないと思います。

%cd /content
!git clone [5](https://github.com/opencv/opencv)
!git clone [6](https://github.com/opencv/opencv_contrib)
!mkdir  /content/build
%cd /content/build
# オプションの指定
!cmake  -DOPENCV_EXTRA_MODULES_PATH=/content/opencv_contrib/modules   -DBUILD_SHARED_LIBS=OFF   -DBUILD_TESTS=OFF   -DBUILD_PERF_TESTS=OFF  -DBUILD_EXAMPLES=OFF  -DWITH_OPENEXR=OFF  -DWITH_CUDA=ON  -DWITH_CUBLAS=ON  -DWITH_CUDNN=ON  -DOPENCV_DNN_CUDA=ON /content/opencv
!make  -j8 install

ビルド後は /content/opencv/build/lib/python3 以下に cv2.cpython-37m-x86_64-linux-gnu.so が作成されています。

ビルド済みのOpenCV(GPU対応)を呼び出す

!cp "/content/drive/{your_saved_path}/cv2.cpython-37m-x86_64-linux-gnu.so" .

ランタイムを再起動して import して getCudaEnabledDeviceCount の結果を確認して1がでればOKです。

import cv2
print(cv2.cuda.getCudaEnabledDeviceCount()) # 結果が1であればOK
cv2.__version__

以上がPythonとCUDAを活用したOpenCVのビルド方法になります。この情報が役立つことを願っています。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です