【Python】pillow-simdによる画像読み込みの高速化
ディープラーニングのモデルをネットから拾ってくると、画像読み込みにopencvが使われているケースやpillowが使われているケースがあります。自分は使い慣れている/速いという理由でopencvを使ってもらえると助かるのですが、pillowが使われているケースもあり、pillowはopencvと比較して画像読み込み時間が長く、学習に時間がかかって困る時があります。
pillow部分をopencvに書き直す手もありますが、それが面倒という場合もあり、pillow-simdというライブラリを使えばプログラムを書き換えることなく画像読み込みを高速化できると聞いたので試してみます。しかし、pillow-simdはWindowsをサポートしていないのか、インストールでエラーが出ましたが、issueに回避策を見つけた人がいるのでそれに倣いひとまずインストールして試します。
pip uninstall pillow pip install --upgrade pillow-simd --global-option="build_ext" --global-option="--disable-jpeg" --global-option="--disable-zlib"
4000×3000の画像を読み込んでみたところ、むしろopencvのimreadよりpillow-simdの方が速そうです。
import cv2 from PIL import Image import time start = time.time() image = Image.open('pic.bmp') # Case pillow-simd: time = 78msec #image = cv2.imread('pic.bmp') # Case opencv: time = 93msec end = time.time() print(str(end - start))