CNNを窓拭きで理解する–画像認識AIが「見ている」もの

CNNを窓拭きで理解する--画像認識AIが「見ている」もの のアイキャッチ画像 画像解析

「スマホが顔を一瞬で見つける仕組みって、いったい何をしているんだろう?」

数式なしでそこに答えを出すのが、この記事のミッションです。
トカゲ先生とヤモリくんの会話を追いながら、窓拭きという身近な動作を軸に画像認識AIの核心へ迫りましょう。


AIはどうやって画像を「見て」いるのか?

ヤモリくん(驚き)の立ち絵

「トカゲ先生、スマホのカメラアプリで顔の周りに四角が出てくるじゃないですか。あれってどうやって猫とか人とかって瞬時にわかるんですか?AIに目があるわけじゃないのに。」
「いい疑問!まず最初に聞くけど、ヤモリくんはコンピュータにとって”写真”が何に見えてるか知ってる?」

トカゲ先生(通常)の立ち絵

ヤモリくん(困り)の立ち絵

「……数字とか?」
「正解。コンピュータにとって画像はピクセル(画素)ごとの数値の集まりなんだよ。」

トカゲ先生(笑顔)の立ち絵

写真がピクセルの数値の格子に変換されコンピュータに処理される流れ

1枚の写真は、縦×横にびっしり並んだ小さな点=ピクセルでできています。そして1つひとつのピクセルには「その点の明るさや色を表す数値」が入っています。人間が見ると「猫」でも、コンピュータが見ると「数字の表」。そのギャップがすべての始まりです。

ヤモリくん(通常)の立ち絵

「じゃあAIはその数字を全部読んで判断してるんですか?」
「昔のニューラルネットワークはそうしようとしてたんだよね。全ピクセルを一度にまとめて処理しようとしてた。でもこれが大問題で。」

トカゲ先生(困り)の立ち絵

ヤモリくん(困り)の立ち絵

「どんな問題が?」
「まず計算コストが膨大になる。それに全部まとめて処理するとどこに何があるかという”場所の情報”が消えてしまう。猫の耳が左上にあろうが右下にあろうが、同じ数字の羅列として扱われちゃうわけ。」

トカゲ先生(通常)の立ち絵

ヤモリくん(困り)の立ち絵

「それはたしかに困りそう……。」
「そこで登場したのが CNN(Convolutional Neural Network=畳み込みニューラルネットワーク)。全部を一気に処理するんじゃなく、画像を小さな領域ごとに分けて特徴を捉える。これが画像認識に革命をもたらしたんだよね。」

トカゲ先生(ひらめき)の立ち絵


畳み込み=窓拭き ─ 小さなフィルタで特徴をつかむ

「CNNの核心は畳み込み(Convolution)という処理なんだけど、これを一言で表すなら”窓拭き”なんだよ。」

トカゲ先生(ひらめき)の立ち絵

ヤモリくん(驚き)の立ち絵

「窓拭き……?」
「そう。窓を拭くとき、小さなスポンジを左から右、上から下へとずらしながら全体を丁寧に拭いていくじゃん。CNNのフィルタもまったく同じ動きをするんだよ。」

トカゲ先生(笑顔)の立ち絵

小さなフィルタが画像の左上から右へ下へとスライドして全体を走査する窓拭きの動き


フィルタ(カーネル)って何?

窓拭きのスポンジにあたるのがフィルタ(カーネル)です。

フィルタは画像よりずっと小さい「型紙」のようなもので、「こういうパターンを探してね」という情報が書き込まれています。たとえば──

  • 縦線を探すフィルタ
  • 横線を探すフィルタ
  • 斜めのエッジを探すフィルタ

ヤモリくん(ひらめき)の立ち絵

「型紙を画像に当てると、その場所に探してたパターンがあるかどうかわかる、ってイメージですか?」
「完璧!その通り。で、その型紙を画像の左上からスタートして、少しずつずらしながら全体に当てていく。それが”窓拭き”の動きだよ。」

トカゲ先生(笑顔)の立ち絵

ヤモリくん(困り)の立ち絵

「でも……そのフィルタって最初から”縦線を探す”って決まってるんですか?誰かが設定するんですか?」
「実はフィルタの中身は最初はランダムで、たくさんのデータを見ながら学習によって自動的に”いい探し方”に育っていくんだよ。オレたちが手で設定するわけじゃない。そこがAIの”学習”のすごいところだよね。」

トカゲ先生(ひらめき)の立ち絵

ヤモリくん(驚き)の立ち絵

「自分でどんなパターンを探せばいいか、自然に覚えるんだ……!」

フィルタがスライドする様子をフローで見てみましょう。

フィルタが画像領域に重なり積和計算して値を出力しずらしながら繰り返す畳み込みの流れ


フィルタを通した結果=特徴マップ

フィルタが全体を一周すると、「この場所にパターンがあった(値が大きい)」「ここにはなかった(値が小さい)」という反応の地図ができあがります。これを特徴マップ(feature map)と呼びます。

