ホームページ  >  記事  >  テクノロジー周辺機器  >  基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

WBOY
WBOYオリジナル
2024-06-04 20:19:27337ブラウズ

著者と同じようにテクノロジーが大好きでAIに強い関心を持っている友人は、畳み込みニューラルネットワークには馴染みがあり、そのような「高度な」名前に長い間混乱していたと思います。著者は今日から畳み込みニューラルネットワークの世界にゼロから入ります〜それをみんなと共有しましょう!

畳み込みニューラル ネットワークに入る前に、まず画像の原理を見てみましょう。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

画像原理

コンピュータでは、画像は数値 (0 ~ 255) で表され、各数値は画像内のピクセルの明るさまたは色の情報を表します。その中には:

  • 白黒画像: 各ピクセルには値が 1 つだけあり、この値は 0 (黒) から 255 (白) の間で変化します。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

  • カラー画像: 各ピクセルには 3 つの値が含まれており、最も一般的なのは RGB (赤-緑-青) モデルです。つまり、赤、緑、青の光が異なる強度で結合されてさまざまな色が生成されます。各カラー チャネルには 0 ~ 255 の 256 レベルの明るさがあるため、各色は 8 ビットの 2 進数で表現できます。たとえば、(255,0,0) は赤を表し、(0,255,0) は緑を表し、( 0) ,0,255) は青を表し、その他の組み合わせでさまざまな色に対応します。コンピューターでは、カラー画像のデータ構造は通常、(幅、高さ、深さ) の形状を持つ 3 次元配列またはテンソルです。深さはチャネルの数であり、RGB 画像の場合、深さは 3 です。これは、ピクセル位置ごとに、赤、緑、青の 3 つのチャネルの明るさを表す 3 つの値があることを意味します。たとえば、100*100 ピクセルの RGB 画像は 100x100x3 バイトのメモリを占有します。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

「ここでの「8 ビット 2 進数」はどうやって理解できますか?」

RGB カラー モデルでは、各カラー チャネル (赤、緑、青) は 256 の異なる輝度レベルを持つことができ、各チャネル8 ビット 2 進数の最大値は 11111111 (10 進数に変換すると 255)、最小値は 00000000 (10 進数に変換すると 0) です。

畳み込みニューラルネットワークCNNとは何ですか?

CNN は、CV でよく知られているアプリケーション シナリオを報告しました。元の画像サイズを 10x10 とすると、下図に示すように、左半分はピクセル値が大きく明るい領域、右半分はピクセル値が小さく奥行きのある領域になります。中央の分割線が検出対象のエッジです。

「では、エッジを検出するにはどうすればよいでしょうか?」 このとき、下の図に示すように、カーネルのサイズは 3x3 です。

フィルターは入力画像上をスライドし、各領域で一瞬停止し、対応する要素を乗算して加算し、その後他の領域にスライドして元の画像の最後の領域にスライドするまで計算を続けます。この処理を「畳み込み」といいます

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

上の図から分かるように、出力結果は中央が明るい色、両側が暗い色になっており、元の画像の境界が修正されたことがわかります。反映されました。 「したがって、エッジ検出は入力画像と対応するフィルターの畳み込み演算を通じて認識されると結論付けることができます。」 さらに、ここでのスライディングには、上記の例では「ストライド」という基本概念も含まれます。ストライド 1 は、1 フレームをスライドするたびに合計 8x8 の領域にとどまることを意味するため、最終的な出力結果は 8x8 の行列になります。

「それで、畳み込みニューラル ネットワークとは一体何ですか?」

エッジ検出の特定のターゲット検出シナリオを上記で分析した後、CNN (畳み込みニューラル ネットワーク) がさまざまなフィルターを継続的に使用することを理解するのは難しくありません。局所的なものから全体的なものまで画像の特徴を抽出し、ターゲットを特定します。

ニューラル ネットワークでは、これらのフィルターの各数値がパラメーターであり、大量のデータを使用したトレーニング (つまり、深層学習のプロセス) を通じて取得できます。

CNNの基本概念

1.コンボリューション(Convolution)

(1)コンボリューション計算

コンボリューションは、画像処理で使用される数学的解析における積分変換手法であり、コンボリューションの離散形式です。畳み込みニューラル ネットワーク CNN では、畳み込み層の実装の本質は数学で定義される相互相関計算 (相互相関) です。具体的な計算過程を下図に示します。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!その中には:

図 (a): 左側の図のサイズは 3×3 で、入力データが 3×3 の次元の 2 次元配列であることを示します。中央の図のサイズは 2×2 で、2 次元であることを示します。 -次元 2×2 の次元配列。「コンボリューション カーネル」とも呼ばれます。コンボリューション カーネルの左上隅は入力データの左上隅 (0,0) と位置合わせされ、2 つの対応する位置データが乗算されてから加算されて、コンボリューション出力 25 の最初の結果が得られます。

