画像認識でよく使われるライブラリ一覧

概要

画像コンペ初参加につき、画像認識でよく使われているライブラリを調べました。
言語はPythonディープラーニング関連はPyTorchに限って記載してます。
今後も便利なライブラリを見つけ次第、追記していきますφ(・ω・ )



f:id:YukoIshizaki:20191014142122p:plain

画像処理全般

OpenCV

  • コンピュータビジョン用ライブラリ
  • 基本的な画像処理や特徴量検出
  • 高度処理、顔検出や動画解析ができる

opencv.org

Pillow

  • 軽量な画像処理ライブラリ
  • 基本的な画像処理、色空間変換や幾何学的変換ができる
  • OpenCVより機能が劣る

pillow.readthedocs.io

scikit-image

  • 画像処理用のアルゴリズム
  • 基本的な画像処理や特徴検出が出来る
  • 多彩なフィルターや検出器がある

scikit-image.org

速度比較

  • 画像の読み込み速度はscikit-imageが一番速い
  • リサイズや色彩変換の画像変換処理の速度はOpenCVが一番速い

PIL vs Opencv | Kaggle
【Python】画像処理の速度比較(scikit-image vs. OpenCV) | 加賀百万石ですが何か?
Pythonの画像読み込み: PIL, OpenCV, scikit-image - Qiita

ディープラーニング関連

torchvision

  • PyTorchの画像向けパッケージ
  • 画像認識向けのモデルアーキテクトや画像変換処理が備わっている

pytorch.org

データ拡張

Albumentation

  • データ拡張用ライブラリ
  • データ拡張バリエーションが多い
  • 処理速度も他のデータ拡張系ライブラリに比べて早い
  • torchvisionからの移行が容易

albumentations.readthedocs.io

imgaug

  • データ拡張用ライブラリ
  • データ拡張バリエーションが多い

imgaug.readthedocs.io

Augmentor

  • データ拡張用ライブラリ
  • Albumentationとimgaugに比べてデータ拡張のバリエーションが少ない

augmentor.readthedocs.io

コード比較

  • こちらに良き記事

towardsdatascience.com

速度比較

CPU 1コアで 1秒間に処理できる枚数なので、多い方が高速
f:id:YukoIshizaki:20191014123456p:plain
https://github.com/albu/albumentations#benchmarking-results

モデル

segmentation_models_pytorch

  • セグメンテーション用モデルが複数用意されている

pypi.org


f:id:YukoIshizaki:20191014230111p:plain

パイプライン関連

画像専用ではないですが、便利なライブラリをメモ。

Catalyst

  • ディープラーニングのパイプラインを簡単に作成するためのライブラリ
  • 学習ループと推論に特化
  • CatalystのエコシステムMLcamp、Reactionなどもある

github.com

fastai

  • ディープラーニングをより容易に実行するためのライブラリ
  • 主要なモデルも組み込まれており、Catalystよりもっと包括的にパイプラインが作れる
  • MixupのCallback関数がある

docs.fast.ai

速度向上

こちらも画像専用ではないですが、便利なライブラリなのでメモ。

Apex

  • 混合精度演算を使い、ディープラーニングの学習速度をあげるライブラリ
  • GPU上での処理を対象としておりCUDAが必要
  • メモリの使用量も削減出来る
  • 詳しい仕組みは以下論文参照

nvidia.github.io
arxiv.org

終わり

記憶力に自信がないので、忘れぬよう書いていこうと思います( •̀ᄇ• ́)ﻭ✧