画像処理ライブラリのscikit-image
を簡単にCUDAで走らせるcucim
というものを見つけたので、試してみる。
https://developer.nvidia.com/blog/cucim-rapid-n-dimensional-image-processing-and-i-o-on-gpus/
https://docs.rapids.ai/api/cucim/nightly/api.html
なお、scikit-image
のすべてのサブモジュールが使えるわけではないようだ。
22/02/24現在、future.graph.merge_hierarchical
は使えない。
インストール
pip
が使えるなら、
先に、cupy
などの環境を整えておく必要があると思うが、
pip install cucim
で入るようだ。
conda
などの方法は、以下を参照。
numpyの配列 ⇔ cupyの配列の変換
numpy配列に入れた画像をcupy配列に入れてから用いるようである。
# numpy-array --> cupy-array
image_gpu = cp.asarray(image)
# cupy-array --> numy-array
image_cpu = cp.asnumpy(image_gpu)
例、ガウシアンフィルターと画像表示
import numpy as np
import cupy as cp
import cucim
from cucim.skimage.filters import gaussian
from skimage import data, img_as_float
from skimage.io import imread, imshow
import matplotlib.pyplot as plt
def gpu_imshow(image_gpu):
image = cp.asnumpy(image_gpu)
imshow(image)
plt.show()
image = img_as_float(data.camera())
image_gpu = cp.asarray(image)
blurred_gpu = gaussian(image_gpu, sigma=5)
gpu_imshow(blurred_gpu)
参考