類推すると、図 (b)、(c)、(d) はそれぞれ畳み込み出力の 2 番目、3 番目、4 番目の出力結果です。

(2) 画像の畳み込み演算

では、画像の畳み込み演算とは一体何でしょうか?以下の図に示すように、カラー画像の畳み込みプロセスが示されています。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

カラー画像のチャンネル 1 (赤)、チャンネル 2 (緑)、チャンネル 3 (青) には、それぞれ Kernel1、Kernel2、Kernel3 を使用します。各コンボリューション カーネルは、対応するモノクロ画像上をスライドし、各位置の小さな領域 (カーネル サイズ) 内のピクセル値とコンボリューション カーネルの対応する要素に対してポイントごとの乗算演算を実行し、これらの積を加算します。価値。次に、各チャネルから取得した値を加算し、全体のバイアスを加算して、対応する特徴マップの値を取得します。

3 次元効果を以下の図に示します。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

2.パディング

上記のエッジ検出の例では、元の画像サイズが 10x10 で、フィルター処理後は 10x10 であることがわかります。 8×8。もう一度畳み込み演算を行うと、6x6 になります... この場合、次の 2 つの欠点があります:

  • 畳み込み演算を行うたびに、出力画像サイズが小さくなります
  • 隅のピクセルが少なくなる
エッジ領域が出力に使用されるため、画像のエッジ位置に関する多くの情報が失われやすくなります。

下の図に示すように、左上隅の赤い影は 1 つの出力によってのみ触れられますが、中央のピクセル (紫色のボックスでマークされている) には多くの 3x3 の領域が重なっています。したがって、コーナーまたはエッジ領域のピクセルは出力であまり使用されず、画像のエッジ位置に関する多くの情報が失われやすくなります。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

この問題を解決するには、通常、畳み込み演算の前に、元の画像のエッジをピクセルのレイヤーで塗りつぶします。たとえば、10x10 の画像をピクセルのレイヤーで塗りつぶします。サイズは 12x12、体積は 8x8 で、元の画像と同じサイズになります。 これにより、元の画像のエッジ領域のピクセルを複数回使用できます。

    塗り潰すピクセル数を選択します。通常は 2 つのオプションがあります:
  • 同じ畳み込み: 前述したように、塗りつぶしと畳み込み後の画像のサイズは元の画像と同じです。
有効な畳み込み: 充填操作なし、直接畳み込み。

3.ストライド

ストライドの概念は序論で述べましたが、これは元の画像におけるフィルターの各スライドの水平方向と垂直方向の長さを表し、ステップ長とも呼ばれます。

s がストライド長、p がパディング長、元の画像サイズが nxn、フィルター サイズが fxf であると仮定すると、畳み込み画像サイズは次のようになります。 基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

4 の本質。プーリング 次元削減です。

畳み込みネットワークにおけるプーリング層の役割: 特徴マップのパラメータ量を減らし、計算速度を上げ、ダウンサンプリング操作である受容野を増やします。

オブジェクト検出で一般的に使用されるプーリング:最大プーリングと平均プーリング。

(1) Max pooling

とは、畳み込み演算を行わずにフィルタのスライディング領域内の最大値を取得することを意味します。数値が大きいということは、特定の特徴が検出され、他の値が無視される可能性があることを意味し、ノイズの影響が軽減され、モデルの堅牢性が向上します。 「さらに、Max poolingに必要なハイパーパラメータはフィルタサイズfとストライド長sだけです。他のパラメータを学習させる必要がなく、計算量が少ないです

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

(2) Average pooling

つまり、フィルター内でフィルターの摺動領域内の平均値を計算します。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

5.Shape

多次元データ、特に画像データを扱う場合、Tensorflow と Pytorch データの Shape には違いがあります。

  • TensorFlow:(batch_size、高さ、幅、in_channels)
  • Pytorch:(batch_size、in_channels、高さ、幅)

ここで:

  • batch_size: バッチで処理されるサンプルの数。
  • in_channels: 入力画像のチャネル数。カラー画像の場合は通常 3 (赤、緑、青)。
  • 高さと幅はそれぞれ画像の高さと幅です。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

上の図に示すように:

  • 入力画像の形状: [高さ、幅、チャネル]、つまり [8,8,3]、3 チャネル (R、 G、B)。
  • コンボリューション カーネルの形状: [kernel_height, kernel_width, in_channels, out_channels]、つまり [3,3,3,5]、3 つのチャネル (R、G、B)、出力チャネルを持つ 3x3 コンボリューション カーネルを示します。番号は5.
  • 出力画像の形状: [高さ、幅、out_channels]、つまり [6,6,5]、5 チャンネル (R、G、B) を持つ 6x6 出力画像を示します。