元画像に複数のフィルタを適用し各フィルタごとに特徴マップが生成される様子

ヤモリくん(ひらめき)の立ち絵

「地図……たとえば”縦線フィルタ”なら、縦線があった場所だけが光る地図?」
「そうそう!まさにその通り。しかもCNNは1つの層で何十個ものフィルタを同時に使う。縦線・横線・斜め……それぞれの地図が同時に生まれるイメージだよ。」

トカゲ先生(笑顔)の立ち絵

ヤモリくん(通常)の立ち絵

「地図がどんどん増えていくんですね。」
「複数のフィルタを使うことで、1つの層で複数の異なる特徴を同時に抽出できるわけ。」

トカゲ先生(通常)の立ち絵


🪟 窓拭き比喩まとめ

窓拭き CNN
スポンジ(小さい) フィルタ(カーネル)
窓全体をなでる動き スライド(畳み込み)
汚れがどこにあったかの記録 特徴マップ

プーリング=要点だけメモする ─ 情報を圧縮して強くなる

ヤモリくん(困り)の立ち絵

「畳み込みでたくさんの特徴マップができました!でも地図がいっぱいあると今度は情報が多すぎませんか……?」
「そこで登場するのがプーリング(Pooling)だよ。授業ノートに例えると”要点だけメモする”作業だね。」

トカゲ先生(ひらめき)の立ち絵


最大プーリング(MaxPooling)の動き

最も代表的な最大プーリング(MaxPooling)の仕組みはシンプルです。

特徴マップを小さなブロックに区切って、各ブロックの中で一番大きい値だけを残す

特徴マップをブロックに分割し各ブロックの最大値のみ残して情報を圧縮する最大プーリングの流れ

ヤモリくん(ひらめき)の立ち絵

「大きい値だけ残す……”一番強い反応だけ取り出す”ってことですか?」
「ピッタリ!フィルタへの反応が強い=そこにパターンがある、ってことだから。弱い反応はノイズみたいなものだし、思い切って捨てちゃっていい。」

トカゲ先生(笑顔)の立ち絵

ヤモリくん(通常)の立ち絵

「地図を小さく圧縮しながら、大事なところだけ残すんですね。」

「位置ズレに強くなる」ってどういうこと?

「プーリングにはもう一つ嬉しい効果があって、対象が画像内で少し動いても同じと認識できるようになるんだよ。」

トカゲ先生(通常)の立ち絵

ヤモリくん(困り)の立ち絵

「どういう意味ですか?同じ猫でも写真の真ん中に映ってる場合と端に映ってる場合……みたいな?」
「そう!猫が写真の左寄りだろうが右寄りだろうが、ちゃんと”猫”と認識してほしいよね。プーリングで”代表値”だけ残すと、細かい位置のズレが吸収されて、より大きな視点で特徴を見られるようになる。これを位置不変性と呼ぶよ。」

トカゲ先生(ひらめき)の立ち絵

ヤモリくん(笑顔)の立ち絵

「ちょっとズレても気にしないよ、っていう”大らかさ”を身につける感じですね。」
「うまいこと言うじゃん(笑)まさにそれ。」

トカゲ先生(笑顔)の立ち絵


層を重ねると「エッジ→部品→物体」が見えてくる

ヤモリくん(通常)の立ち絵

「畳み込みとプーリングがわかりました。でも、それを繰り返すとどうなるんですか?」
「CNNの本当の強さはここからなんだよ。層を重ねるごとに、AIが”見える範囲”と”認識できる複雑さ”が段階的に変わっていく。」

トカゲ先生(ひらめき)の立ち絵

層を重ねるごとにエッジから部品そして物体へと認識が段階的に深まるCNNの階層構造


浅い層:エッジや色の変化を見る

最初の層が学習するのは縦線・横線・色の境目といったシンプルな要素です。猫の写真なら、「どこかに線がある」とわかる段階にすぎません。

深い層:形・テクスチャ・物体を見る

浅い層で見つけた「線」の情報を次の層に渡すと、線と線の組み合わせでが浮かび上がります。さらに重ねると「耳っぽい形」「目のパーツ」が見え、最終的には「猫の顔!」まで辿り着きます。

浅い層で検出した線が積み重なりパーツや形を経て最終的に猫と認識される階層的特徴学習の流れ

ヤモリくん(ひらめき)の立ち絵

「レゴブロックみたいですね!小さいパーツを組み合わせて、どんどん大きな構造を作っていく。」
「そのたとえ、めちゃくちゃいい!層ごとにレゴのパーツが大きくなっていくイメージ。まさにそれ。」

トカゲ先生(笑顔)の立ち絵

ヤモリくん(通常)の立ち絵

「浅い層の特徴マップが次の層の入力になって、段階的に高レベルな特徴を学んでいくんですね。」
「完璧な理解!」

トカゲ先生(笑顔)の立ち絵


全結合層:最後の「判定係」

