Featured image of post CNN Explainer

CNN Explainer

畳み込みニューラルネットワークの各層で画像がどう処理されるかを、対話的に追える可視化ツール。

CNN Explainerは、畳み込みニューラルネットワーク(CNN)が画像を分類する過程を、層ごとの可視化でたどれるインタラクティブコンテンツです。入力画像が畳み込み、活性化、プーリング、全結合層を通じてどのように特徴へ変換されるかを、画面上で確認できます。

フィルタ、特徴マップ、ニューロンの活性化、最終的な予測確率を同じ文脈で眺められるため、CNNの構造と推論の流れを結びつけて理解しやすい構成です。画像認識モデルの内部で何が起きているのかを説明する教材として使いやすいツールです。

この記事で学べること

  • CNNが入力画像を10クラスのうち1つに分類するまでの全体の流れ(畳み込み→ReLU→プーリングの繰り返し)
  • 畳み込み(Convolution)・ReLU・プーリングという3つの基本演算が、それぞれ画像に対して何をしているか
  • ニューロン1つひとつをクリックすると、その出力がどんな積和演算で計算されているかを数式で確認できること

操作ガイド

左端の入力画像から右端の出力確率まで、層を追いながら操作してみましょう。

  1. 入力画像を選ぶ: 画面上部のサムネイル(lifeboat・ladybug・pizza・bell pepper・school bus・koala・espresso・red panda・orange・sport carの10種類)から画像を選ぶか、「+」ボタンから自分の画像をアップロードします。
  2. Input層: 選んだ画像が64×64ピクセルのRGB画像として読み込まれ、Red・Green・Blueの3チャンネルに分解される様子を確認します。
  3. 1つ目の畳み込みブロック(conv_1_1 → relu_1_1 → conv_1_2 → relu_1_2): 各チャンネルに10種類のフィルタが適用され、62×62、60×60とサイズを縮めながら特徴マップが作られます。ReLU層は、負の値をすべて0に切り詰める活性化関数です。
  4. ニューロンをクリックして数式を見る: 任意の層のマスをクリックすると、その出力がどう計算されたかを示す詳細ビュー(Input/Output行列と計算式)が開きます。マス目にカーソルを合わせると、対応するピクセルの計算内容が変わります。
  5. プーリング層(max_pool_1): 特徴マップが30×30へダウンサンプリングされ、物体の位置が多少ずれても同じ特徴として扱えるようになる仕組みを確認します。
  6. 2つ目の畳み込みブロック(conv_2_1 → relu_2_1 → conv_2_2 → relu_2_2 → max_pool_2): 同じ処理がもう一度繰り返され、最終的に13×13×10まで圧縮されます。
  7. Output(10クラスの確率): 最後にSoftmaxで10クラスそれぞれの確率が計算され、最も確率の高いクラスが予測結果として表示されます。
  8. 「Show detail」「Unit」を切り替える: 画面右上のトグルとドロップダウンで、より詳細な計算過程や別の単位での表示に切り替えられます。

理論的背景

CNN Explainerは、Transformer ExplainerやGAN Labと同じジョージア工科大学Polo Clubの研究成果で、論文「CNN Explainer: Learning Convolutional Neural Networks with Interactive Visualization」(Wang et al., IEEE VIS 2020)として発表されました。可視化されているのはTiny VGGと呼ばれる小規模なCNN(VGGNetの構造を単純化したもの)で、10クラスの画像分類のために学習されています。

畳み込みニューラルネットワークという設計自体は、Yann LeCunらによるLeNet(1998)に始まり、AlexNet(2012)やVGGNet(2014)を経て、現在の画像認識モデルの基礎になっています。

まとめ

  • CNNは、畳み込み→ReLU→プーリングという単純な演算の繰り返しによって、画像から徐々に高次な特徴を抽出している
  • 層が進むほど特徴マップの縦横サイズは縮み、チャンネル(フィルタ)が捉える特徴はより抽象的になっていく
  • 個々のニューロンをクリックして数式を確認することで、「特徴抽出」という言葉の中身を具体的な計算として理解できる
Licensed under CC BY-NC-SA 4.0
最終更新 2026年7月20日 09:41 +0900