りー

8x8 画像と 3x3 コンボリューション カーネルの場合、出力サイズは (8 - 3 + 1) / 1 = 6 となるため、出力形状は [6, 6, 5] となり、5 つの出力チャネルを持つ 6x6 特徴マップを示します。 。

コンボリューションカーネルの入力チャンネル数 (in_channels) は、入力画像のチャンネル数によって決まります。例: RGB 形式の画像の入力チャンネル数は 3 です。

出力行列 (out_channels) のチャネル数は、コンボリューション カーネルの出力チャネル数、つまりコンボリューション カーネルが持つ異なるフィルターの数によって決まります。この例では、コンボリューション カーネルに 5 つのフィルターがあるため、出力には 5 つのチャネルがあります。

6. 活性化関数

すべてのマッピング関係が線形関係で正確に表現できるわけではありません。したがって、非線形マッピングを表現するには活性化関数が必要です。

活性化関数も非線形マッピングです。ニューラルネットワークを線形演算だけで積み重ねると複雑な表現空間を形成できず、高度な意味情報を抽出することが困難になるため、非線形のマッピング関係を追加する必要があります。

(1) シグモイド関数

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

シグモイド関数は、特徴を (0,1) 区間に圧縮します。0 端は抑制状態、1 端は活性化状態、中央部の勾配が最も大きい。

(2) Relu関数

整流線形単位(ReLU)。通常、勾配消失現象を軽減するために使用されます。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

0未満の部分では、値と勾配は0、0より大きい導関数は1となり、シグモイド関数の勾配が0に近いことによって引き起こされる勾配消失の問題を回避します。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

(3) Softmax 関数

複数のオブジェクト カテゴリに対してより一般的に使用される分類子は、Softmax 関数です。

特定の分類タスクでは、多くの場合、Softmax 関数の入力は複数のカテゴリのスコアであり、出力は各カテゴリに対応する確率です。すべてのカテゴリの確率値は 0 から 1 の間であり、合計は 1 です。

ソフトマックス関数の式は次のとおりです:

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

ここで、Vi は i 番目のカテゴリのスコアを表し、C は分類されたカテゴリの総数を表し、出力 Si は i 番目のカテゴリの確率を表します。

CNNの全体構造

畳み込みニューラルネットワークCNNは、入力層、畳み込み層、Relu、プーリング層、全結合層、出力層で構成されます。

下の図に示すように、畳み込みネットワークの最初の層は畳み込み層であり、その後に他の畳み込み層またはプーリング層が続き、最後の層は全結合層です。後のレイヤーは画像の大部分を識別し、前のレイヤーは通常、単純な特徴 (色やエッジなど) に焦点を当てます。画像データが CNN のレイヤーを進むにつれて、オブジェクトのより大きな要素や形状の識別が開始され、最終的に目的のオブジェクトが識別されます。

基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!

その中には:

  • 入力層: ネットワークへの入力として元の画像データを受け取ります。
  • 畳み込み層: フィルターと活性化関数で構成され、その主な機能はサンプルの特徴を抽出することです。これは、入力データ、フィルター (またはコンボリューション カーネル)、および特徴マップで構成されます。入力データが RGB 画像の場合、入力には高さ、幅、奥行きの 3 つの次元があることを意味します。フィルターの本質は 2 次元の重み行列であり、画像の受容野内を移動して特徴が存在するかどうかを確認します。畳み込み演算処理については上述した通りである。畳み込み層に一般的に設定されるハイパーパラメータには、フィルターの数、ストライド、パディング方法 (有効または同一)、活性化関数などが含まれます。
  • プーリング層: 本質は、画像の局所相関の原理を使用して、有用な情報を保持しながらデータ処理量を削減することです。
  • 全結合層: この層の各ノードは、前の層のすべてのノードに接続されており、以前に抽出された特徴を合成するために使用されます。通常、完全に接続された層には最も多くのパラメータがあります。
  • 出力層: 全結合層の情報に基づいて最も高い確率で結果を取得します。

CNNの利点

従来のニューラルネットワークと比較して、CNNにはローカル接続、重み共有などの利点があり、学習するパラメータの量が大幅に削減され、ネットワークの収束が速くなります。

  • 部分的に接続: 特徴マップの各出力値は入力画像のすべてのピクセル値に接続する必要はなく、適用されたフィルターの受容野にのみ接続する必要があるため、畳み込み層はしばしば「部分的に接続された層」、この特性はローカル接続とも呼ばれます。
  • ウェイト共有: コンボリューションカーネルが画像上を移動しても、そのウェイトは変更されません。それが体重共有です。

以上が基礎ゼロでも畳み込みニューラルネットワークの原理が理解できる!超詳しい!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。