コンピューター ビジョン用の機械学習
フィルターを使用して画像に効果を適用する機能は、画像編集ソフトウェアで実行する場合など、画像処理タスクで役立ちます。 しかし、コンピュータビジョンの目的は、多くの場合、画像から意味、または少なくとも実用的な洞察を抽出することです。これには、大量の既存の画像に基づいて特徴を認識するようにトレーニングされた機械学習モデルの作成が必要です。
ヒント
このユニットでは、機械学習の基本的な原則に精通していること、およびニューラル ネットワークを使用したディープ ラーニングの概念的な知識があることを前提としています。 機械学習を初めて使用する場合は、Microsoft Learn の 機械学習概念の概要 モジュールを完了することを検討してください。
畳み込みニューラルネットワーク (Convolutional Neural Networks, CNN)
コンピューター ビジョンの最も一般的な機械学習モデル アーキテクチャの 1 つは、ディープ ラーニング アーキテクチャの一種である 畳み込みニューラル ネットワーク (CNN) です。 CNN はフィルターを使用して画像から数値特徴マップを抽出し、特徴値をディープ ラーニング モデルにフィードしてラベル予測を生成します。 たとえば、画像分類 シナリオでは、ラベルは画像の主な件名を表します (つまり、この画像は何ですか? 予測されるラベルが特定の画像の果物の種類になるように、さまざまな種類の果物 (リンゴ、バナナ、オレンジなど) の画像を使用して CNN モデルをトレーニングできます。
CNN の トレーニング プロセス中に、フィルター カーネルは最初にランダムに生成された重み値を使用して定義されます。 次に、トレーニング プロセスが進むにつれて、モデルの予測が既知のラベル値に対して評価され、フィルターの重みが調整されて精度が向上します。 最終的に、トレーニング済みのフルーツ画像分類モデルでは、さまざまな種類の果物を識別するのに役立つ特徴を最もよく抽出するフィルターの重みを使用します。
次の図は、画像分類モデルの CNN のしくみを示しています。
- 既知のラベルを持つ画像 (例: 0: apple、1: バナナ、または 2: オレンジ) がネットワークに供給され、モデルがトレーニングされます。
- 1 つ以上のフィルター レイヤーを使用して、ネットワーク経由で各画像から特徴を抽出します。 フィルター カーネルは、ランダムに割り当てられた重みから始まり、 特徴マップと呼ばれる数値の配列を生成します。
- フィーチャ マップは、特徴値の 1 次元配列にフラット化されます。
- 特徴値は、完全に接続されたニューラル ネットワークに供給されます。
- ニューラル ネットワークの出力層は、softmax などの関数を使用して、可能な各クラスの確率値 (例: [0.2, 0.5, 0.3]) を含む結果を生成します。
トレーニング中に、出力確率は実際のクラス ラベルと比較されます。たとえば、バナナ (クラス 1) の画像の値は [0.0, 1.0, 0.0] である必要があります。 予測されたクラス スコアと実際のクラス スコアの差を使用してモデルの 損失 を計算し、完全に接続されたニューラル ネットワークと特徴抽出レイヤーのフィルター カーネルの重みを変更して損失を減らします。
トレーニング プロセスは、最適な重みのセットが学習されるまで、複数の エポック で繰り返されます。 その後、重みが保存され、モデルを使用して、ラベルが不明な新しい画像のラベルを予測できます。
注
CNN アーキテクチャには、通常、複数の畳み込みフィルター レイヤーと追加レイヤーが含まれており、フィーチャ マップのサイズを小さくしたり、抽出された値を制限したり、フィーチャ値を操作したりできます。 これらのレイヤーは、画像から数値特徴を抽出するためにフィルターを使用し、画像ラベルを予測するためにニューラル ネットワークで使用される主要な概念に焦点を当てるため、この簡略化された例では省略されています。
次に、これらの概念がコンピューター ビジョン タスクをサポートする方法について説明します。