本文へ移動

G検定(ジェネラリスト検定)

きゃむ

CAM

CAM

Class Activation Mapping

CAM(Class Activation Mapping、クラス活性化マッピング)は、画像を分類するCNNが、あるクラスだと判断する際に画像のどの領域を根拠にしたかを、マップとして可視化する手法です。モデルの解釈性を高める手法の一つで、最終出力層の直前にグローバル平均プーリングを置いたCNNを前提とし、出力層の重みを最後の畳み込み層の特徴マップに掛け合わせて足し合わせることで作ります。分類のために訓練したCNNが、1回の順伝播の中で分類と、そのクラスに関係する画像領域の位置特定の両方を行えるようにする点が特徴です。

詳しい説明

CAMは何を見せる手法か

CNNは画像を入力すると、たとえば犬や猫といったクラスの予測を出力します。しかし出力されるのはクラスの判定結果だけで、画像のどこを見てその判断をしたのかは、そのままでは分かりません。

CAM(Class Activation Mapping、クラス活性化マッピング)は、この判断の根拠となった画像領域をマップとして示す手法です。2016年にジョウ(Zhou)らが論文 Learning Deep Features for Discriminative Localization で提案しました。論文では、特定のクラスについてのクラス活性化マップは、CNNがそのクラスを識別するために使った、識別に効く画像領域を示すものだと説明されています。

この論文が強調しているのは、分類のために訓練したCNNが、1回の順伝播の中でクラスの分類と、そのクラスに固有の画像領域の位置特定の両方を行えるようになるという点です。物体の位置を求める専用の仕組みを別に用意するのではなく、分類用のネットワークの中にすでにある情報を読み出して位置を示します。

前提となるネットワークの構造

CAMは、どんなCNNにもそのまま使えるわけではなく、比較的単純な決まった構造を前提にしています。論文では Network in Network や GoogLeNet に似た構造が使われており、次のような形をしています。

1. ネットワークの大部分は畳み込み層で構成される
2. 最終出力層(分類ではsoftmax)の直前で、最後の畳み込み層が出した特徴マップにグローバル平均プーリングを行う

3. グローバル平均プーリングの出力を特徴として、全結合層に入力し、目的の出力を得る

グローバル平均プーリングとは

畳み込み層の出力は、チャネルごとに縦横の広がりを持つ特徴マップになっています。グローバル平均プーリング(Global Average Pooling、GAP)は、各チャネルの特徴マップについて、すべての空間位置の値の平均を取り、そのチャネルを1つの数値にまとめる操作です。たとえばチャネルが512個あれば、GAPの出力は512個の数値になります。

この構造では、各チャネルの平均値に出力層の重みを掛けて足し合わせたもの(重み付き和)が、各クラスのスコアになります。つまり、出力層の重みは、それぞれのチャネルがあるクラスの判定にどれだけ効いているかを表していると読むことができます。

クラス活性化マップの作り方

CAMの考え方は、出力層の重みを畳み込み層の特徴マップへ投影し直すというものです。論文ではこれを、出力層の重みを畳み込み特徴マップに逆に投影することで画像領域の重要度を特定する技法と説明しています。

手順を言葉で整理すると次のようになります。

  • あるクラスのスコアは、チャネルごとの重みと、そのチャネルの特徴マップの値との積を、すべてのチャネルとすべての空間位置について足し合わせたものとみなせる
  • このうち、ある1つの空間位置の分だけを取り出す。つまり、その位置について、各チャネルの重みとそのチャネルの特徴マップの値との積を、チャネルについて足し合わせる
  • これを全ての空間位置について計算して並べたものが、そのクラスのクラス活性化マップになる

GAPが特徴マップの空間的な平均を取ってから重み付き和を取るのに対し、CAMは平均を取る前の特徴マップそのものに重み付き和を取る、という対応関係になっています。そのため、クラス活性化マップのある位置の値は、その位置の活性化がそのクラスへの分類にどれだけ重要かを直接示します。

入力画像に重ねて領域を特定する

最後の畳み込み層の特徴マップは、入力画像より縦横が小さくなっています。そこで、得られたクラス活性化マップを入力画像のサイズまで拡大(アップサンプリング)します。拡大したマップを画像と対応させることで、そのクラスに最も関連する画像領域を特定できます。値の大きい部分を色で示して画像に重ねれば、ネットワークがどこを見てそのクラスだと判断したかを目で確かめられます。

構造上の制約

CAMは、最終出力層の直前にグローバル平均プーリングがあり、その出力を全結合層に入れるという構造を前提にしています。この構造でないCNNには、CAMの手順をそのまま当てはめることはできません。関連する語としてGrad-CAMがありますが、ここではCAM自体の前提と仕組みを押さえておくことが大切です。

試験で問われること

G検定

  • CAMが、CNNが画像をあるクラスに分類するときに、画像のどの領域を根拠にしたかを可視化する手法であることを説明できますか。
  • CAMが前提とする構造として、最終出力層の直前で最後の畳み込み層の特徴マップにグローバル平均プーリングを行い、その出力を全結合層に入力する形であることを確認しておきましょう。
  • クラス活性化マップが、出力層の重みを使って最後の畳み込み層の特徴マップの重み付き和を空間位置ごとに取ることで作られる、という仕組みを説明できますか。
  • 得られたクラス活性化マップを入力画像のサイズまで拡大することで、そのクラスに最も関連する画像領域を特定できるという使い方を確認しておきましょう。

最終更新日: 2026/09/23