简介

图1:论文原文

该论文是发表在CVPR2020{\rm CVPR\ 2020}CVPR 2020上的一篇关于目标检测的论文,针对以往目标检测算法在分类和回归时都是使用的同一组anchor{\rm anchor}anchor,文章提出一种在分类和回归阶段动态采样Anchor{\rm Anchor}Anchor的思路。文章将其定义为多anchor{\rm anchor}anchor学习,在每一次迭代中选择最优Anchor{\rm Anchor}Anchor来更新模型,然后使用该模型去选择下一次迭代所使用的Anchor{\rm Anchor}Anchor。如此反复下去直到得到最优的Anchor{\rm Anchor}Anchor和最优模型。论文原文 源码


0. Abstract

在基于深度学习的目标检测算法中,分类器和回归器往往通过同一组Anchor{\rm Anchor}Anchor优化,作者由于分类和回归的任务性质不相同,这种做法会降低模型整体的性能。论文提出一种多实例学习的方法MAL{\rm MAL}MAL,通过在迭代过程选择不同的Anchor{\rm Anchor}Anchor来共同优化分类器和回归器。作者基于RetinaNet{\rm RetinaNet}RetinaNet模型,在MSCOCO{\rm MS\ COCO}MS COCO数据集上达到了SOTA{\rm SOTA}SOTA。

论文贡献:(一)提出的MAL{\rm MAL}MAL通过动态地评估和选择Anchor{\rm Anchor}Anchor来共同优化分类器和回归器;(二)提出Anchor{\rm Anchor}Anchor抑制策略避免模型陷入局部最优解;(三)MAL{\rm MAL}MAL达到了SOTA{\rm SOTA}SOTA。


1. Introduction

近来,基于深度学习的目标检测算法将分类和定位整合,从而可以共享卷积特征,通常使用总Loss{\rm Loss}Loss完成分器和回归器的优化。通常,为了应对图像目标的多样性,算法往往在图像上铺设足够多的Anchor{\rm Anchor}Anchor,以期充分覆盖图像中的目标。但是,通过一组固定的手工设定的Anchor{\rm Anchor}Anchor来共同优化分类器和回归器会降低模型的整体性能。如,IoU{\rm IoU}IoU往往作为正负Anchor{\rm Anchor}Anchor采样的唯一标准,而这时如果没有置信度的约束的话,就会出现以下情况:

图2:Baseline和MAL

如上图(a){\rm (a)}(a)是没有使用MAL{\rm MAL}MAL的结果。在第一幅图中存在两个候选框,第一个黄色框的置信度较低,而和真实框的交并比较大;第二个红色框的置信度较高,而和真实框的交并比较小。直观上,我们认为应该选择黄色框作为最终的检测结果,但经由NMS{\rm NMS}NMS处理产生的最终的检测结果为红色框。图(b){\rm (b)}(b)是MAL{\rm MAL}MAL处理后得到的正确的检测结果。

论文提出的MAL{\rm MAL}MAL是一种自动学习Anchor{\rm Anchor}Anchor的方法。在训练阶段,基于Anchor{\rm Anchor}Anchor与真实框的交并比,为每个目标产生一个Anchor{\rm Anchor}Anchor袋(形象化的说法,其实就是一组Anchor{\rm Anchor}Anchor)。然后,通过分类置信度和交并比共同决定正样本,使用该组Anchor{\rm Anchor}Anchor更新模型;模型又通过以上规则选择下一组Anchor{\rm Anchor}Anchor,如此重复下去直到得到最优Anchor{\rm Anchor}Anchor和最优模型。


2. Related Work

2.1 Anchor-Based Method

传统的如Faster{\rm Faster}Faster-RCNN{\rm RCNN}RCNN、FPN{\rm FPN}FPN、SSD{\rm SSD}SSD等方法基于IoU{\rm IoU}IoU为Anchor{\rm Anchor}Anchor分类。如果某Anchor{\rm Anchor}Anchor与某真实框的交并比大于设定的正样本阈值,则将其确定为正样本;如果与任何真实框的交并比均小于设定的负样本阈值,则将其确定为负样本。在推理阶段,使用NMS{\rm NMS}NMS处理一组与某个目标均有较大交并比的候选框。前人也有许多工作优化每次用于训练的Anchor{\rm Anchor}Anchor。

2.2 Anchor-Free Method

