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) 位置处
   462   463   464   465   466   467   468   469   470   471   472