弱监督检测初识——WSDDN解读

REF https://zhuanlan.zhihu.com/p/313717328

弱监督检测是一个很有前景的研究方向——仅通过样本的类别标签就可以实现目标检测任务(乍一看有点类似之前的Classification and localization任务,但是要难很多)。目前,弱监督检测的精度还处于比较低的阶段,但是大量的研究必将慢慢推进其效果。我相信有一天弱监督检测也可以实现很好的效果,甚至有一天能会有很好的无监督的目标检测模型呢! 在弱监督检测方法中,WSDDN可以说是开山之作了,在这篇文章中我将分享一下我从论文中看到的以及一些讨论和思考。

1 WSDDN模型

弱监督检测任务(WSOD)指的是仅使用图像的类别标签去训练目标检测任务。如果这方面能够有突破,这将极大程度地减少数据集准备的成本。WSDDN是CVPR 2016的一篇WSOD方向的论文,这应该算是WSOD方向的开山之作了。其原始启发是:将预训练的CNN作为一个特征描述器,然后结合区域推荐算法(比如SSW),形成一个2 stream的网络用于筛选出得分高的类别和region。

WSDDN结构图

上面两幅图像是WSDDN的结构图。该模型首先用一个在ImageNet上经过预训练的CNN网络,比如VGG11,使用CNN的最后一层作为特征描述子去描述区域推荐算法提取的Region,并通过SPP将这些描述进行归一化;然后通过两个通道分别构造类别和区域的得分,计算整幅图像的得分;最后设计损失函数对模型进行优化。

注意:在这篇文章中,我们若提到WSDDN结构图就是指上图的下半部分,并且描述符号也沿用该图。 根据论文中的描述,这幅图中φ_pool5个人认为实际上应该是φ_relu5。

1.1 预训练CNN

采用在ImageNet上预训练的CNN,这里以VGG11为例,为了方便后续理解,这里给出VGG11的网络结构:

VGG11特征层

注意,我只画出了网络中的卷积特征部分,而没有画出后面的全卷积层和分类器,因为这里只需要用到CNN的特征描述能力。图中橙粉色描述的是VGG的网络结构,蓝色和紫色的是对应特征输出的Shape。图中我用紫色框表示的feature就是文章中所说的conv 5这一层在经过全局池化前的特征,也就是该方法所用的特征描述子。其对3*224*224的原图处理,可以得到512*14*14大小的特征。

论文作者使用通过分类任务预训练的CNN特征来进行目标检测任务的intuition是:在计算机视觉领域,有很多论文使用在分类数据集上预训练的CNN作为backbone,然后设计网络的head部分和loss,在目标数据集上进行fine-tuning来解决目标检测、语义分割或关键点回归的任务。所以认为,在大规模上数据集以分类任务为目标训练的CNN特征,对其他领域也有较好的特征描述能力。

1.2 CNN特征描述

第二步就是利用上一节所说的CNN特征去描述推荐区域的特征。这个推荐区域来自于区域生成算法,比如Selective search(SSW)Edge boxes

1.2.1 区域推荐算法

这类区域推荐算法实际上多是通过传统的图像分析方法通过边缘、纹理、颜色等特征尽可能地推荐图像中可能存在目标的区域,在这里我不详述,仅需要知道使用该算法我们在图像中获取很多推荐区域,如下图红色的框为SSW推荐区域:

SSW

1.2.2 Spatial partial pooling

Spatial partial pooling(SPP)常被添加与CNN的尾部,比如目标检测的Neck部分,用于融合不同层的特征并将其池化至同一尺寸。SPP的过程如下图所示:

SPP

1.2.3 推荐区域的特征描述

记SSW生成的推荐框构成集合为R,输入图像为x,我们可以利用如下公式表示整个特征描述过程:

[公式]

其中,φ(x,R)表示的是描述得到特征,等式右边表示的是获取输入图像在relu5层(也就是我们上面说的conv 5的输出,上文描述省略了激活函数)的推荐区域的特征,然后将每个区域的特征通过SPP结构进行归一化和池化操作。那么,具体过程时怎样的呢?

以特征网络采用VGG11为例,我们我们有一幅图像大小为3*224*224,对应WSDDN结构图中的x。然后将图像输入到VGG11中进行处理,得到特征 [公式] ;同时,利用SSW处理这幅图像得到区域推荐框集合R,集合R中包含 [公式] ,每个推荐框 [公式] 具有其在原图中的顶点位置和款到,记为 [公式] 。那么这些推荐框在 [公式] 中也有其坐标位置,为 [公式] ,我们重新记为 [公式] 。这是因为特征层尺寸为14*14,相对于原图224*224缩小了16倍。

计算的推荐区域在特征层的位置后,就可以获取推荐框内的特征ROI,推荐区域r_i对应的特征尺寸大小为 [公式] ,然后通过SPP和view线性化之后得到 [公式] ,如下图所示:

推荐区域描述

