事前トレーニング済みカスケード イメージ分類

OpenCV ライブラリを使用して、事前トレーニング済みの、正面の顔のイメージ分類モデルを作成します

カテゴリ: OpenCV ライブラリモジュール

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) で 事前トレーニング済みカスケードイメージ分類 モジュールを使用して、画像内の顔を検出する方法について説明します。

このモデルは、 OpenCV ライブラリに基づいています。 OpenCV ライブラリには、定義済みのモデルの一覧が用意されており、それぞれが特定の種類のオブジェクトを検出するように最適化されています。

事前トレーニング済みモデルの詳細

このイメージ認識モデルは、画像認識タスクに広く使用されている大規模なコーパスのイメージで既にトレーニングされています。 この特定の分類モデルは、顔検出用に最適化されており、Viola-Jones オブジェクト検出アルゴリズムを使用します。 モデルの目的は、正面ビューで人間の顔を含む画像を識別することです。

現在提供されているのは1つの OpenCV イメージ分類モデルのみですが、今後のリリースでは、追加の事前トレーニング済みのモデルが使用できる場合があります。

事前トレーニング済みモデルの使用

分析する一連のイメージがある場合は、このトピックで説明されているように、 モデルのスコア 付けモジュールへの入力として指定し、このモジュールをアタッチします。これにより、事前トレーニング済みの OpenCV ライブラリモデルが提供されます。

モデルのスコア 付けモジュールは、画像分類モデルを使用して、画像に人間の顔が含まれているかどうかを判断し、入力として使用される各イメージの確率スコアを返します。

事前トレーニング済みカスケードイメージ分類 に基づくモデルを、新しいイメージデータに再トレーニングすることはできません。

モデルが格納されている形式は、モデルの トレーニング モジュールと クロス検証モデル との互換性がありません。

事前トレーニング済みカスケードイメージ分類を構成する方法

