弱监督检测初识——Weakly Supervised Deep Detection Networks解读

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

1 WSDDN模型

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

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

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

1.1 预训练CNN

采用在ImageNet上预训练的CNN,这里以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推荐区域:
在这里插入图片描述

1.2.2 Spatial partial pooling

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

在这里插入图片描述

1.2.3 推荐区域的特征描述

记SSW生成的推荐框构成集合为R,输入图像为x,我们可以利用如下公式表示整个特征描述过程:
ϕ ( x ; R ) = ϕ S P P ( . ; R ) ∘ ϕ r e l u 5 ( x ) \phi(x;R)=\phi_{SPP}(.;R)\circ\phi_{relu5}(x) ϕ(x;R)=ϕSPP(.;R)ϕrelu5(x)
其中,φ(x,R)表示的是描述得到特征,等式右边表示的是获取输入图像在relu5层(也就是我们上面说的conv 5的输出,上文描述省略了激活函数)的推荐区域的特征,然后将每个区域的特征通过SPP结构进行归一化和池化操作。那么,具体过程时怎样的呢?

以特征网络采用VGG11为例,我们我们有一幅图像大小为3*224*224,对应WSDDN结构图中的x。然后将图像输入到VGG11中进行处理,得到特征 φ r e l u 5 φ_relu5 φrelu5;同时,利用SSW处理这幅图像得到区域推荐框集合R,集合R中包含 r 1 , r 2 , . . . , r n r_1, r_2, ..., r_n r1,r2,...,rn,每个推荐框r_i具有其在原图中的顶点位置和款到,记为x_i, y_i, w_i, h_i。那么这些推荐框在φ_relu5中也有其坐标位置,为 x i / / 16 , y i / / 16 , w i / / 16 , h i / / 16 x_i // 16, y_i // 16, w_i // 16, h_i // 16 xi//16,yi//16,wi//16,hi//16,我们重新记为 x i ′ , y i ′ , w i ′ , h i ′ x'_i, y'_i, w'_i, h'_i xi,yi,wi,hi。这是因为特征层尺寸为14*14,相对于原图224*224缩小了16倍。

计算的推荐区域在特征层的位置后,就可以获取推荐框内的特征ROI,推荐区域r_i对应的特征尺寸大小为 512 ∗ w i ′ ∗ h i ′ 512 * w'_i * h'_i 512wihi,然后通过SPP和view线性化之后得到φ(x,R),如下图所示:

在这里插入图片描述

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

1.3 分类和检测分支

然后,依据WSDDN结构图,网络走向了两个分支分别是φ_fc8c和φ_fc8d,这两层也都是全连接层,其输出大小均为n*c(c为数据集class的数量)。其中,fc8c是分类分支,fc8d是检测分支。其不同体现在,在不同的维度上进行softmax操作,得到σ_class和σ_det,计算过程分别如下:
[ σ c l a s s ( x c ) ] i j = e x i j c ∑ k = 1 C e x k j c [\sigma_{class}(x^c)]_{ij} = \frac{e^{x_{ij}^{c}}}{\sum_{k=1}^{C}e^{x_{kj}^c}} [σclass(xc)]ij=k=1Cexkjcexijc

[ σ c l a s s ( x c ) ] i j = e x i j d ∑ k = 1 ∣ R ∣ e x i k d [\sigma_{class}(x^c)]_{ij} = \frac{e^{x_{ij}^{d}}}{\sum_{k=1}^{|R|}e^{x_{ik}^d}} [σclass(xc)]ij=k=1Rexikdexijd

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

完成两个得分之后,用Hadamard乘法(逐元素相乘),然后沿着region box的维度计算整幅图像的得分,如下式:
x r = σ c l a s s ( x c ) ⊙ σ d e t ( x d ) x^r = \sigma_{class}(x^c) \odot \sigma_{det}(x^d) xr=σclass(xc)σdet(xd)

y = ∑ r = 1 ∣ R ∣ x r y = \sum_{r=1}^{|R|}x^r y=r=1Rxr

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

2 模型训练

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

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

2.1 损失函数

在损失函数方面,论文使用的是看起来有点像BCE loss的函数,但是针对模型结构进行了设计,如下式:
E ( w ) = λ 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n ∑ k = 1 C l o g ( y k i ( ϕ k y ( x i ∣ w ) − 1 2 ) + 1 2 ) E(w) =\frac{\lambda}{2}||w||^2 +\sum_{i=1}^{n}\sum_{k=1}^{C}log(y_{ki}(\phi_k^y(x_i|w) -\frac12) +\frac12) E(w)=2λw2+i=1nk=1Clog(yki(ϕky(xiw)21)+21)
上式中y_ki为图像的类别标签属于{-1, 1},当包含目标类时为1,不包含时为-1;w为网络权重,等式右边前半部分为正则项。

讨论关于等式右边的那一部分我其实有点模糊,可以发现log函数内部的取值范围是(0, 1),那么log函数的值域是(-无穷,0)始终为负值,且预测越准的时候结果越接进去0,预测越不准越接近于负无穷。所以我比较怀疑这个公式漏了个绝对值符号,如果是这样应该比较符合:
E ( w ) = λ 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n ∑ k = 1 C ∣ l o g ( y k i ( ϕ k y ( x i ∣ w ) − 1 2 ) + 1 2 ) ∣ E(w) =\frac{\lambda}{2}||w||^2 +\sum_{i=1}^{n}\sum_{k=1}^{C}|log(y_{ki}(\phi_k^y(x_i|w) -\frac12) +\frac12)| E(w)=2λw2+i=1nk=1Clog(yki(ϕky(xiw)21)+21)
当然,这仅仅是个人看法,欢迎指正。

2.2 检测框规则化

由于弱监督检测没有检测框的标注,所以无法进行NMS。这样,检测结果容易造成同一个目标被多个检测框选中的情况。为了减缓这种情况,WSDDN在损失后面后面加上了一个惩罚项,如下式:
1 n C ∑ k = 1 C ∑ i = 1 N k + ∑ r = 1 ∣ R ˉ ∣ 1 2 ( ϕ k ∗ i y ) 2 ( ϕ k ∗ i f c 7 − ϕ k r i f c 7 ) T ( ϕ k ∗ i f c 7 − ϕ k r i f c 7 ) \frac{1}{nC}\sum_{k=1}^{C}\sum_{i=1}^{N_k^+}\sum_{r=1}^{|\bar{R}|}\frac12(\phi_{k*i}^{y})^2(\phi_{k*i}^{fc7}-\phi_{kri}^{fc7})^T(\phi_{k*i}^{fc7}-\phi_{kri}^{fc7}) nC1k=1Ci=1Nk+r=1Rˉ21(ϕkiy)2(ϕkifc7ϕkrifc7)T(ϕkifc7ϕkrifc7)
上式中,φ_k*i^y为是图像i,类别k中得分最高的检测框的y层特征,φ_kri^fc7是同一副图像同一类中与得分最高的检测框IoU超过60%的检测框的fc7层特征,N_k^+这批图像中包含类别k的图像数量, ∣ R ˉ ∣ |\bar{R}| Rˉ为图像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

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔡逸超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值