画像認識

画像認識とは、画像や動画に写っているオブジェクトや特徴を識別するプロセスのことです。画像認識は、欠陥検出、医用画像処理、セキュリティ監視など多くの用途に使用されています。

画像認識が重要な理由

画像認識を使用すると、作業を省力化し、手作業による画像検査よりも速く、あるいはより正確に画像を処理できます。画像認識は多くのアプリケーションに不可欠の技術であり、以下のようなディープラーニングを使用したアプリケーションの主な原動力となっています。

  • 外観検査: 製造時に部品の不良品/良品を識別することで、組み立てラインで何千個もの部品をすばやく検査できます。
  • 画像分類: 画像コンテンツに基づいて画像を分類します。これは特に、画像検索や電子商取引におけるレコメンドシステムなどのアプリケーションに有効です。
  • 自動運転: 自動運転アプリケーションには、画像中の一時停止標識や歩行者を認識する機能が不可欠です。
  • ロボティクス: 画像認識は、ロボットがオブジェクトを識別し、経路上の位置情報やオブジェクトを特定することによる、自律航法の機能拡張に使用できます。
部品欠陥の外観検査アプリケーションにおける画像認識。

部品欠陥の外観検査アプリケーションにおける画像認識。

これらのアプリケーションの中心的な基盤となる技術が画像認識です。画像中のオブジェクトやシーンを識別し、その情報を使用して大規模なシステムの一部として意思決定を行うものです。画像認識は、これらのシステムの認識力を高め、本質的にはシステムに洞察をもたらすことでより良い意思決定を可能にしています。

画像認識とオブジェクト検出

画像認識とオブジェクト検出は類似した手法で、多くの場合は併用されます。画像認識では、画像中に存在するオブジェクトやシーンを識別し、オブジェクト検出では、画像中のオブジェクトのインスタンスと位置情報を検出します。

一般的なオブジェクト検出手法には、Faster R-CNN や YOLOv3 があります。

画像認識 (左) とオブジェクト検出 (右)。

画像認識 (左) とオブジェクト検出 (右)。

仕組み

画像認識の手法

画像認識には、機械学習やディープラーニングなど、さまざまな手法があります。どの手法を使用するかは用途によりますが、一般的には、問題が複雑であればあるほど、ディープラーニング手法を検討する可能性が高くなります。

ディープラーニングを使用した画像認識

画像認識のためのディープラーニング手法では、サンプル画像から関連する特徴を自動的に学習し、新しい画像でその特徴を自動的に識別する、畳み込みニューラル ネットワークを使用できます。

画像認識の一般的なディープラーニングワークフローは以下のとおりです。

prepare-training-data

学習データの準備: 画像の収集から始め、それらを関連するカテゴリにまとめます。また、より正確なモデルを作成するために、画像の整合性を向上させるための前処理を行うこともできます。

create-deep-learning-model

ディープラーニングモデルの作成: ディープラーニング モデルをゼロから構築することもできますが、アプリケーションの開始点として使用できる事前学習済みモデルから始めることをお勧めします。(詳細は事前学習済みモデルを参照してください。)

train-the-model

モデルの学習: モデルの学習では、テストデータをモデルに与えます。その後、モデルはデータを何度も反復し、画像に関連する最も重要な特徴を自動的に学習します。学習が進むにつれて、モデルはより高度な特徴を学習し、学習セットに含まれる画像のクラス間を正確に解読できるようになるまで学習します。

test-data

テストデータ: モデルがこれまでに学習したことのない新しいデータでテストを行い、モデルが画像をどう認識するか確認します。結果が予想と異なる場合は、より許容できる精度が得られるまで、上記の 4 つの手順を繰り返してください。

ディープラーニングの手法は複雑そうに聞こえるかもしれませんが、簡単な例を使用すれば、すぐに始めてこの技術に関する知識を深めることができます。

ヒント: ディープラーニングの手法は、高い精度と堅牢性をもつ結果が得られることから、画像認識に多く使用されています。ディープラーニングは、大量の学習データを使用することで最適な学習効果が得られることが多く、転移学習などの手法により画像認識ワークフローを簡略化できます。 Deep Learning Toolbox™ には、アルゴリズム、事前学習済みモデル、アプリを使用したディープ ニューラル ネットワークの設計と実装のためのフレームワークが用意されています。

機械学習を使用した画像認識

機械学習を使用した画像認識では、画像から主要な特徴を識別して抽出し、機械学習モデルへの入力として使用します。

  • データの学習: 画像の収集から始め、それらを関連するカテゴリにまとめます。
  • 特徴の抽出: 各画像で関連性のある特徴を選択します。特徴抽出アルゴリズムでは、データのクラスを区別するために使用できるエッジやコーナーの特徴を抽出する場合があります。
  • 機械学習モデルの作成: これらの特徴は機械学習モデルに追加されます。機械学習モデルは、これらの特徴をカテゴリ別に分類し、その情報を新たなオブジェクトを解析し、分類する場合に使用します。
