Google ColabでGPU対応OpenCVをインストール

スポンサーリンク
processor 全般

みなさん、お久しぶりです。

本日は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コーディングを施す必要があります。

その辺りの詳細は今回は割愛します。

それでは!

コメント

タイトルとURLをコピーしました