一、Eigen-CAM 理解分析
Eigen-CAM来自论文《Eigen-CAM: Class Activation Map using Principal Components》,Eigen-CAM的流程如下图:

将特征从特征空间拉出来后,库如 yolov8s-cls,拉出是512x7x7的特征层,然后将改feature reshape X 为 49x512,49是空间特征,512是通道特征,然后将49x512通过奇异值分解后:
X=UΣVT X = U \Sigma V^T X=UΣVT
U∈R49×49,Σ∈R49×512,V∈R512×512 U \in \mathbb{R}^{49 \times 49} , \Sigma \in \mathbb{R}^{49 \times 512} , V \in \mathbb{R}^{512 \times 512}U∈R49×49,Σ∈R49×512,V∈R512×512
U(左奇异向量):U∈R49×49U \in \mathbb{R}^{49 \times 49}U∈R49×49 中的每一列 是ui∈R49u_i \in \mathbb{R}^{49}ui∈R49 表示一种空间组合方式
V(右奇异向量):V∈R512×512V \in \mathbb{R}^{512 \times 512}V∈R512×512 中的每一列 是ui∈R512u_i \in \mathbb{R}^{512}ui∈R512 表示一种通道组合方式
X=∑i=149σiuiviT X=\sum_{i=1}^{49} \sigma_i u_i v_i^T X=i=1∑49σiuiviT
uiu_iui 是 49 x 1, viTv_i^TviT 是 1 x 512, 相乘正好是 49 x 512大小,即第i 个奇异值表示,通道方向 viv_ivi 和 空间模式 uiu_iui,共同构成的这个结构模式的强度。
再说回 Eigen-CAM,是将 原始特征层 49x512 投影到 v0v_0v0这个向量上,得到一个49x1的向量,我觉得可以这样理解:
u0u_0u0 和 v0v_0v0 两个组合起来,在加上 奇异值,构成了绝大部分的 原始特征(最佳的rank-1近似),也就是,特征空间按照v0v_0v0这种方式进行分布的时候,对应的空间特征的分布响应也很大,因此,直接将原始特征投影到 v0v_0v0,得到想要的空间分布情况。
二、Eigen-CAM 实验分析
对yolov8n和yolov8m目标检测器进行eigen-cam的分析,使用的权重为预训练权重yolov8n.pt和yolov8m.pt

从21层到第4层,对各层的输出,进行Eigen-CAM可视化,左边是yolov8m,右边是yolov8n

分析:
1、首先,有一点需要明确,Eigen-CAM不能用来解读决策,因为Eigen-CAM在分析的时候,不依赖类别和loss,Eigen-CAM展示的是当前特征的第一主成分,偏向大面积区域,高频纹理,强变化区域,这些特征都让特征的方差变化很大,所以Eigen-CAM展示的是最大方法的方差,不是目标语义,或者注意力图,所以在一些任务中,经常比目标更亮,不同层直接也没有可比性,比较适合分析特征,不适合解释决策。
2、不论是yolov8m ,还是yolob8n,输入640x640,每层的感受野相同
| Stage | 层域 | 感受野 |
|---|---|---|
| 1 | 4~5 | 35 px |
| 2 | 6~8 | 75~110 px |
| 3 | 9~12 | 200~350 px |
| 4 | 13~16 | 500~900 px |
| 5 | 17~21 | 1000~1500 px |
3、以yolov8m为主要,4,5层感受野比较小,因此是草地,6,7,8,增大感受野后,可以看到狗头了,第9层是SPPF,第10层是上采样,所以,第9层和第10层,可视化结果是一样的,第11层,是将第6层的结果和第10层的输出concat出来。
4、会发现yolov8m学习到的狗头的特征,整体比yolv8n学习的狗头特征明显高亮,且高亮点很多,yolov8n学习的狗头特征,特点是稀疏、高亮点弱,不密集;yolov8m学习的狗头特征,高亮点很密集