近来,出现了大量Anchor{\rm Anchor}Anchor-Free{\rm Free}Free的目标检测方法,FCOS{\rm FCOS}FCOS、CornerNet{\rm CornerNet}CornerNet、RepPoints{\rm RepPoints}RepPoints等,它们不依赖于人工设定的Anchor{\rm Anchor}Anchor。但作者指出,由于缺乏Anchor{\rm Anchor}Anchor的指导,这类方法中的边界框回归仍是一个值得关注的问题。


3. The Proposed Approach

MAL{\rm MAL}MAL基于RetinaNet{\rm RetinaNet}RetinaNet实现,它在此基础上优化了RetinaNet{\rm RetinaNet}RetinaNet中的Anchor{\rm Anchor}Anchor选择方案。RetinaNet{\rm RetinaNet}RetinaNet的结构如下:

图3:RetinaNet

3.1 RetinaNet Revisit

如图333,RetinaNet{\rm RetinaNet}RetinaNet的左端是一个FPN{\rm FPN}FPN。对于FPN{\rm FPN}FPN的每一层,使用一个分类分支和回归分支用于预测物体的类别和位置。同时,针对前景背景类别的极不平衡性,RetinaNet{\rm RetinaNet}RetinaNet使用FocalLoss{\rm Focal\ Loss}Focal Loss作为损失函数。现令x∈Xx\in \mathcal{X}x∈X表示输入图像,它的标注类别为y∈Yy\in \mathcal{Y}y∈Y。其中X\mathcal{X}X表示训练数据集集合,Y\mathcal{Y}Y表示标注类别信息集合。BBB为标注的边界框,任一边界框bi∈Bb_i\in Bbi​∈B由其类别biclsb_i^{cls}bicls​和位置bilocb_i^{loc}biloc​组成。Anchor{\rm Anchor}Anchor为aja_jaj​对应的置信度预测和位置预测分别为ajclsa_j^{cls}ajcls​和ajloca_j^{loc}ajloc​。同时,当Anchor{\rm Anchor}Anchor与标注框的交并比大于给定的正样本阈值,则确定其为正样本aj+a_{j+}aj+​;否则为负样本aj−a_{j-}aj−​。则网络的学习由如下函数监督:θ∗=arg⁡max⁡θ(fθ(aj+,bicls)−γfθ(aj−,bicls))(1)\theta^*=\arg \max_\theta(f_{\theta}(a_{j+},b_i^{cls})-\gamma f_{\theta}(a_{j-},b_i^{cls}))\tag{1}θ∗=argθmax​(fθ​(aj+​,bicls​)−γfθ​(aj−​,bicls​))(1)

其中,fθ(⋅)f_{\theta}(·)fθ​(⋅)表示分类程序,γ\gammaγ用于平衡正负样本。上式对应于RetinaNet{\rm RetinaNet}RetinaNet中的分类损失部分。同时,RetinaNet{\rm RetinaNet}RetinaNet中的回归损失可以表示如下:θ∗=arg⁡max⁡θgθ(aj+,biloc)(2)\theta^*=\arg \max_{\theta}g_{\theta}(a_{j+},b_i^{loc})\tag{2}θ∗=argθmax​gθ​(aj+​,biloc​)(2)

注意回归损失只涉及正样本的计算。上式中的θ\thetaθ均表示网络的参数,gθ(⋅)g_{\theta}(·)gθ​(⋅)表示回归程序。对于上式(1)(1)(1)和式(2)(2)(2),通常分别使用FocalLoss{\rm Focal\ Loss}Focal Loss和SmoothL1Loss{\rm SmoothL1\ Loss}SmoothL1 Loss,即表示为Lcls=(aj,bicls)\mathcal{L}_{cls}=(a_j,b_i^{cls})Lcls​=(aj​,bicls​)和Lloc=(aj,biloc)\mathcal{L}_{loc}=(a_j,b_i^{loc})Lloc​=(aj​,biloc​)。

在训练RetinaNet{\rm RetinaNet}RetinaNet的整个过程中,每个采样的Anchor{\rm Anchor}Anchor独立地监督网络学习目标的分类和定位,而没有使用二者之间的相关性。这可能导致产生的结果具有很高的定位精度,但是由于具有较低的置信度而被NMS{\rm NMS}NMS筛选掉。

3.2 Multiple Anchor Learning

为了解决上述问题,论文提出多Anchor{\rm Anchor}Anchor学习的策略,如下图:

图4:MAL的整体流程

