SS+Grad-Cam论文笔记

本文最后更新于:2021年1月8日 晚上

📖 区域建议生成

基于Selective Search和Grad-CAM,采用由粗到细的two-stage方法来生成区域建议。

第一个stage采用VGG16模型训练一组带有图像级标签的粗分类器,通过sigmoid交叉熵损失函数进行多标签图像分类

对于每一张包含目标类别c的图像,通过粗分类器通过对一组feature map进行加权混合,然后Relu激活可以得到关于类别c的activation map

其中权重$\alpha_k^c$衡量feature map $A_k$对于类别c的贡献度,可通过将$y_c$相对于$A_k$的梯度进行全局平均值池化(globally-avarage-pooling)获得

对于给定输入图像的每个特定类别的activation map,我们首先设置十个平均分布在激活图的最大灰度值和所有像素的平均灰度值之间的 分割阈值;然后,对于每个分割阈值,我们取特定类别激活图的二进制图;最后,我们使用最大连接面积法获得一组边界框,每个边界框都紧密地包围了最大的连接区域,并将这些边界框视为区域建议。但是,如下图中间行所示,尽管高响应区域包含目标,但定位效果较差。

第二个stage训练了一组精细的分类器来优化弱监督环境下的定位效果。对于特定类别,我们仅选择softmax响应最高其sigmoid分数为1的第一阶段的建议,作为使用VGG16模型训练的第二阶段 精细分类器的输入。通过重复与第一阶段相同的操作,生成更高质量的区域建议。

🍥 WSDDN网络

网络架构

损失函数为:

🔎 区域建议选择

候选框可以分为positive/negetive两类,当bbox(由anchor加上偏移量得到)与ground truth间的IOU大于我们设置的阈值(一般取0.5)时,会认为该bbox属于positive example,如果IOU小于下门限就认为该bbox属于negative example。

对于OICR,其仅选取某类别最高得分的区域建议及其相邻区域作为positive instances,其他的区域建议作为negative instances。当某个类别包含多个目标对象时,这种方法可能会忽略一些有价值的区域建议,并引入一些不准确的negative instances,如下图c所示:

此外,每张图片中easy negatives占比重远大于hard negatives,但前者对模型更新的贡献相比于后者要小的多,因此采用所有的negative proposals是非常耗费时间的。

选取正实例

对于类别c,图像$y_c=1$,选取得分最高的区域建议$j_c$及其相邻区域(IoU大于阈值0.5),之前再从剩下的区域建议中选取得分最高的区域建议及其相邻区域,持续以上过程,直到选中的最高得分区域建议的得分不再大于阈值$\tau$(论文中取0.5)

选取负实例

对于类别c,图像$yc=1$,首先选取和最高得分区域建议$j_c$的IoU在$[0.1,0.5)$的区域建议作为negative instances,记为$N{c1}$;然后,对于被误分类为类别的c的图像(其$yc=0$),其区域建议也可看做negetive instances,称为hard negative proposal,记为$N{c2}$。

📟 目标检测器优化

每一次优化,首先采用之前的目标检测器对所有的输入区域建议进行一次前向传播,为什么啊??;然后按照上一部分所讲述的区域建议选取方法选取对应的正、负实例。

由于$N{c1}$中负实例不确切,而$N{c2}$中的负实例又特别准,因此作者计划为$N_{c2}$中的负实例赋予更高的权重,以改善模型性能:

第k次优化,模块损失函数为:

整个网络的损失为:


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!