画像認識とは
これだけは知っておきたい 3 つのこと
画像認識とは、画像や動画に写っているオブジェクトや特徴を識別するプロセスのことです。画像認識は、欠陥検出、医用画像処理、セキュリティ監視など多くの用途に使用されています。
画像認識を使用すると、作業を省力化し、手作業による画像検査よりも速く、あるいはより正確に画像を処理できます。画像認識は多くのアプリケーションに不可欠の技術であり、以下のようなディープラーニングを使用したアプリケーションの主な原動力となっています。
- 外観検査: 製造時に部品の不良品/良品を識別することで、組み立てラインで何千個もの部品をすばやく検査できます。
- 画像分類: 画像コンテンツに基づいて画像を分類します。これは特に、画像検索や電子商取引におけるレコメンドシステムなどのアプリケーションに有効です。
- 自動運転: 自動運転アプリケーションには、画像中の一時停止標識や歩行者を認識する機能が不可欠です。
- ロボティクス: 画像認識は、ロボットがオブジェクトを識別し、経路上の位置情報やオブジェクトを特定することによる、自律航法の機能拡張に使用できます。
これらのアプリケーションの中心的な基盤となる技術が画像認識です。画像中のオブジェクトやシーンを識別し、その情報を使用して大規模なシステムの一部として意思決定を行うものです。画像認識は、これらのシステムの認識力を高め、本質的にはシステムに洞察をもたらすことでより良い意思決定を可能にしています。
画像認識とオブジェクト検出
画像認識とオブジェクト検出は類似した手法で、多くの場合は併用されます。画像認識では、画像中に存在するオブジェクトやシーンを識別し、オブジェクト検出では、画像中のオブジェクトのインスタンスと位置情報を検出します。
一般的なオブジェクト検出手法には、Faster R-CNN や YOLOv3 があります。
画像認識の手法
画像認識には、機械学習やディープラーニングなど、さまざまな手法があります。どの手法を使用するかは用途によりますが、一般的には、問題が複雑であればあるほど、ディープラーニング手法を検討する可能性が高くなります。
ディープラーニングを使用した画像認識
画像認識のためのディープラーニング手法では、サンプル画像から関連する特徴を自動的に学習し、新しい画像でその特徴を自動的に識別する、畳み込みニューラル ネットワークを使用できます。
画像認識の一般的なディープラーニングワークフローは以下のとおりです。
学習データの準備: 画像の収集から始め、それらを関連するカテゴリにまとめます。また、より正確なモデルを作成するために、画像の整合性を向上させるための前処理を行うこともできます。
ディープラーニングモデルの作成: ディープラーニング モデルをゼロから構築することもできますが、アプリケーションの開始点として使用できる事前学習済みモデルから始めることをお勧めします。(詳細は事前学習済みモデルを参照してください。)
モデルの学習: モデルの学習では、テストデータをモデルに与えます。その後、モデルはデータを何度も反復し、画像に関連する最も重要な特徴を自動的に学習します。学習が進むにつれて、モデルはより高度な特徴を学習し、学習セットに含まれる画像のクラス間を正確に解読できるようになるまで学習します。
テストデータ: モデルがこれまでに学習したことのない新しいデータでテストを行い、モデルが画像をどう認識するか確認します。結果が予想と異なる場合は、より許容できる精度が得られるまで、上記の 4 つの手順を繰り返してください。
ディープラーニングの手法は複雑そうに聞こえるかもしれませんが、簡単な例を使用すれば、すぐに始めてこの技術に関する知識を深めることができます。
ヒント: ディープラーニングの手法は、高い精度と堅牢性をもつ結果が得られることから、画像認識に多く使用されています。ディープラーニングは、大量の学習データを使用することで最適な学習効果が得られることが多く、転移学習などの手法により画像認識ワークフローを簡略化できます。 Deep Learning Toolbox™ には、アルゴリズム、事前学習済みモデル、アプリを使用したディープ ニューラル ネットワークの設計と実装のためのフレームワークが用意されています。
機械学習を使用した画像認識
機械学習を使用した画像認識では、画像から主要な特徴を識別して抽出し、機械学習モデルへの入力として使用します。
- データの学習: 画像の収集から始め、それらを関連するカテゴリにまとめます。
- 特徴の抽出: 各画像で関連性のある特徴を選択します。特徴抽出アルゴリズムでは、データのクラスを区別するために使用できるエッジやコーナーの特徴を抽出する場合があります。
- 機械学習モデルの作成: これらの特徴は機械学習モデルに追加されます。機械学習モデルは、これらの特徴をカテゴリ別に分類し、その情報を新たなオブジェクトを解析し、分類する場合に使用します。
機械学習アルゴリズムや特徴抽出には多くの手法があり、それらをさまざまに組み合わせて正確なオブジェクト認識モデルを作成できます。
ヒント: オブジェクト認識に機械学習を使用することで、学習に最適な特徴と分類器の組み合わせを柔軟に選択できます。最小限のデータで正確な結果を得ることができます。Statistics and Machine Learning Toolbox™ には、データを記述、解析、およびモデル化する関数やアプリが用意されています。
画像認識: ディープラーニングと機械学習
画像認識にディープラーニングと機械学習のどちらを使用するかは、どのようにして決めればよいでしょうか。大まかにいえば、機械学習を使用して特徴を手動で選ぶか、ディープラーニングを使用して自動的に学ばせるかの違いです。
従来の画像処理手法を使用した画像認識
ディープラーニングや機械学習とは別に、従来の画像処理手法の多くは、用途によっては画像認識に非常に有効です。画像処理手法は、以下のような「ピクセルベース」の認識アプリケーションに適している傾向があります。
- 色ベースの画像認識: 画像認識のための優れた特徴は色から得られることがよくあります。色相、彩度、明度 (HSV) や赤、緑、青 (RGB) などの特徴は、画像に関する洞察を得るための手掛かりになります。
- テンプレートのマッチング: この技術は、小さな画像 (テンプレート) を使用して、大きな画像の中で一致する領域を検出します。
- 画像セグメンテーションとブロブ解析: これは、サイズ、色または形状などの簡単なオブジェクト プロパティを使用します。
MATLAB® を使用すると、複雑な画像認識の作業を簡略化できます。
- 画像のラベル付けアプリ: クリーンな前処理済みデータを使用すると、画像認識が成功しやすくなります。イメージ ラベラー アプリでは、画像の切り抜きやラベル付けのプロセスを自動化できます。
- ディープラーニングと機械学習アルゴリズムの探索: 最初のうちは、ディープラーニングと機械学習のどちらの手法を使用するか迷う場合もあるでしょう。MATLAB では、あらゆる手法の組み合わせを試すことができます。ディープラーニングの事前学習済みモデルや、機械学習の分類アルゴリズムを検討できます。
ONNX™ (Open Neural Network Exchange) のインポート/エクスポート機能を使用して、TensorFlow™、Keras、PyTorch、Caffe2 などのフレームワークのネットワークやネットワークアーキテクチャと相互運用できます。
- 展開用の自動コード生成: 最終的に、アルゴリズムをデスクトップ環境の外で使用する必要が生じる可能性があります。MATLAB には、画像認識アルゴリズムを Web、組み込みハードウェア、運用環境サーバーなど、あらゆる場所に展開するためのコード生成ツールが用意されています。
参考: パターン認識