#01 人工知能入門 CNN画像認識
画像認識の難しさ——ピクセルの海をどう読むか
コンピュータにとって画像とは何か
私たちが見る「写真」や「絵」をコンピュータはどう扱っているのでしょうか?
答えは「数値の2次元配列」です。
モノクロ画像の場合、各ピクセル(pixel、画素)は0〜255の数値1つで表されます。0が真っ黒、255が真っ白です。
28×28ピクセルのモノクロ画像(手書き数字、MNIST):
0 0 0 0 0 0 ...
0 0 52 178 255 210 ...
0 42 255 255 255 255 ...
0 0 0 85 255 180 ...
...
28×28の格子に数値が並んでいるだけ——これが「画像データ」の正体です。
784個の数字
28×28ピクセルの画像を1列に並べると、784個の数値になります。
28 × 28 = 784 個のピクセル値
カラー画像はR(赤)・G(緑)・B(青)の3チャンネルがあるので、同じ28×28でも 28×28×3 = 2,352個の数値になります。
| 画像サイズ | チャンネル | 数値の個数 |
|---|---|---|
| 28×28 | 1(モノクロ) | 784 |
| 28×28 | 3(カラー) | 2,352 |
| 224×224 | 3(カラー) | 150,528 |
| 1920×1080 | 3(カラー) | 6,220,800 |
全結合でやってみると…
前シリーズで学んだ全結合ネットワーク(Fully Connected Layer)をそのまま使うと何が起きるでしょうか?
入力: 224×224のカラー画像 → 150,528個の数値
隠れ層1: 1,000ノード
接続数: 150,528 × 1,000 = 150,528,000個の重み
(これで1層目だけ!)
たった1層で1億5千万個の重みが必要になります。
| 問題 | 内容 |
|---|---|
| パラメータ爆発 | 重みが多すぎてメモリ・計算時間が膨大 |
| 位置情報の喪失 | 1次元に並べるとピクセルの「隣」という情報が消える |
| 過学習しやすい | パラメータが多いほど訓練データを暗記しやすい |
| 平行移動に弱い | 猫が左上にいても右下にいても同じ「猫」と認識したいのに… |
画像の「局所性」という特徴
画像には全結合とは違う重要な特徴があります。
局所性(Locality): 隣り合うピクセルは強く相関する
あるピクセルの値が「255(白)」なら、
隣のピクセルも白である可能性が高い。
遠く離れたピクセルはあまり関係ない。
平行移動不変性(Translation Invariance): 物体がどこにいても同じ物体
猫が左端にいても中央にいても右端にいても「猫」
→ 全結合だと位置ごとに別々の重みが必要になる
→ CNNなら同じフィルターを全体に適用できる
CNNの登場
画像の「局所性」と「平行移動不変性」を活かした仕組みがCNN(Convolutional Neural Network、畳み込みニューラルネットワーク) です。
2012年、AlexNetというCNNが画像認識コンテスト(ImageNet LSVRC)で圧倒的な精度を達成し、AIの歴史に革命を起こしました。
CNNのポイントを先取りすると:
全結合の問題 CNNの解決策
─────────────────────────────────────────
パラメータ爆発 → 小さなフィルターを共有(重みの節約)
位置情報の喪失 → 2次元のまま処理(空間構造を保持)
平行移動に弱い → フィルターをスライドさせて全体に適用
まとめ
- 画像はコンピュータにとって「数値の2D配列」
- 28×28の画像でも784個、224×224なら15万個以上の数値
- 全結合でそのまま処理するとパラメータが爆発し、位置情報も失われる
- 画像には「隣のピクセルは関係が強い(局所性)」という特徴がある
- CNNはこの局所性を活かし、少ないパラメータで画像を効率的に処理する
次回は、CNNの核心である畳み込み(Convolution) の仕組みを詳しく見ていきます。