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_CUDNN
やWITH_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のビルド方法になります。この情報が役立つことを願っています。.