ウェブサイト検索

CNN が画像を解釈する方法について詳しく説明します。


導入

私たち人間が顔を認識したり物体を認識したりするのと同じように、世界を見て理解するコンピューターを作ることを想像してみてください。このタスクは人間の脳にとっては簡単に思えますが、コンピュータにとってはそれほど簡単ではありません。

この記事では、畳み込みニューラル ネットワークをより簡単な言葉で解説します。

畳み込みニューラル ネットワーク (CNN) は、機械が画像を理解できるようにするデジタルの目や脳のようなものです。コンピューターは画像を数値のグリッドとして見る方法を使用します。これらの数値は通常、0 から 255 までの RGB 数値です。

畳み込みニューラル ネットワークの世界では、コンピューターがどのように画像を見て、そこに何が含まれているかを理解する方法が理解されます。 「見る」方法の基本から、それができる素晴らしいことまで、コンピューターが私たちの周囲の視覚的な驚異を理解する方法を変えるこのテクノロジーの中心部への楽しいドライブの準備をしましょう。

画像認識用のディープ ニューラル ネットワーク(出典) CNN は主に、特定のフィルターを適用して入力画像から特徴を抽出するために使用されます。

前提条件

  1. ニューラル ネットワークの基本的な理解: フィードフォワード ネットワークと重みとバイアスの仕組みについての知識。
  2. 線形代数と微積分の基礎: 行列演算、勾配、最適化の概念に関する知識。
  3. Python プログラミング: ディープ ラーニング用の TensorFlow や PyTorch などのライブラリの使用経験。
  4. 画像処理の基礎: ピクセル、フィルター、畳み込み演算について理解します。

なぜ CNN なのか?

CNN は特別なタイプの ANN であり、画像やその他の分類問題の分析でも人気を博しました。 CNN は画像からパターンを検出するのに優れているため、画像分析に役立ちます。 CNN は入力層、隠れ層、出力層で構成されます。隠れ層は、畳み込み層、プーリング層、および完全に接続された密な層で構成されます。

ここで、画像認識に ANN を使用できるか?という疑問が生じるかもしれません。

例を挙げて理解しましょう!

ソース

この場合、鳥がいると仮定します。画像はカラー画像であるため、3 つの RGB チャネルがあります。

  • 画像サイズは 3082 × 2031 なので、最初の層のニューロンは 3082 × 2031 × 3 ~ 1800 万になります。
  • 隠れ層ニューロンはほぼ 1,000 万個に相当します
  • 最初の層と隠れ層の間の重みは最大 19 mil x 10 mil ~ 1 億 9000 万になります

画像分類に高密度に接続されたニューラル ネットワークを使用すると、かなりの計算負荷が生じ、その数は潜在的に数十億に達する可能性があります。この計算量は過剰であるだけでなく、不必要でもあります。さらに、人工ニューラル ネットワーク (ANN) は、空間的近接性に関係なく、すべてのピクセルを均一に扱う傾向があります。画像認識が主に局所的な特徴に依存していることを考えると、このアプローチは欠点になります。課題は、ピクセル配置が変更されたときに画像内のオブジェクトを検出するのにネットワークが苦労することにあり、これが ANN で遭遇する潜在的な制限です。

畳み込み演算とストライドジャンプ

人間の脳における画像認識のプロセスには、特定のニューロンのセットによる個々の特徴の検査が含まれます。これらのニューロンは、その後、個別の特徴を識別する別のセットにリンクされ、このセットは、画像が猫、犬、または鳥を描いているかどうかを判断する結果を集計する役割を担う別のグループに接続されます。

これと同様の概念が CNN で使用され、フィルターまたはカーネルを使用して特徴が検出されます。このフィルターは、入力全体にスライドさせることで、入力データまたは画像に適用されます。各セルで要素ごとの乗算が実行され、結果が合計されて、その特定のセルの単一の値が生成されます。さらに、フィルターはストライド ジャンプを実行し、画像全体がキャプチャされるまで同じ操作が繰り返されます。この操作の出力は、特徴マップとして知られています。

行列乗算 (ソース)

特徴マップは、使用されるフィルターに応じて特定のパターンをキャプチャする役割を果たします。フィルターが入力全体でストライド ジャンプを実行すると、さまざまなローカル パターンが検出され、空間情報がキャプチャされます。

画像にフィルターを適用する (ソース)

簡単に言うと、フィルターを使用したり畳み込み演算を実行したりするときは、特定の特性を強調する特徴マップを作成していることになります。これらのフィルターは、鳥の「目検出器」のような、特定の特徴を検出できる特別なツールと考えてください。この検出器を画像に適用すると、スキャンが行われ、目が見つかった場合は、特徴マップ上でその位置がマークされます。重要なのは、これらのフィルターは画像内の目がどこにあるかを気にしないことです。フィルターは画像全体をスライドするため、場所に関係なく見つけられます。各フィルターは特殊な特徴探偵のようなもので、画像のさまざまな側面を識別するのに役立ちます。

オブジェクトの特定の特徴を検出するために使用されるフィルター

