#04 人工知能入門 CNN画像認識

特徴マップ——CNNが何を「見て」いるか

CNNは「何を見ているのか」

CNNに猫の画像を与えたとき、ネットワークの内部では何が起きているのでしょうか?

研究者たちがCNNの各層を可視化したところ、驚くべきことが分かりました。層が深くなるほど、より抽象的・複雑な特徴を捉えているのです。


階層的な特徴学習

画像認識CNNの各層が学ぶ特徴のイメージ:

入力画像: 猫の写真(224×224×3)

第1層(畳み込み):
  エッジ、ライン、単純なカラーパターン
  「斜め45°の線」「明暗の境界」


第2〜3層:
  テクスチャ、模様
  「格子状のパターン」「毛皮のような質感」


第4〜5層:
  パーツ、物体の一部
  「目らしい形」「耳のシルエット」「ひげ」


深い層(第6層以降):
  物体全体のパターン
  「猫の顔全体」「体のポーズ」


出力層: 「猫: 94%」

これは人間の脳の視覚野が働く仕組みに似ています。網膜→V1野(エッジ検出)→V2野(パターン)→下側頭皮質(物体認識)という階層構造と対応します。


特徴マップ(Feature Map)

各畳み込み層の出力を特徴マップ(Feature Map) と呼びます。

入力:  224×224×3
     (幅×高さ×チャンネル数)

第1畳み込み層(64フィルター)後:
  222×222×64
  ↑          ↑
  空間サイズ  チャンネル数(特徴の種類)

「チャンネル」が増えていることに注目してください。最初は3チャンネル(RGB)でしたが、畳み込み後は64チャンネルになっています。この64チャンネルは「64種類の特徴の強さ」を表します。


チャンネルとは何か

チャンネル(Channel)は「特徴の種類」と考えると分かりやすいです。

入力画像のチャンネル:

チャンネル1(R): 赤の強さマップ
チャンネル2(G): 緑の強さマップ
チャンネル3(B): 青の強さマップ

第1畳み込み後の特徴マップのチャンネル:

チャンネル1:  水平エッジの強さマップ
チャンネル2:  垂直エッジの強さマップ
チャンネル3:  斜めエッジの強さマップ
チャンネル4:  特定の色の境界マップ
 ...(64種類まで)

各チャンネルは「そのフィルターが検出するパターンが、画像のどこに存在するか」を空間マップとして表しています。


空間サイズとチャンネル数の変化

CNNを通るにつれて、特徴マップは「空間的に小さく・チャンネル的に豊か」になっていきます。

層の深さ:         浅い層       →→→→→     深い層
空間サイズ:    大きい(224×224)  →  小さい(7×7)
チャンネル数:   少ない(3or64)   →  多い(512or2048)
見ているもの:  局所的(エッジ)   →  大域的(物体全体)
特徴マップサイズ(例)チャンネル数
入力224×2243
Conv1112×11264
Conv256×56128
Conv328×28256
Conv414×14512
Conv57×7512

なぜ浅い層は局所的な特徴を見るのか

数学的に考えると納得できます。

浅い層のフィルターは、入力画像の3×3ピクセルの小さな範囲しか見ていません。3×3で検出できるものは「エッジ」や「単純なパターン」が限界です。

深い層のニューロンは、前の層のニューロンの出力を受け取ります。その前の層のニューロンは、さらに前の層から受け取っています。このようにして、深い層のニューロンは入力画像の広い範囲を間接的に「見て」いることになります。

深い層の1ニューロンが見ている範囲(受容野、Receptive Field):

1層目のフィルター(3×3): 3×3ピクセルを見る
2層目のフィルター(3×3): 5×5ピクセルを見る(間接的に)
3層目のフィルター(3×3): 7×7ピクセルを見る(間接的に)
 ...
深い層: 画像全体を「見ている」状態になる

まとめ

  • 特徴マップはCNNの各層の出力で、「特徴の強さを空間的にマッピングしたもの」
  • 浅い層はエッジ・テクスチャなど局所的・単純な特徴を捉える
  • 深い層はパーツ・物体全体など大域的・抽象的な特徴を捉える
  • チャンネルは「特徴の種類」の数。深い層ほどチャンネル数(種類)が増える
  • 空間サイズは層が深くなるほど小さく、チャンネル数は大きくなる傾向がある

次回は、畳み込み・ReLU・プーリングを組み合わせたCNNの全体構造を見ていきます。