Page 467 - 《软件学报》2025年第9期
P. 467
4378 软件学报 2025 年第 36 卷第 9 期
关系, 导致目标区域不完整. 然而, 由于 ViT 中自注意力机制的存在, ViT 能够捕获输入数据的全局特征依赖关系,
也就是说, ViT 能关注到输入数据中所有位置的信息, 因此当把图像分解为一系列的区域块, 并把这些区域块作为
输入数据输入到 ViT 中后, ViT 中的自注意力机制可以获取每个区域块与其他区域块之间的关系. 因此 ViT 生成
的初始类激活图可以覆盖较多的目标区域, 但是此时得到的类激活图会在目标区域周围引入大量背景噪声, 导致
背景部分过度激活, 如图 4 中第 3 列所示. 在本文中, 通过综合利用 ViT 生成的类与块间注意力以及区域间注意力
对初始类激活图进行联合优化, 得到更高质量的类激活图. 首先将初始类激活图 Original-CAM 与类与块间注意力
逐元素相乘, 得到初步优化后的调制类激活图 Modulated-CAM:
(5)
Modulated-CAM = Original-CAM • A c2p
其中, • 表示哈达玛积. 然后再利用区域块间注意力进一步优化调制类激活图 Modulated-CAM, 得到最终类激活图
Final-CAM:
(6)
Final-CAM = Modulated-CAM ∗ A p2p
其中, ∗ 表示矩阵乘法. 经过类与块间注意力以及区域块间注意力优化后的类激活图能够覆盖较多的目标区域, 如
图 4 中第 4 列所示. 接下来, 使用随机游走生成高质量的伪标签来训练语义分割网络.
原图 CNN ViT Ours
图 4 不同方法 CAM 可视化结果比较
2.4 损失函数
首先对输出类 token 中的每个类 token 采用平均池化 (AP) 操作得到预测类分数 ˆ y cls , 然后与真实标签做多标
签交叉熵损失计算, 得到分类损失 L cls :
1 D ∑
ˆ y cls (c) = T c_out (c,i) (7)
D
i=1
1 C ∑
L cls = y(k)logσ(ˆy cls (k))+(1−y(k))log(1−σ(ˆy cls (k))) (8)
C
k=1
其中, c ∈ {1,2,...,C} 表示类别, T c_out (c,i) 表示 T c_out 对应于第 c 个类 token 中第 i 个位置处的值, y(k) 表示第 k 个类别
的真实标签, ˆ y cls (k) 表示第 k 个类别的预测类分数, σ 表示 Sigmoid 激活函数. 此外, 对初始类激活图 Original-CAM
进行全局平均池化 L pat :
(GAP) 操作得到预测类分数 ˆ y pat , 与真实标签做多标签交叉熵损失计算, 得到分类损失
h
1 w ∑∑
ˆ y pat (c) = Original-CAM(c,i, j) (9)
w×h
i=1 j=1
1 C ∑
L pat = y(k)logσ(ˆy pat (k))+(1−y(k))log(1−σ(ˆy pat (k))) (10)
C
k=1
其中, w, h 表示 Original-CAM 的宽和高, Original-CAM(c,i, j) 表示 Original-CAM 中第 c 个类别对应 (i, j) 位置处