これらのフィルターは 2D フィルターでも 3D フィルターでも使用できます。たとえば、頭部フィルターは目、尻尾、くちばしなどの集合フィルターとなり、このフィルターが頭部検出器になります。同様の方法で、人体探知機も存在する可能性があります。複雑な機能により、画像内の非常に複雑な詳細を特定できるようになります。これらの特徴フィルターは特徴マップを生成します。

機能マップ

特徴マップまたはアクティベーション マップは、画像内の特定のパターンまたは特徴を捕捉する平坦化された数値の配列です。コンピューター ビジョン、特に畳み込みニューラル ネットワーク (CNN) では、入力画像にフィルターまたはカーネルを適用することによって特徴マップが作成されます。特徴マップの各数値は、入力データ内の対応する特徴の活性化のレベルを表します。これらの特徴マップは平坦化されて 1D 配列が得られ、さらに分類タスクのために高密度の完全接続ニューラル ネットワークに接続されます。

分類のためにディープ ニューラル ネットワークに接続された特徴マップ

なぜ高密度のニューラル ネットワークが必要なのでしょうか?

ニューラル ネットワークは、画像内のオブジェクトがさまざまな場所に存在する可能性があり、1 つの画像内に多数のオブジェクトが存在する可能性があるという事実に対処します。したがって、最初に畳み込みニューラル演算を使用して、画像内のさまざまな特徴を探します。これは、画像内のさまざまなパターンを認識するのに役立ちます。次に、高密度ニューラル ネットワークを使用して、これらの特徴に基づいて写真に何が写っているかを判断します。したがって、最初の部分でさまざまな詳細が見つかり、2 番目の部分でそれらの詳細が分類の観点から何を意味するかを決定します。

これだけではなく、通常は畳み込み層と完全に接続された深いニューラル層の後に活性化関数も追加します。非常に一般的な活性化関数は ReLu です。

ReLu

ReLU アクティベーションは、モデルに非線形性を導入するために使用されます。基本的に、特徴マップを取得し、正の値を変更せずに、負の値をゼロに置き換えます。負の値をゼロに設定し、正の値を保持するこの単純なメカニズムは、モデルを非線形にするのに役立ちます。この活性化関数は、勾配消失の問題を解決するのにも役立ちます。

f(x) = max(0, x)

重い計算を扱う

これらすべての計算を行っても、まだ重い計算の問題については話されていません。この問題を解決するには、プーリングを使用します。

プールとは、簡単に言うと情報を要約することと理解できます。たとえば、全体像を要約し、そこに何が含まれているかを理解するためですが、すべての詳細は必要ありません。プーリングは、重要な部分を保持しながら画像のサイズを削減するのに役立ちます。これは、一度に画像の小さな部分を調べ、各部分から最も重要な情報を選択することによって行われます。たとえば、4 つのピクセルのグループを調べている場合、最も明るいピクセルのみを保持する可能性があります。このようにして、主な特徴をキャプチャしながら画像を縮小するため、コンピュータの操作がより簡単かつ高速になります。

最大プーリング

上の図から、空の (2, 2) フィルターがストライド 2 で (4, 4) 画像上にスライドされます。最大ピクセル値が毎回抽出されて、新しい画像が形成されます。結果として得られる画像は、元の画像の最大プール表現の結果です。結果として得られる画像は、元の画像の半分のサイズになります。これにより、次元が削減され、計算能力も削減されます。プーリングにより過剰適合も軽減されます。

典型的な CNN には次のものがあります:-

  • 畳み込み層
  • ReLu活性化関数層
  • プーリング
  • 最後に、完全に接続された高密度ニューラル ネットワークが完成します。

結論

要約すると、畳み込みニューラル ネットワークの主な目的は特徴を抽出することであり、次の部分の機能は人工ニューラル ネットワークに似ています。畳み込みは特徴を検出するだけでなく、次元を削減します。この操作の 3 つの主な利点は、第 1 に、接続の希薄性により過剰適合が軽減されることです。これは、高密度ネットワークで見られるように、すべてのノードが他のすべてのノードに接続されているわけではないことを意味します。第 2 に、畳み込みは一度に画像の局所的な領域に焦点を当て、画像全体への影響を回避します。第三に、畳み込みとプーリングを組み合わせることで、位置に依存しない特徴検出が可能になります。簡単に言うと、畳み込みニューラル ネットワークは画像内の特徴を見つけることに優れており、過剰適合を防止し、さまざまな場所にわたる特徴を認識する際の柔軟性を確保します。

ReLu のアクティブ化により非線形性が導入され、オーバーフィッティングがさらに減少します。また、サンプルのバリエーションを生成するためにデータ拡張も使用されます。

参考文献

  • PyTorch で CNN を最初から作成する
  • 畳み込みニューラル ネットワークのフィルター
  • 畳み込みニューラル ネットワークのプール
  • 畳み込みニューラル ネットワークにおけるグローバル プーリング
  • 畳み込みニューラルネットワークの簡単な説明 |深層学習チュートリアル 23 (Tensorflow & Python)