Azure Machine Learning のイメージ分類モデルは、既に大規模なデータセットを使用してトレーニングされており、特定のイメージの種類に合わせて最適化されています。 したがって、一連のイメージを スコアリングデータセット として提供するだけで済みます。 出力として、モジュールは、各イメージにターゲットイメージの種類が含まれているかどうかを示すスコアを生成します。

  1. スコア付けに使用する予定のイメージのデータセットを準備してインポートします。 一般に、データセット内のすべてのイメージのサイズは同じである必要があります。

    イメージの インポート モジュールを使用して、イメージを実験に追加します。 使用するイメージが要件を満たしていることを確認するために、 イメージのインポート に関するヘルプを参照してください。 また、定義されたストレージオプションでイメージにアクセスできることを確認する必要もあります。

  2. Studio (クラシック) で、 事前トレーニング済みカスケードイメージ分類 モジュールを実験に追加します。 このモジュールは、 OpenCV ライブラリ カテゴリにあります。

  3. 事前トレーニング済み分類器 の一覧から、事前トレーニング済み分類器の1つを選択します。

    現在、使用できる分類子は1つだけです: 正面 face。既定で選択されています。

  4. [スケールファクター: イメージのスケールごとに画像のサイズを縮小する量を指定する値を入力します。

    OpenCV ライブラリでは、分類子は、さまざまなサイズで目的のオブジェクトを見つけることができるように、簡単に "サイズ変更" できるように設計されています。 これは、イメージ自体のサイズを変更するよりも効率的です。 そのため、イメージ内で不明なサイズのオブジェクトを検索するには、さまざまなスケールでスキャン手順を複数回実行する必要があります。

    最適なイメージ分類の結果が得られるように、異なるスケーリングファクターを使用することをお勧めします。

  5. [近隣ノードの最小数: 領域に含まれる面を検出するために必要な、重なり合う四角形の最小数を表す整数を入力します。

    OpenCV ライブラリでは、分類子によって入力イメージ内のさまざまなサイズのオブジェクトが検出されます。 検出されたオブジェクトは、四角形の一覧として返されます。 近隣 パラメーターは、検出された顔または機能として適合するために必要な一致の数を制御します。 したがって、この値を大きくすると、カバレッジのコストの精度が向上する傾向があります。

    近隣ノードの計算方法の例については、OpenCv ライブラリドキュメントの次の記事を参照してください。 opencv の Eigenfaces

  6. 必要に応じて、次の設定を使用してモデルにイメージサイズを指定し、予測を改善できるようにすることができます。 要件に適合しないイメージは削除されます。

    • 高さの最小値: 最小のイメージの高さ (ピクセル単位) を入力します。 このプロパティの値を指定すると、これより小さい画像は無視されます。

    • 高さの最大値。 最大画像のピクセル幅を入力します。 このプロパティの値を指定すると、これより大きいイメージは無視されます。

    • 最小幅: 最小の画像のピクセル幅を入力します。 このプロパティの値を指定すると、これより小さい画像は無視されます。

    • 最大幅: 最大のイメージのピクセル幅を入力します。 このプロパティの値を指定すると、これより大きいイメージは無視されます。

  7. スコアリングに使用するイメージデータセットを接続します。

  8. モデルの スコア 付けモジュールを実験に追加し、トレーニング済みのイメージ分類子とイメージのデータセットを接続します。

  9. 実験を実行します。

結果

スコアモデルの出力には、画像の名前、スコア付けされたラベル、およびラベルの確率スコア (0 または 1) が含まれます。 この分類子は、イメージがオブジェクト (顔) を表示する可能性が高い場合は "1" を出力し、それ以外の場合は "0" を出力します。 次に例を示します。

イメージ名 スコア付けラベル スコア付け確率
MAN001.png TRUE 1
TABLE001.PNG false 0
CHAIR001.PNG false 0

ヒント

出力には、データセット内のすべてのカラーチャネルの RGB 値も含まれます。 そのため、データをより簡単に表示するには、実験で データ [セット内の列の選択] を使用して結果列だけを出力することをお勧めします。

テクニカル ノート

このモジュールによって提供される顔認識モデルは、Viola-Jones フェイス検出アルゴリズムに基づいています。 詳細については、次のリソースを参照してください。

  • このビデオでは、 Haar の機能 の定義、顔検出での使用方法など、顔認識の基本的な概念について説明します。 顔検出-パート 1

  • この Wikipedia の記事では、この分類器に使用される方法について説明します。これは、Dalal と Bill Triggs:指向グラデーションのヒストグラムのドキュメントに基づいています。

  • OpenCV ライブラリに用意されている顔認識アルゴリズムのドキュメントについては、「 Cascade 分類子」を参照してください。

注意

このモジュールは、OpenCV ライブラリによって生成された情報の完全なコレクションを出力しません。 特に、このモジュールは、面が存在するかどうかの予測のみを出力し、フェイスやその他の情報の座標を含みません。

この追加情報が必要な場合は、 Microsoft Cognitive Servicesによって提供されるFace APIなど、他のライブラリの使用を検討してください。

モジュールのパラメーター

名前 Range Type Default 説明
事前トレーニング済み分類器 List PretrainedClassifier 正面の顔 標準の OpenCV 分布から事前トレーニングされた分類器。
スケール ファクター >= 1.0000000000000002 Float 1.1 各イメージ スケールでどの程度イメージ サイズが縮小されるかを指定するパラメーターです。
近隣の最小数 >=0 Integer 3 各候補の四角形で保持する必要がある近隣数を指定するパラメーターです。
最小高 >=1 Integer 100 オブジェクトの最小可能高 (ピクセル単位)。 これより小さいオブジェクトは無視されます。

パラメーターはオプションです。
最小の幅 >=1 Integer 100 オブジェクトの最小可能幅 (ピクセル単位)。 これより小さいオブジェクトは無視されます。

パラメーターはオプションです。
最大高 >=1 Integer 200 オブジェクトの最大可能高 (ピクセル単位)。 これより大きいオブジェクトは無視されます。

パラメーターはオプションです。
最大幅 >=1 Integer 200 オブジェクトの最大可能幅 (ピクセル単位)。 これより大きいオブジェクトは無視されます。

パラメーターはオプションです。

出力

名前 Type 説明
トレーニングされたモデル ILearner インターフェイス トレーニング済み二項分類モデル

例外

例外 説明
エラー 0005 パラメーターが特定の値より小さい場合、例外が発生します。

Studio (クラシック) モジュール固有のエラーの一覧については、「 Machine Learning エラーコード」を参照してください。

API 例外の一覧については、「 Machine Learning REST API のエラーコード」を参照してください。

関連項目

イメージのインポート
事前トレーニング済みカスケード画像分類