AIは画像をどう認識する?ピクセルからCNNまでのやさしい解説
顔認証、人物ごとに整理されるアルバム、写真から植物を判定する機能——その裏側にあるのはすべて同じことです。機械に画像を理解させる、ということ。理解の鍵は案外シンプルです。まず数字がどんな形をしているかを知り、次にネットワークがそれらを「特徴」へと組み合わせる過程を知ることです。
機械にとって画像は数字のグリッド
カラー写真は何万ものピクセルでできており、各ピクセルは赤・緑・青の3つの明るさの値(通常0〜255)を記録しています。つまり画像をネットワークに渡すとき、実際には整ったグリッドに並んだ大量の数字を渡しているのです。
この「数字のグリッド」に対して、ネットワークがまず行うのはとても素朴です。グリッド内の局所的な小さな変化、たとえば隣り合うピクセル間で明るさが急に上がる・下がる(つまりエッジ)を探します。
ピクセルから特徴へ:層ごとに組み合わせる
単独のエッジだけでは何も語れませんが、組み合わせると意味が出てきます。後ろの層は単純なエッジを曲線・角・テクスチャへとまとめ、さらに後ろの層がそれらを目・鼻・車輪・花びらのような部品へと組み上げます。
この過程は人がルールを手書きするものではなく、ネットワークが訓練の中で自ら学びます。各層が学ぶ「特徴」は前の層の出力の再構成であり、深くなるほど抽象度が上がります。
古典的な例:MNIST の手書き数字
画像認識の学習では、ほぼ全員が MNIST から始めます。28×28 ピクセルの手書き数字画像が数万枚集まったもので、それぞれに 0〜9 の正解ラベルが付いており、「見て分類する」練習にうってつけです。
画像が小さくクラスも少ないため、複雑でないネットワークでも数分で高い精度に達します。「訓練で何が起きているか」を観察するのに最適です。MNIST を理解すれば、より複雑な画像タスクも自然に理解できます。
CNN は通常のネットワークに何を加えるのか
すべてのピクセル位置を次の層に直接つなぐと、パラメータが膨大になり訓練が難しくなります。CNN の要点は「畳み込み」です。小さな窓を画像全体で滑らせ、同じ重みの組を繰り返し使って同じ種類の模様を探します。これで位置関係を保ちつつ、パラメータを大幅に削減できます。
さらに CNN は「プーリング」で特徴マップを縮小し、特徴が「どのピクセルにあるか」よりも「あるかどうか」を重視させます。これにより多少の位置ずれに強くなります。畳み込みとプーリングを層状に重ねたものが、現代の画像認識の基本的な骨格です。
FAQ
グレースケール画像は1チャンネル、カラー画像は3チャンネルなのはなぜ?
グレースケール画像は各ピクセルに1つの明るさの値しか要らないので1チャンネル、カラー画像は各ピクセルに赤・緑・青の3つの明るさを記録するので3チャンネルです。ネットワークの扱い方は同じで、入力の数字が少し増えるだけです。
画像認識の訓練にはたくさんの画像が必要ですか?
一般には多いほどよいですが、「データ拡張」——画像を少し回転・切り抜き・反転する——で実質的に数を増やせます。また、大量の画像で学習済みのモデルを使う「転移学習」なら、自分の画像は少量で微調整できます。
AIは「錯覚」にだまされませんか?
あります。ごく少数のピクセルを変えるだけで、モデルが A を B と認識してしまうことがあり、これは「敵対的サンプル」と呼ばれます。モデルは人間のように画像を本当に理解しているのではなく、統計的な類似性を学んでいるにすぎないことを示しており、セキュリティが重要な場面では追加の対策が必要です。
AI Neural で画像認識を一歩ずつ理解する
AI Neural を開き、インタラクティブな例でピクセルがエッジに、エッジが部品に変わっていく様子を観察しましょう。CNN の考え方を直感的に摑め、用語の丸暗記よりずっと楽です。