python 機械学習ライブラリの正しい選び方【画像処理・画像認識】

6月 14, 2021

 

悩んでる人
pythonで画像処理をやりたいけど、種類が多くて何を使えばよいのかわからない。。

 

こんな悩みを解決します。

 

記事の内容

  • 画像処理でおすすめのライブラリ
  • 機械学習でおすすめのライブラリ・フレームワーク
  • ディープラーニングでおすすめのライブラリ・フレームワーク

 

記事の信頼性

この記事を書いている私は、ソフトウェア(画像処理)エンジニアとして自動車メーカーでC言語やpythonを使って製品開発をしています。

 

近年はAI(人工知能)の開発が注目を浴びていますが、機械学習やディープラーニングといった技術は、ライブラリやフレームワークを利用することで、効率よく実装できます。
使い方はそれほど難しくないので、学習にも使えます。

ただし、数多くのライブラリが公開されているので、どれを使えばよいのか混乱しますよね。。
本記事では、私がこれまでに使ってきた便利なライブラリを紹介します。
それぞれの特徴もわかりやすく解説しますので、どんな時にどのライブラリを使うべきなのかわかるようになりますよ。

 

画像処理でおすすめのライブラリ

画像処理をはじめるときに、とりあえず用意しておきたいライブラリを3つ紹介します。
これらは、画像処理の基本になる機能が実装されているので、機械学習やディープラーニングをやりたい方も、インストールしておいてください。

 

ライブラリ 特徴
OpenCV 画像や動画を処理するための基本的な機能が実装。
Scikit-image 画像処理に特化。OpenCVにはない機能があり、OpenCVとの相性はよい。
Pillow 画像のリサイズやトリミングなど簡単な画像処理だけならこれで十分。

 

 

OpenCV

 

 


OpenCV(Open Source Computer Vision Library)は、コンピュータビジョン向けのライブラリです。画像や動画を処理するための基本的な機能が実装されています。

画像の変換やフィルタリング、特徴点を使ったマッチング処理など、豊富な機能が使えるので、とても役に立ちますよ。

 

Scikit-image

 


Scikit-imageは、画像処理に特化したライブラリで、できることはOpenCVと似てます。特徴量などOpenCVでは提供されていない機能を使えるので、OpenCVとの相性はよいですね。

 

Pillow

 


Pillowは、簡単な画像処理ができるライブラリです。物体検出などコンピュータビジョン系の高度な処理はできず、画像のリサイズやトリミングなど基本的な処理のみ。

OpenCVとScikit-imageをインストールしておけば、基本的な画像処理はできます。

 

機械学習でおすすめのライブラリ・フレームワーク

次に、機械学習で使用するライブラリとフレームワークを紹介します。

自分で0から実装するのはとても時間がかかりますが、これから紹介するライブラリをうまく活用できるようになれば、やりたいことを簡単に実現することができます。

次の5つは、すべてインストールしておいて問題はないです。

 

ライブラリ 特徴
NumPy 大規模な多次元配列や行列の演算など数値計算を効率よく行える。
Pandas データの取り扱いが非常に楽になる。データの加工や分析などを効率よく行える。
Matplotlib 大規模なデータをグラフ化など様々な方法で可視化できる
SciPy NumPyよりも高度な数値計算(信号処理や統計など)ができる。
scikit-learn 機械学習で使用するアルゴリズム全般が提供されます。

 

NumPy

 


NumPyは、数値計算を速く効率よく行うためのライブラリで、大規模な多次元配列や行列演算が得意です。機械学習だけでなく、信号処理などさまざまなシーンで活用できます。

このあとに紹介するPandasやMatplotlibなどは、NumPyと一緒に使用しますので、まず最初にインストールしてください。

SciPyを使用することで、さらに高度な数値計算ができるようになるので、セットで入れておくとよいです。

 

Pandas

 


Pandasは、データ分析用のライブラリで、データの取り扱いが非常に楽になります。