在每次迭代过程中,MAL{\rm MAL}MAL从Anchor{\rm Anchor}Anchor袋中挑选出高得分的Anchor{\rm Anchor}Anchor的用于更新模型,然后模型会评估具有新的置信度的Anchor{\rm Anchor}Anchor用于构建下一次迭代所使用的Anchor{\rm Anchor}Anchor袋。注意这是一个交替优化的过程:首先使用最优化的Anchor{\rm Anchor}Anchor去更新参数得到最优化的模型;然后最优化的模型反过来选择最优化的Anchor{\rm Anchor}Anchor。如此下去得到最终的优化结果。具体流程如下:对于物体ithi^{th}ith,为其建立一个Anchor{\rm Anchor}Anchor袋AiA_iAi​。AiA_iAi​中包含了与物体ithi^{th}ith具有最高交并比的kkk个Anchor{\rm Anchor}Anchor。然后,MAL{\rm MAL}MAL基于分类和回归置信度共同评估AiA_iAi​中的Anchor{\rm Anchor}Anchor,该置信度主要用于确定Anchor{\rm Anchor}Anchor的选择。基于RetinaNet{\rm RetinaNet}RetinaNet,MAL{\rm MAL}MAL的目标函数定义如下:{θ∗,ai∗}=arg⁡max⁡θ,aj∈AiFθ(aj,bi)=arg⁡max⁡θ,aj∈Aifθ(aj,bicls)+βgθ(aj,biloc)(3)\begin{aligned} \{\theta^*,a_i^*\} &=\arg \max_{\theta,a_j\in A_i}F_{\theta}(a_j,b_i)\\ &=\arg \max_{\theta,a_j\in A_i}f_{\theta}(a_j,b_i^{cls})+\beta g_{\theta}(a_j,b_i^{loc}) \end{aligned}\tag{3}{θ∗,ai∗​}​=argθ,aj​∈Ai​max​Fθ​(aj​,bi​)=argθ,aj​∈Ai​max​fθ​(aj​,bicls​)+βgθ​(aj​,biloc​)​(3)

上式可以为物体ithi^{th}ith找到最优Anchor{\rm Anchor}Anchor为ai∗a_i^*ai∗​,同时为模型找到最优参数为θ∗\theta^*θ∗。则MAL{\rm MAL}MAL的损失函数可写作:{θ∗,ai∗}=arg⁡min⁡θ,aj∈AiLdet(aj,bi)=arg⁡min⁡θ,aj∈AiLcls(aj,bicls)+βLreg(aj,biloc)(4)\begin{aligned} \{\theta^*,a_i^*\} &=\arg \min_{\theta,a_j\in A_i}\mathcal{L}_{det}(a_j,b_i)\\ &=\arg \min_{\theta,a_j\in A_i}\mathcal{L}_{cls}(a_j,b_i^{cls})+\beta \mathcal{L}_{reg}(a_j,b_i^{loc})\tag{4} \end{aligned}{θ∗,ai∗​}​=argθ,aj​∈Ai​min​Ldet​(aj​,bi​)=argθ,aj​∈Ai​min​Lcls​(aj​,bicls​)+βLreg​(aj​,biloc​)​(4)

3.3 Selection-Depression Optimization

随机梯度下降是一种非凸函数的优化方法,它可能得到次优解。为了在每次迭代中选择最优的Anchor{\rm Anchor}Anchor,MAL{\rm MAL}MAL通过扰动Anchor{\rm Anchor}Anchor的特征来降低选择Anchor{\rm Anchor}Anchor时的置信度。

3.3.1 Anchor Selection

传统的MIL{\rm MIL}MIL算法倾向于选择得分最高的一组Anchor{\rm Anchor}Anchor。但是在目标检测中,很难直接从每个Anchor{\rm Anchor}Anchor袋中选择出得分最高的Anchor{\rm Anchor}Anchor。论文提出的方法是,在学习过程中线性地降低Anchor{\rm Anchor}Anchor袋的数量,从∣Ai∣|A_i|∣Ai​∣到111。这里,令λ=t/T\lambda=t/Tλ=t/T,其中ttt和TTT表示当前迭代次数和总的迭代次数;ϕ(λ)\phi(\lambda)ϕ(λ)表示最高得分的Anchor{\rm Anchor}Anchor的索引且∣ϕ(λ)∣=∣Ai∣∗(1−λ)+1|\phi(\lambda)|=|A_i|*(1-\lambda)+1∣ϕ(λ)∣=∣Ai​∣∗(1−λ)+1。则上式(3){\rm (3)}(3)可写作:{θ∗,ai∗}=arg⁡max⁡θ,aj∈Ai∑j∈ϕ(λ)Fθ(aj,bi)(5)\{\theta^*,a_i^*\} =\arg \max_{\theta,a_j\in A_i}\sum_{j\in \phi(\lambda)}F_{\theta}(a_j,b_i)\tag{5}{θ∗,ai∗​}=argθ,aj​∈Ai​max​j∈ϕ(λ)∑​Fθ​(aj​,bi​)(5)