畳み込みとプーリングを繰り返して集めた特徴を、最後にまとめて答えを出すのが全結合層(Fully Connected Layer)です。

ヤモリくん(困り)の立ち絵

「全結合層って何をしてるんですか?特徴マップとどう違うんですか?」
「今まで集めてきた全部の特徴を一列に並べて、”これは猫である確率が最も高い、次いで犬……”みたいに最終的な分類の答えを出す役割だよ。探偵が集めた証拠を全部テーブルに並べて”犯人はこいつだ!”って結論を出す感じかな。」

トカゲ先生(笑顔)の立ち絵

ヤモリくん(笑顔)の立ち絵

「なるほど!探偵の結論!」

CNNの全体の流れを整理するとこうなります。

入力画像が畳み込みとプーリングを繰り返した後に全結合層で分類結果を出すCNN全体の流れ

窓拭き比喩で畳み込みからプーリング全結合層を経て最終分類に至るCNNの三段階まとめ


CNNが活躍している現場 ─ 自動運転から医療まで

ヤモリくん(通常)の立ち絵

「CNNって画像認識に使われてるって聞きましたけど、具体的にどんな場面で使われてるんですか?」
「身近なところから社会インフラまで、いろんな現場にいるよ。」

トカゲ先生(笑顔)の立ち絵


自動運転の「目」になる

自動運転車に搭載されたカメラの映像をリアルタイムでCNNに処理させることで、前方に人がいるか・道路標識は何か・障害物はどこにあるかを素早く把握し、安全な運転制御につなげています。

ヤモリくん(驚き)の立ち絵

「まさに”AIの目”ですね!」
「しかも複数のカメラを同時並行で処理できる。人間の目と違って疲れないしね。」

トカゲ先生(笑顔)の立ち絵


医療画像診断の「助手」になる

CTスキャンやMRIの画像から腫瘍や病変を自動で検出するAI診断支援にもCNNが活用されています。乳がんや糖尿病網膜症の早期発見への応用も進んでいます。

ヤモリくん(通常)の立ち絵

「お医者さんのサポートをするんですね。」
「見落としを防ぐバックアップとして、CNNが医師の目を補う形で使われてるよ。CNNは画像に限らず、空間的・局所的な構造を持つほぼ全てのデータに使えることもわかってきてて、応用範囲はどんどん広がってる。」

トカゲ先生(通常)の立ち絵


最新トレンド:Vision Transformer(ViT)との関係

ヤモリくん(困り)の立ち絵

「最近、Vision Transformer(ViT)っていうのも聞くんですが、CNNとどう違うんですか?」
「ViTはCNNとは異なるアーキテクチャで、一部の領域ではCNNの性能を上回る場面も出てきてる。ただ、CNNは今も画像認識の基盤技術として現役だし、ViTを理解するためにもCNNの考え方が土台になってる。だから順番としてCNNを先に押さえておくのは、最先端を追いかける上でも絶対に意味があるよ。」

トカゲ先生(ひらめき)の立ち絵

ヤモリくん(笑顔)の立ち絵

「CNNをちゃんと理解してから、ViTに進む感じですね。」
「それが一番の近道だと思う。」

トカゲ先生(笑顔)の立ち絵


まとめ ─ 「窓拭き」から始まる画像認識の世界

ヤモリくん(笑顔)の立ち絵

「だいぶCNNのイメージがつかめてきた気がします!」
「よし、じゃあ最後に全体を一言でまとめてみようか。」

トカゲ先生(笑顔)の立ち絵


CNNを一言で言うと?

「小さなフィルタ(スポンジ)で画像を窓拭きしながら特徴を取り出し、層を重ねるごとにエッジ→パーツ→物体と認識を深めていく、賢い目のしくみ」


3つのステップがCNNの基本構造です。

ステップ 処理内容 比喩
① 畳み込み層 フィルタをスライドして特徴を抽出 🪟 窓拭き
② プーリング層 代表値を選んで情報を圧縮 📝 要点メモ
③ 全結合層 特徴をまとめて最終分類 🔍 探偵の結論

次に学ぶべきステップ

CNNの雰囲気がつかめたら、こんな順番で次へ進んでみましょう。

  1. 実際にCNNを動かしてみる ─ Pythonを使ったオンライン実行環境で無料で試せます。コードを動かすと「なるほど!」がぐっと増えます。
  2. 各フィルタが何を学習しているか可視化してみる ─「特徴マップの可視化」で検索すると、フィルタが本当に縦線や曲線を捉えている図が見られて感動します。
  3. Vision Transformer(ViT)との比較を学ぶ ─ CNNをしっかり理解したあとだと、ViTとの違いがクリアに見えてきます。

ヤモリくん(笑顔)の立ち絵

「窓拭きか……次に窓を拭くたびにCNN思い出しそうです(笑)」
「それで合ってる(笑)。フィルタで特徴を探してるイメージ、ずっと持ち続けてね。また次回!」

トカゲ先生(笑顔)の立ち絵

参考文献

コメント

タイトルとURLをコピーしました