PythonでOpenCVを使用する際、一部の機能やモジュールはpip経由でインストールすると使用できません。その一つがGPUの利用です。しかし、公式ドキュメントや参考文献を見ながらOpenCVをC++からビルドすることで、PythonでGPUを使用できるようになります。
OpenCVとGPU
OpenCVでは、CUDAモジュールを使用することでNVIDIA GPUを活用できます。しかし、pipでインストールしたOpenCVではCUDAを使用することができません。したがって、CUDAを使用するためにはC++からオプションを指定してビルドしたものを使用する必要があります。
OpenCVのビルド
OpenCVのソースコードは公開されており、C++から実行することができます。ビルドはCMakeを使用しますが、その際にCUDAが使えるようにWITH_CUDNN
やWITH_CUDA
といったオプションをONにする必要があります。
以下に、Google Colaboratoryでのビルド手順を示します。
%cd /content
!git clone https://github.com/opencv/opencv
!git clone 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
このビルドは時間がかかりますので、ご注意ください。
OpenCVのインストール
ビルド後は、/content/opencv/build/lib/python3
以下にcv2.cpython-37m-x86_64-linux-gnu.so
が作成されます。これを保存し、必要に応じて呼び出すことで、GPUを使用することが可能になります。
!cp /content/build/lib/python3/cv2.cpython-37m-x86_64-linux-gnu.so /content/cv2.cpython-37m-x86_64-linux-gnu.so
!mkdir /content/drive/{your_saved_path}/cv2_with_GPU
!cp /content/cv2.cpython-37m-x86_64-linux-gnu.so /content/drive/{your_saved_path}/cv2.cpython-37m-x86_64-linux-gnu.so
!pip uninstall opencv-python -y
!cp "/content/drive/{your_saved_path}/cv2.cpython-37m-x86_64-linux-gnu.so" .
以上の手順で、PythonとOpenCVを用いてCUDAを活用することが可能になります。これにより、画像処理などの計算量が大きいタスクを高速化することができます。.