基于上式,MAL{\rm MAL}MAL在前期模型利用众多Anchor{\rm Anchor}Anchor来更新学习。最后,随着迭代的进行,最终得到的一个Anchor{\rm Anchor}Anchor即为当前目标所对应的最优Anchor{\rm Anchor}Anchor。

3.3.2 Anchor Depression

基于IAN{\rm IAN}IAN,MAL{\rm MAL}MAL提出Anchor{\rm Anchor}Anchor抑制模块来扰动其特征,从而降低Anchor{\rm Anchor}Anchor的置信度。如下图:

图5:Anchor Depression

为了进一步优化训练损失函数,MAL{\rm MAL}MAL基于选择的Anchor{\rm Anchor}Anchor学习更加丰富的特征。设卷积特征图和注意力特征图分别为UUU和MMM,其中M=∑lwl∗UlM=\sum_{l}w_l*U_lM=∑l​wl​∗Ul​、www表示全局平均池化、lll为通道索引。通过将最高得分的Anchor{\rm Anchor}Anchor设置为零后得到一个新的抑制后的特征图M′=(1−1P)∗MM^{'}=(1-1_{P})*MM′=(1−1P​)∗M,其中PPP表示高置信度的位置。则特征图变为:V=(1+M′)∘Ul(6)V=(\bold 1+M^{'})\circ U_l\tag{6}V=(1+M′)∘Ul​(6)

其中1\bold 11表示单位矩阵、∘\circ∘表示对应位置元素相乘。结合本节内容,上式(6)(6)(6)变为:V=(1+(1−1ψ(λ))∗M)∘Ul(7)V=(\bold 1+(1-1_{\psi(\lambda)})*M)\circ U_l\tag{7}V=(1+(1−1ψ(λ)​)∗M)∘Ul​(7)

3.4 Implementation

MAL{\rm MAL}MAL基于RetinaNet{\rm RetinaNet}RetinaNet,不同的是MAL{\rm MAL}MAL在前向传播的过程中,首先计算每个Anchor{\rm Anchor}Anchor的检测置信度,然后选择toptoptop-kkk个Anchor{\rm Anchor}Anchor组成Anchor{\rm Anchor}Anchor袋。然后通过3.33.33.3节的内容抑制Anchor{\rm Anchor}Anchor的分数,接着使用最佳Anchor{\rm Anchor}Anchor更新模型。最后重复以上过程直到完成整个检测流程。MAL{\rm MAL}MAL的推理过程与RetinaNet{\rm RetinaNet}RetinaNet基本相同。

3.5 Optimization Analysis

Anchor{\rm Anchor}Anchor选择-抑制策略类似于一个对抗过程:Anchor{\rm Anchor}Anchor选择的目的是找到最高分数的Anchor{\rm Anchor}Anchor来最小化Ldet\mathcal L_{det}Ldet​;然后Anchor{\rm Anchor}Anchor抑制的目的是扰乱特征使其置信度降低,从而会使Ldet\mathcal L_{det}Ldet​增大。但同时这一过程也有助于MAL{\rm MAL}MAL在非凸函数中找到最优解。如下图:

图6:Anchor选择-抑制


4. Experiments

图7:MAL和RetinaNet

上图第一行和第三行是RetinaNet{\rm RetinaNet}RetinaNet的可视化结果,第二行和第四行是MAL{\rm MAL}MAL的可视化结果。由结果图对比可知,MAL{\rm MAL}MAL能够抑制大多数无关的背景信息,同时保留更多的前景信息。

图8:消融实验

图9:与其他目标检测方法的对比


5. Conclusion

论文提出一种动态Anchor{\rm Anchor}Anchor的概念,在训练的迭代过程中使用的Anchor{\rm Anchor}Anchor不尽相同,这主要取决于上一轮Anchor{\rm Anchor}Anchor所更新的模型。同时在选择Anchor{\rm Anchor}Anchor时,抑制得分最高的Anchor{\rm Anchor}Anchor,以避免模型陷入次优解。这个Anchor{\rm Anchor}Anchor的选择和抑制的过程像是是一个对抗的过程。而整个MAL{\rm MAL}MAL的训练过程是一个循环迭代的过程。