機械学習のワークフロー

画像認識向け機械学習のワークフロー。

機械学習アルゴリズムや特徴抽出には多くの手法があり、それらをさまざまに組み合わせて正確なオブジェクト認識モデルを作成できます。

機械学習の例

HOG 特徴と SVM 分類器を使用して数字を分類する機械学習による画像認識の例。

ヒント: オブジェクト認識に機械学習を使用することで、学習に最適な特徴と分類器の組み合わせを柔軟に選択できます。最小限のデータで正確な結果を得ることができます。Statistics and Machine Learning Toolbox™ には、データを記述、解析、およびモデル化する関数やアプリが用意されています。

画像認識: ディープラーニングと機械学習

画像認識にディープラーニングと機械学習のどちらを使用するかは、どのようにして決めればよいでしょうか。大まかにいえば、機械学習を使用して特徴を手動で選ぶか、ディープラーニングを使用して自動的に学ばせるかの違いです。

従来の画像処理手法を使用した画像認識

ディープラーニングや機械学習とは別に、従来の画像処理手法の多くは、用途によっては画像認識に非常に有効です。画像処理手法は、以下のような「ピクセルベース」の認識アプリケーションに適している傾向があります。

  • 色ベースの画像認識: 画像認識のための優れた特徴は色から得られることがよくあります。色相、彩度、明度 (HSV) や赤、緑、青 (RGB) などの特徴は、画像に関する洞察を得るための手掛かりになります。
  • テンプレートのマッチング: この技術は、小さな画像 (テンプレート) を使用して、大きな画像の中で一致する領域を検出します。
  • 画像セグメンテーションとブロブ解析: これは、サイズ、色または形状などの簡単なオブジェクト プロパティを使用します。
ヒント: 一般的に、画像セグメンテーションのような簡単な手法を使用してオブジェクトを認識できる場合は、その手法を使用して始めることをお勧めします。何百、何千もの学習画像を必要としない堅牢なソリューションや、複雑なソリューションをご利用の場合もあるでしょう。Image Processing Toolbox™ には、必要なツールがすべてそろっています。

MATLAB による画像認識

MATLAB® を使用すると、複雑な画像認識の作業を簡略化できます。

  1. 画像のラベル付けアプリ: クリーンな前処理済みデータを使用すると、画像認識が成功しやすくなります。イメージ ラベラー アプリでは、画像の切り抜きやラベル付けのプロセスを自動化できます。
画像と動画を対話的にラベル付け。

画像と動画を対話的にラベル付け。

  1. ディープラーニングと機械学習アルゴリズムの探索: 最初のうちは、ディープラーニングと機械学習のどちらの手法を使用するか迷う場合もあるでしょう。MATLAB では、あらゆる手法の組み合わせを試すことができます。ディープラーニングの事前学習済みモデルや、機械学習の分類アルゴリズムを検討できます。

ONNX™ (Open Neural Network Exchange) のインポート/エクスポート機能を使用して、TensorFlow™、Keras、PyTorch、Caffe2 などのフレームワークのネットワークやネットワークアーキテクチャと相互運用できます。

Python ベースのフレームワークとの統合。

  1. 展開用の自動コード生成: 最終的に、アルゴリズムをデスクトップ環境の外で使用する必要が生じる可能性があります。MATLAB には、画像認識アルゴリズムを Web、組み込みハードウェア、運用環境サーバーなど、あらゆる場所に展開するためのコード生成ツールが用意されています。
アルゴリズムの作成後、GPU Coder™ で自動ワークフローを使用して、ハードウェアインザループ テスト向けの TensorRT または CUDA® コードを生成できます。生成したコードは、既存のプロジェクトに統合でき、デスクトップ GPU または NVIDIA® Jetson、NVIDIA Drive プラットフォームなどの組み込み GPU でのオブジェクト検出アルゴリズムの検証に使用できます。

参考:  パターン認識


画像認識に関する詳細を見る

ドキュメンテーションでディープラーニングの例をご覧ください。
このビデオでは、正確な分類器を対話的に作成する方法をステップバイステップで説明します。
この例では、カスタマイズした bag of features ワークフローを使用して CBIR システムを作成する方法について説明します。
Computer Vision Toolbox™ の関数を使用し、bag of visual words を作成して画像のカテゴリ分類を行う方法について説明します。
コンピューター ビジョンとは何か、その仕組み、重要である理由、およびコンピューター ビジョンに MATLAB を使用する方法についてご確認ください。