#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×281(モノクロ)784
28×283(カラー)2,352
224×2243(カラー)150,528
1920×10803(カラー)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) の仕組みを詳しく見ていきます。