#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×224 | 3 |
| Conv1 | 112×112 | 64 |
| Conv2 | 56×56 | 128 |
| Conv3 | 28×28 | 256 |
| Conv4 | 14×14 | 512 |
| Conv5 | 7×7 | 512 |
なぜ浅い層は局所的な特徴を見るのか
数学的に考えると納得できます。
浅い層のフィルターは、入力画像の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の全体構造を見ていきます。