参考

  1. Ke W, Zhang T, Huang Z, et al. Multiple Anchor Learning for Visual Object Detection[C]//Proceedingags of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 10206-10215.
  2. https://blog.csdn.net/sinat_17456165/article/details/106798986.


(二十七)论文阅读 | 目标检测之MAL相关推荐

  1. (三十二)论文阅读 | 目标检测之SEPC

    简介 图1:论文原文 本文介绍的是CVPR2020{\rm CVPR\ 2020}CVPR 2020的一篇关于目标检测的文章,SEPC{\rm SEPC}SEPC.它的主要关注点依旧是目标检测中常用的 ...

  2. 深度学习论文阅读目标检测篇(二):Fast R-CNN《Fast R-CNN》

    深度学习论文阅读目标检测篇(二):Fast R-CNN<Fast R-CNN> Abstract 摘要 1. Introduction 引言 1.1 RCNN and SPPnet 1.2 ...

  3. 深度学习论文阅读目标检测篇(一):R-CNN《Rich feature hierarchies for accurate object detection and semantic...》

    深度学习论文阅读目标检测篇(一):R-CNN<Rich feature hierarchies for accurate object detection and semantic segmen ...

  4. 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》

    深度学习论文阅读目标检测篇(三):Faster R-CNN< Towards Real-Time Object Detection with Region Proposal Networks&g ...

  5. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

  6. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  7. 深度学习论文阅读目标检测篇(四)中文版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中文版:YOLOv1<YouOnlyLookOnce:Unified,Real-TimeObjectDetection> 摘要 1.引言 2. 统一的检测 ...

  8. 深度学习论文阅读目标检测篇(六)中文版:YOLOv3《 An Incremental Improvement》

    深度学习论文阅读目标检测篇(六)中文版:YOLOv3< An Incremental Improvement> 摘要 1. 引言 2. 方案 2.1. 边界框预测 2.2. Class P ...

  9. 深度学习论文阅读目标检测篇(五)中文版:YOLOv2《 YOLO9000: Better, Faster, Stronger》

    深度学习论文阅读目标检测篇(五)中文版:YOLOv2< YOLO9000: Better, Faster, Stronger> 摘要 1.引言 2. 更好 3. 更快 4. 更强 5. 结 ...

最新文章

  1. 2019男生身高受欢迎程度表
  2. open python语言实现 pdf_使用python操作Pdf代码实现
  3. 腾讯云发布全链路数据开发平台WeData,大数据开发迈入新时代
  4. 弹出对话框提示输入_每日一贴——如何关闭CAD的各种提示信息和对话框?
  5. 接口隔离原则(设计模式4)
  6. C# JSON格式数据用法
  7. linux动态库与静态库混合连接
  8. java获取远程网络图片文件流、压缩保存到本地
  9. linux下截图软件 shutter
  10. 百度迁徙数据的快捷采集方法分析总结
  11. 从头开始vue创建项目_从头开始创建Windows 7主题包
  12. 注册Flash8.ocx控件
  13. MATLAB符号运算——极限
  14. 二叉平衡树AVL简介
  15. AHU HuffmanTree编码数据结构实验
  16. 阿里云CDN是什么?阿里云CDN配置与购买优惠教程
  17. UVA 12307 Smallest Enclosing Rectangle(旋转卡壳)
  18. php 验证手机号码格式
  19. 计算机桌面不同步,电脑有时候出现时间不同步怎么办,解决方法
  20. 什么是流批一体化、区块链

热门文章

  1. 【C语言】如何去求最大公约数和最小公倍数?
  2. matlab模糊控制图怎么导出_使用MATLAB生成模糊控制的离线查询表
  3. 快速搭建自己的直播服务器,完成属于你的直播服务。(以windows 下虚拟机centos为例,对安装步骤进行详细说明)
  4. Linux - UAC USB声卡
  5. 【Matlab】Niblack算法和Otsu算法
  6. FAThdc.inc
  7. ChatGPT 拓展资料:Telegram Bot 打造专属聊天机器人
  8. 数据库函数依赖与候选码求解
  9. Android开发论坛汇总
  10. 什么是 PKI? 公钥基础设施的定义和指南