みなさん、お久しぶりです。
本日はGoogle ColabでGPU対応OpenCVをインストールする方法を紹介します。
how to make openCV use GPU on google colab - OpenCV Q&A Forum
I'm trying to make OpenCV use GPU on google Colab but I can' find any good tutorial what I fond is a tutorial for Ubuntu I followed these steps Step 1: Install ...
本日はこちらのページを参考しました。
ただ少し、はっきりと書かれていないところがあったので整理してみました。
Google ColabでGPU対応OpenCVをインストールする3ステップ
STEP 1. GPU対応でOpenCVをコンパイル
ここかなり時間がかかります!気長に待ちましょう。
%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
STEP 2. 今後のために.soファイルをGoogle Driveへ移動
ランタイムが初期化されたらコンパイルし直しは辛いので、Google Driveに保存をしておきましょう。
この際に気づいたのですが、Google Colabのファイルブラウザ上では.soファイルは表示されません。
なので以下のようにシェルコマンドを使って作業をしましょう。
# Google Driveをマウントします。
from google.colab import drive
drive.mount('/content/drive/', force_remount=True)
# ランタイムが初期化されたらコンパイルし直しは辛いので、cv2_cudaディレクトリに"cv2.so"として保存します。
!mkdir "/content/drive/My Drive/cv2_cuda"
!cp /content/build/lib/python3/cv2.cpython-36m-x86_64-linux-gnu.so /content/drive/My Drive/cv2_cuda/cv2.so
# ランタイムが初期化されたり新規でNotebookを立ち上げて作業する場合、こんな感じで読み込む(Google Driveはマウント済みであること)
!cp /content/drive/My Drive/cv2_cuda/cv2.so /content/
STEP 3. OpenCVがGPUを認識したか確認
import cv2
とすると、カレントディレクトリ(/content/)のcv2.soからopencvを読み込んでくれます。
ですので、
import cv2
cv2.cuda.getCudaEnabledDeviceCount()
を実行して表示されるGPUコア数が”1″以上であればOpenCVがGPUを認識したことになります。
サンプル:OpenCVでリサイズをGPU処理させる
import cv2
img = cv2.imread(file)
# GPU演算領域の確保
cuda_image = cv2.cuda_GpuMat()
cuda_dst = cv2.cuda_GpuMat()
# GPU演算領域に展開
cuda_image.upload(img)
# GPU上でリサイズ
cuda_dst = cv2.cuda.resize(cuda_image, (resized_width, resized_height), interpolation = cv2.INTER_NEAREST)
# CPUに戻す
img = cuda_dst.download()
# 保存(JPEGで保存の例)
cv2.imwrite(output_path, img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
GPU用関数はcv2.cuda.〜() となっていることが多いですが、まだ全ての関数がGPUで動くようにはなっていないようなので注意が必要です。
まとめ
以上、簡単ですがGoogle ColabでGPU対応OpenCVをインストールする方法でした。
また、GPU対応した後にはサンプルにあるようにCUDAコーディングを施す必要があります。
その辺りの詳細は今回は割愛します。
それでは!
コメント