文章目录

  • 1 WSDDN模型
    • 1.1 预训练CNN
    • 1.2 CNN特征描述
      • 1.2.1 区域推荐算法
      • 1.2.2 Spatial partial pooling
      • 1.2.3 推荐区域的特征描述
    • 1.3 分类和检测分支
  • 2 模型训练
    • 2.1 损失函数
    • 2.2 检测框规则化
  • 3 局限与未来方向
  • 4 Reference

弱监督检测是一个很有前景的研究方向——仅通过样本的类别标签就可以实现目标检测任务(乍一看有点类似之前的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)=ϕSPP(.;R)∘ϕrelu5(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中进行处理,得到特征φrelu5φ_relu5φr​elu5;同时,利用SSW处理这幅图像得到区域推荐框集合R,集合R中包含r1,r2,...,rnr_1, r_2, ..., r_nr1​,r2​,...,rn​,每个推荐框r_i具有其在原图中的顶点位置和款到,记为x_i, y_i, w_i, h_i。那么这些推荐框在φ_relu5中也有其坐标位置,为xi//16,yi//16,wi//16,hi//16x_i // 16, y_i // 16, w_i // 16, h_i // 16xi​//16,yi​//16,wi​//16,hi​//16,我们重新记为xi′,yi′,wi′,hi′x'_i, y'_i, w'_i, h'_ixi′​,yi′​,wi′​,hi′​。这是因为特征层尺寸为14*14,相对于原图224*224缩小了16倍。

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

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

1.3 分类和检测分支

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

[σclass(xc)]ij=exijd∑k=1∣R∣exikd[\sigma_{class}(x^c)]_{ij} = \frac{e^{x_{ij}^{d}}}{\sum_{k=1}^{|R|}e^{x_{ik}^d}} [σclass​(xc)]ij​=∑k=1∣R∣​exikd​exijd​​

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

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

y=∑r=1∣R∣xry = \sum_{r=1}^{|R|}x^r y=r=1∑∣R∣​xr

于是,整个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=1n∑k=1Clog(yki(ϕky(xi∣w)−12)+12)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λ​∣∣w∣∣2+i=1∑n​k=1∑C​log(yki​(ϕky​(xi​∣w)−21​)+21​)
上式中y_ki为图像的类别标签属于{-1, 1},当包含目标类时为1,不包含时为-1;w为网络权重,等式右边前半部分为正则项。

讨论关于等式右边的那一部分我其实有点模糊,可以发现log函数内部的取值范围是(0, 1),那么log函数的值域是(-无穷,0)始终为负值,且预测越准的时候结果越接进去0,预测越不准越接近于负无穷。所以我比较怀疑这个公式漏了个绝对值符号,如果是这样应该比较符合:
E(w)=λ2∣∣w∣∣2+∑i=1n∑k=1C∣log(yki(ϕky(xi∣w)−12)+12)∣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λ​∣∣w∣∣2+i=1∑n​k=1∑C​∣log(yki​(ϕky​(xi​∣w)−21​)+21​)∣
当然,这仅仅是个人看法,欢迎指正。

2.2 检测框规则化

由于弱监督检测没有检测框的标注,所以无法进行NMS。这样,检测结果容易造成同一个目标被多个检测框选中的情况。为了减缓这种情况,WSDDN在损失后面后面加上了一个惩罚项,如下式:
1nC∑k=1C∑i=1Nk+∑r=1∣Rˉ∣12(ϕk∗iy)2(ϕk∗ifc7−ϕkrifc7)T(ϕk∗ifc7−ϕkrifc7)\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}) nC1​k=1∑C​i=1∑Nk+​​r=1∑∣Rˉ∣​21​(ϕk∗iy​)2(ϕk∗ifc7​−ϕkrifc7​)T(ϕk∗ifc7​−ϕ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

弱监督检测初识——Weakly Supervised Deep Detection Networks解读相关推荐

  1. [CVPR 2016] Weakly Supervised Deep Detection Networks论文笔记

    Weakly Supervised Deep Detection Networks,Hakan Bilen,Andrea Vedaldi https://www.cv-foundation.org/o ...

  2. 论文笔记 Weakly Supervised Deep Detection Networks - CVPR 2016

    Weakly Supervised Deep Detection Networks Hakan Bilen, Andrea Vedaldi CVPR, 2016 (PDF) (Citations 58 ...

  3. Utilizing the Instability in Weakly Supervised Object Detection (CVPR2019) 解读

    论文链接:Utilizing the Instability in Weakly Supervised Object Detection 本文主要贡献: 通过分析检测器多示例学习(MIL)的不稳定性, ...

  4. 弱监督语义分割--Weakly Supervised Semantic Segmentation using Web-Crawled Videos

    Weakly Supervised Semantic Segmentation using Web-Crawled Videos CVPR2017 https://arxiv.org/abs/1701 ...

  5. 论文报告笔记(四) Towards Precise End-to-end Weakly Supervised Object Detection Network

    文章目录 论文报告笔记(四) Towards Precise End-to-end Weakly Supervised Object Detection Network 弱监督学习 WSDDN OIC ...

  6. 论文笔记 Object-Aware Instance Labeling for Weakly Supervised Object Detection - ICCV 2019

    Object-Aware Instance Labeling for Weakly Supervised Object Detection Kosugi ICCV, 2019 (PDF) (Citat ...

  7. 【论文阅读】【弱监督-3D目标检测】Weakly Supervised 3D Object Detection from Point Clouds

    前言 ACM MM 2020录用的一篇文章.不使用任何真实的3D框来进行训练.通过采用归一化的点云密度来生成目标候选框.不过性能一般,算是第一个吃螃蟹的人 MIT和微软合作的论文,模型简称为VS3D ...

  8. 文章阅读:Generalizable Beat-by-Beat Arrhythmia Detection by Using Weakly Supervised Deep Learning

    文章来源:https://www.frontiersin.org/articles/10.3389/fphys.2022.850951/full 摘要: 动态心电图(ECG)监测中的逐搏心律失常检测对 ...

  9. Weakly Supervised Deep Learning for Thoracic DiseaseClassification and Localization on Chest X-rays

    摘要 胸部X光检查时临床上最常见和最实惠的放射检查之一.虽然在胸部X线上检测胸部疾病仍然是一项具有挑战性的任务,但由于1)不同胸部疾病患者的X涉嫌上病变区域出现的高度不同,以及2)放射科医生缺乏准确的 ...

最新文章

  1. OBJC依赖库管理利器cocoapods 安装及使用详细图解
  2. 计算机视觉与深度学习 | 粒子群算法与遗传算法(GA)及与蚁群算法(ACO)比较
  3. 工作总结4:拦截器的使用
  4. 求出该数组中特定元素的和,特定元素是指个位和十位不包含7的偶数。
  5. 图形化安装配置:安装oracle、新建数据库、用plsql连接oracle,套路明白了其实挺简单...
  6. oracle crs 命令,ORACLE RAC CRSCTL 命令使用 及 执行的用户
  7. python定时器 循环_python从写定时器学习Thread
  8. Java 算法 摆动序列
  9. JS引擎线程的执行过程的三个阶段(二)
  10. python数字图像处理(11):图像自动阈值分割
  11. 认识Snort3 (1):编译、安装与简单使用
  12. 数学建模学习笔记(十七)传染病模型(SIER)
  13. C++实现二叉树的非递归遍历
  14. 英文论文评审意见_怎样写英文审稿意见
  15. E: 无法定位软件包 mjepgtools
  16. 张超 计算机 清华 论文,张超-清华大学航天航空学院
  17. TopCoder HowEasy
  18. 【渝粤教育】广东开放大学财务会计2 形成性考核 (34)
  19. SSRF漏洞之常见Bypass篇
  20. GIt+jenkins代码自动上线

热门文章

  1. 新站如何使用好百度站长平台工具
  2. SV绿皮书笔记(四)
  3. MSBI表格模型与多维模型比较
  4. Office 365 API平台概览
  5. STM32 | STM32CubeMX基础之TIM
  6. Python+Vue计算机毕业设计房屋租赁管理系统p8pvy(源码+程序+LW+部署)
  7. 【深度学习】120G+训练好的word2vec模型(中文词向量)
  8. 音视频入门 (iOS上fdk-aac的交叉编译)
  9. dlclose隐藏的秘密!
  10. android圆形的ImageView