上图n表示一幅图像中的推荐框数量。完成特征描述后,根据WSDDN的结构图,后面紧跟着的是两层全连接层 [公式][公式] ,其输出大小均为 n*4096。

1.3 分类和检测分支

然后,依据WSDDN结构图,网络走向了两个分支分别是 [公式][公式] ,这两层也都是全连接层,其输出大小均为n*c(c为数据集class的数量)。其中,fc8c是分类分支,fc8d是检测分支。其不同体现在,在不同的维度上进行softmax操作,得到 [公式][公式] ,计算过程分别如下:

[公式]

上述两个公式均为softmax函数,区别在于对于n*c的输入:在计算 [公式] 的时候,我们沿着第二个维度c计算softmax,也就是说统计同一个region box的计算c个类的指数和,然后用当前元素除以该值;而在计算 [公式] 时,我们沿着第一个维度n计算softmax,也就是对于同一类,计算当前元素相对于不同region box的分数。

完成两个得分之后,用Hadamard乘法(逐元素相乘),然后沿着region box的维度计算整幅图像的得分,如下式:

[公式]
[公式]

于是,整个WSDDN的网络我们就走通了,此时我们得到图像的类别得分 σ_class, 检测得分σ_det, 以及整幅图像得分y.

2 模型训练

为了训练模型时不破坏预训练CNN的特征模型能力,通常是用一个较小的初始学习率在目标数据集上面进行fine-tuning,WSDDN用的就是这种方法。当然,我们也可以采用冻结权重的方法以加速训练过程:(1)刚开始冻结φ_relu5之前的权重,学习网络的后半部分;(2)待一定epoch后,loss降低,学习率变得较小时再解冻权重,训练整个网络。

在训练时,网络中不再是输入一幅图像,而是一批图像。那么为了能够训练,在进行SSW的时候不同图像获取推荐框的数量应该是一个相同的值,否则就会应为维度不一致而无法转换成张量输入网络中。

2.1 损失函数

在损失函数方面,论文使用的是看起来有点像BCE loss的函数,但是针对模型结构进行了设计,如下式:

[公式]

上式中 [公式] 为图像的类别标签属于{-1, 1},当包含目标类时为1,不包含时为-1;w为网络权重,等式右边前半部分为正则项。

讨论关于等式右边的那一部分我其实有点模糊,可以发现log函数内部的取值范围是(0, 1),那么log函数的值域是(-无穷,0)始终为负值,且预测越准的时候结果越接进去0,预测越不准越接近于负无穷。所以我比较怀疑这个公式漏了个绝对值符号,如果是这样应该比较符合: [公式] 当然,这仅仅是个人看法,欢迎指正。

2.2 检测框规则化

由于弱监督检测没有检测框的标注,所以无法进行NMS。这样,检测结果容易造成同一个目标被多个检测框选中的情况。为了减缓这种情况,WSDDN在损失后面后面加上了一个惩罚项,如下式:

[公式]

上式中, [公式] 为是图像i,类别k中得分最高的检测框的y层特征, [公式] 是同一副图像同一类中与得分最高的检测框IoU超过60%的检测框的fc7层特征, [公式] 这批图像中包含类别k的图像数量, [公式] 为图像i类别k中与得分最高的检测框IoU超过60%的检测框的数量。这个惩罚项的意义是,惩罚那些与最高概率框重叠超过60%,但是特征相似度不高的选举框。

3 局限与未来方向

论文的实验结果我没有放上来,一则论文已经是2016年的研究结果,二则是抛开这个研究领域来说效果并不好。WSDDN的实验结果也暴露了以下缺点:

(1)丢失实例: 一幅图像中如果有多个同类实例时,往往只会检测到显著的一个或几个实例,而丢失其他实例;

(2)容易把邻近的同一类的多个实例检测成同一个实例;

(3)检测框容易只框选出实例目标的显著部分,框不全。

(4)依赖于区域推荐算法的限制,没有收到推荐的区域将不会被检测到。

当然,弱监督检测就算放在目前(2020年)来说,它还是有很大的突破空间的:

(1)如何设计更好的结构,以提高精度、减少上述缺陷;

(2)如何减少计算复杂度;

(3)如何提升区域推荐算法的质量,或者从其他角度考虑获取图像中的候选区域。

期待!

4 Reference

[1] Hakan Bilen, Andrea Vedaldi. Weakly Supervised Deep Detection Networks. arXiv:1511.02853v4.

[2] K. van de Sande, J. Uijlings, T. Gevers, and A. Smeulders.Segmentation as selective search for object recognition. In Proc. ICCV, 2011.

[3] C. L. Zitnick and P. Doll´ar. Edge boxes: Locating object proposals from edges. In Proc. ECCV, pages 391–405, 2014.

[4] Karen Simonyan, Andrew Zisserman. VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION. arXiv:1409.1556v6.

[5] He K , Zhang X , Ren S , et al. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2014, 37(9):1904-16.

[6] https://github.com/holdmeplease/WSDDN