データを表形式で扱えることが特徴で、大量のデータ処理(統合や整形など)を簡単に行えます。csvやテキストデータなど様々な形式での読み書きも可能です。

機械学習ではさまざまな形式のデータを大量に取り扱うので、前処理として使用されることが多いです。こちらも必ずインストールしておきましょう。

 

Matplotlib



Matplotlibは、データを可視化するためのライブラリです。機械学習のように大規模なデータを扱う際に、グラフ化など様々な方法で可視化することができ、分析しやすくなります。

 

SciPy

 


SciPyは、信号処理や統計などの高度な数値計算をするためのライブラリです。NumPyとできることは似ていますが、こちらはより高度な科学・工学のための計算ができます。

例えば、フーリエ変換や最適化、ベクトル量子化など。。

 

scikit-learn

 


scikit-learnは、機械学習で使用するアルゴリズム全般が提供されているライブラリです。クラスタリングや分類、回帰のアルゴリズムが充実していて、様々な機械学習のプログラムを簡単に実装できるようになるので初心者にも扱いやすいです。

機械学習の基盤となるライブラリです。
以下の参考書一冊あれば、基礎は身に付くので手元に置いておくとよいです。

 

 

 

ディープラーニングでおすすめのライブラリ・フレームワーク

次に、ディープラーニングで使用するライブラリとフレームワークを紹介します。

結論としては、TensorFlowかPyTorchのどちらかを使えばよいです。
ロジックを細かく把握したりなど研究寄りの使い方をしたい人はPyTorch、ブラックボックスな一面はあるがとりあえず簡単に実装してみたい人はTensorFlow(+Keras)を選んでください。

 

ライブラリ 特徴
TensorFlow ドキュメントが充実。学習時間が速く、大規模データを扱うのに向いている。Define and Run(ニューラルネットを構築したあとにデータ流す)
Keras 実装はシンプルでわかりやすいが、学習時間が遅いのが欠点。
PyTorch   シンプルで使いやすく、学習時間も早い。柔軟にモデルのカスタマイズができる。Define by Run(ニューラルネットを動的に構築)
Chainer 日本製。PyTorchと開発思想が近い。現在は開発終了し、PyTorchに移行。

 

TensorFlow



TensorFlowは、Googleが2015年に公開した機械学習ライブラリです。本記事で挙げたフレームワークの中では最も利用者が多く、ドキュメントも充実しているのでおすすめです。
学習時間が速く、大規模データを扱うのに向いています。

ただ、高レベルのAPIと低レベルのAPIの両方を提供していて、少しわかりにくいのと、実装も簡単とは言えません。
ただ、TensorFlow ver.2.0では、TensorFlowの中にKerasが統合されていますので、シンプルに扱えます。

初心者におすすめの参考書はこれですね。
基礎が身に付きます。

 

Keras

 


Kerasは、TensorFlow上で動く高レベルのAPIを提供するライブラリです。なので、実装はとてもシンプルで使いやすいです。プログラミングの経験がなくても実装できるレベルなので、ディープラーニングを気軽に始めてみたい初心者の方におすすめです。

 

PyTorch

 


PyTorchは、Facebookが2017年に公開した機械学習ライブラリです。比較的新しいですが、TensorFlowに匹敵するほど人気が高いです。シンプルで使いやすく、学習時間も早いです。
低レベルのAPIを提供しているので、細かくロジックをカスタマイズしたり処理の把握はしやすかったりします。
こちらは、研究目的で使用する方に合うと思います。

初心者におすすめの参考書はこれです。
基礎から学べます。

 

Chainer

 

 

Chainerは、日本の企業であるPrefferd Networksが2015年に公開した機械学習ライブラリです。PyTorchと開発思想が近いですが、Chainerの方がコードを書く量は多くなると思います。

現在、新機能の開発は終了していて、PyTouchに移行しています。
ただ、日本語で書かれたドキュメントが多いので、初めての方にはおすすめです。

 

 

-画像処理

© 2024 MONOwith