MAL 用于视觉目标检测的多锚点学习

  • Abstract
  • 1 Introduction
  • 2 Related Work
    • 2.1 Anchor-Based Method
    • 2.2 Anchor-Free Method
  • 3 The Proposed Approach
    • 3.1 RetinaNet回顾
    • 3.2 Multiple Anchor Learning(MAL)
    • 3.3 Selection-Depression Optimization
    • 3.4 Implementation
    • 3.5 Optimization Analysis
  • 4 Experiments
    • 4.1 Experimental Setting
    • 4.2 Ablation Study
    • 4.3 Comparison with State-of-the-Art Detectors
  • 5 Conclusion


论文地址:https://arxiv.org/abs/1912.02252

开源代码: https://github.com/KevinKecc/MAL

本文亮点:

  1. 提出了一种多anchor学习的方法,以object-anchor匹配的角度出发,通过联合优化目标定位与分类,得到最佳的anchor。
    ——具体操作: 通过结合分类与定位置信度,选出分数比较高的anchor,然后用这些anchor来更新模型参数,再用更新后的模型重新评估被选择的anchor的分类和定位置信度,不断重复以上过程,直至得出最优的anchor和模型参数。
  2. 为了消除次优选择,提出了selection-depression优化策略,以保证anchor的选择不会掉入到局部最小值中。
    ——具体操作: 通过selection最小化损失函数,使得陷入到局部最优,然后通过depression增加损失函数跳出局部最优,不断重复上面过程,最终可得到一个最优解。

Abstract

  • 基于anchor的方法中,检测器是利用目标与anchor之间的IoU作为分配anchor的标准,每个被分配的anchor独立地监督网络学习,并进行分类和位置回归。
  • 手动设置的anchor存在被限制优化的问题:
    分类和位置回归是联合固定使用的,但是这两个模块之间并没有交互,如果一个预测结果的回归精度比较高,但分类置信度比较低时,那么就有可能在NMS操作中被过滤掉了。
  • 提出的解决办法:
    为了解决这个问题,作者提出了使用多anchor学习(MAL) 来选择anchor并联合优化基于CNN的目标检测器中的两个模块,这是一种可以自动学习anchor的方法,通过anchor-object相匹配来联合优化分类和位置回归

1 Introduction

  • 为解决分类与回归相互独立的问题,已经提出了IoU-Net和freeachor方法,但是训练时两者依然是独立的。
  • 本文提出了一种自动anchor学习(MAL)的方法,从anchor-object匹配的角度出发,联合优化目标分类与定位。
  • MAL具体流程:
  1. 在MAL训练阶段,通过anchor-object bbox之间的IoU进行排序,选择IoU位于前面的anchor,用它们构造一个属于该目标的anchor bag。
  2. 然后,通过结合分类和定位分数,来评估每个anchor bag中的正样本anchor。
  3. 在每次训练迭代中,MAL使用所有的正样本anchor来优化训练损失,选择得分最高的anchor作为最终的anchor。——分类分数与定位分数就能同时达到最高。

  • selection-depression优化策略:
    每次迭代中选择分数最高的anchor可能不会达到最好的效果,有可能目标的一部分被错误地定位,但因为分类分数比较高,导致最终分数也比较高。
    为解决此问题,提出了selection-depression优化策略,通过扰动分数较高的anchor特征,来反复降低该anchor的置信度,使得所选择的anchor是最优的。


图解:

  • 上图是基于NMS前后的baseline检测器与MAL对比效果图。
  • (a)baseline检测器(RetinaNet):
    NMS之前,该检测器可能会产生具有低分类分数高位置回归IoU的边界框(黄色bbox)或者具有高分类分数的低位置回归IoU(红色bbox)。
  • (b)多anchor学习(MAL):
    MAL会产生具有高分类和位置回归的bbox,使得NMS后的检测效果更好。

本文的贡献:

  1. 提出了一种多anchor学习方法(MAL),通过评估和选择anchor来联合优化目标检测的分类和定位模块。
  2. 提出一种选择-抑制优化策略,为防止MAL在检测训练过程中陷入次优解。

2 Related Work

2.1 Anchor-Based Method

Anchor-Based Detection:
Faster R-CNN,FPN,RetinaNet,SSD,DSSD,YOLO。

Anchor Assignment(分配):

  1. 上述检测器将大量的anchor分布在卷积特征图上,以便它们能够匹配不同长宽比和比例的目标。
  2. 训练阶段,anchors被分配给目标(正anchor)背景(负anchor),其IoUs与gt的数值相同。
  3. 推理阶段,anchors独立地预测目标bbox,在NMS过程后保留分类得分最高的框。
  4. 这类方法在目标部分被遮挡或者不规则形状的情况下,是不可行的。

Anchor Optimization (优化):

  • MetaAnchor: 学习从具有子网的任意自定义的先验框。
  • GuidedAnchoring: 利用语义特征来引导anchor预测,同时用预测anchor替换dense anchor。
  • FreeAnchor: 使用人制定的anchor匹配变成“自由”anchor匹配。
  • 这类方法将检测器的训练作为最大的似然估计(MLE)过程 ,目的是学习从分类和局部两方面更好地解释一类目标的特性。

  • IoU-Net: 在预测bbox和真实框之间的IoU,选择anchor。
  • IoU-guided NMS: 两者相对比,IoU-Net减少了错误率。
  • Gaussian YOLO: 引入定位不确定性,说明anchor/bbox的可靠性。该方法是利用推理过程中评估定位的不确定性,提高了分类和回归精度。

2.2 Anchor-Free Method

  • FCOS: 利用单元级监督和中心bbox回归进行目标检测。
  • CornerNet和CenterNet: 用关键点监督替代bbox监督。
  • Extreme point和RepPoint: 使用点集来预测目标边界框。

3 The Proposed Approach

  • MAL是基于RetinaNet网络结构修改的。通过找到升级RetinaNet找到最优的分类和局部anchors/features。

3.1 RetinaNet回顾

  • anchor 公式说明:
    anchors 是用于监督网络学习的,公式如下:

    positive anchors 用于优化目标定位,公式如下:

    上述两个公式,是通过最小化Focal Loss L c l s ( a j , b i c l s ) L_{cls}(a_{j},b_{i}^{cls}) Lcls​(aj​,bicls​)和 Smooth L1 Loss L l o c ( a j , b i l o c ) L_{loc}(a_{j},b_{i}^{loc}) Lloc​(aj​,biloc​)实现的

  • 参数说明:

  • f θ ( ⋅ ) f_{\theta}(\cdot) fθ​(⋅)表示分类函数。

  • g θ ( ⋅ ) g_{\theta}(\cdot) gθ​(⋅)表示bbox回归函数。

  • γ \gamma γ表示平衡正负anchor重要性的一个参数。

  • θ \theta θ是网络参数。

  • x ∈ χ x\in \chi x∈χ是训练集。

  • y ∈ Y y\in Y y∈Y是类别标签集。

  • B定义为正样本中gt的bbox。

  • b i ∈ B b_{i}\in B bi​∈B是由分类标签 b i c l s b_{i}^{cls} bicls​和空间位置 b i l o c b_{i}^{loc} biloc​组成。

  • a j c l s a_{j}^{cls} ajcls​是anchor的分类置信度(分类); a j l o c a_{j}^{loc} ajloc​是anchor输出的bbox(回归)。

  • a j + a_{j+} aj+​(正anchor)表示当IoU的值大于设定的阈值。 a j − a_{j-} aj−​(负anchor)表示当IoU的值小于设定的阈值。

  • 总结:
    在retinanet中,每个anchor节点独立监督地完成分类和定位任务,并不考虑两者的关联性。这就可能导致定位分数高而分类分数低的anchor被nms过滤掉。

3.2 Multiple Anchor Learning(MAL)


图解:

  • 从特征金字塔中,挑选出anchor bags,使用MAL模块进行anchors选择,最后进行目标检测。

具体流程:

  1. 设定第 i i i个目标构建一个anchor bag A i A_{i} Ai​。这个anchor bag 是根据 a n c h o r s anchors anchors与 g t gt gt之间的IoUs选出前 k k k个anchors放入 A i A_{i} Ai​。
  2. 通过网络参数学习,MAL能够在 A i A_{i} Ai​中评估出每个anchor的分类和定位置信度。这个置信度用于anchor选择,表明anchor在网络参数演化过程中的重要性。
  3. 这里仅对positive anchor进行计算,MAL的目标函数如下:

    参数说明:
  • f θ ( ⋅ ) f_{\theta}(\cdot) fθ​(⋅)和 g θ ( ⋅ ) g_{\theta}(\cdot) gθ​(⋅)分别表示分类和定位置信度。
  • β \beta β是正则化因子。
  1. 通过MAL,最终要为目标 i i i选出最优的positive anchor a i ∗ a_{i}^{*} ai∗​,并学习网络参数 θ ∗ \theta^{*} θ∗。
  2. 将目标函数公式(3)转化为损失函数,公式如下:

    参数说明:(这是3.1中定义的损失)
  • Focal Loss: L c l s ( a j , b i c l s ) L_{cls}(a_{j},b_{i}^{cls}) Lcls​(aj​,bicls​)
  • Smooth L1 Loss: L l o c ( a j , b i l o c ) L_{loc}(a_{j},b_{i}^{loc}) Lloc​(aj​,biloc​)

3.3 Selection-Depression Optimization

  • 问题提出:
    优化公式(3)和(4)使用随机梯度下降(SGD)是一个非凸问题,可能会导致次优anchor选择的问题。
  • 解决办法:
    通过扰动相应特征来反复降低所选择anchor的置信度。


图解:

  1. 上图是MAL实现过程,在RetinaNet的基础上添加了anchor selection模块和anchor depression模块。
  2. U U U和 V V V分别表示抑制前和后的特征图; M M M和 M ′ M^{'} M′分别表示抑制前后的注意力图
  3. Anchor Selection:
  • 这部分采取了 “All-to-Top-1” anchor的选择策略。在学习过程中,线性降低 ∣ A i ∣ |A_{i}| ∣Ai​∣中的anchor数量直至将为1。
  • 假设 λ = t / T \lambda=t/T λ=t/T,其中 t t t是训练的当前迭代次数, T T T是训练的总迭代次数。然后,让 ϕ ( λ ) \phi (\lambda ) ϕ(λ)表示high-ranked anchors(排名前几名)的索引, ∣ ϕ ( λ ) ∣ = ∣ A i ∣ ∗ ( 1 − λ ) + 1 |\phi (\lambda )|=|A_{i}|*(1-\lambda )+1 ∣ϕ(λ)∣=∣Ai​∣∗(1−λ)+1。因此,公式(3)改写为:
  • MAL利用目标区域内的多个anchor来学习早期训练epochs的检测模型,并在最后一个epochs中使用一个最优的anchor使模型收敛。
  1. Anchor Depression:
    模块作用: 给未被选择的anchor更多的机会使它参与训练。
    模块具体流程:
    (1)假设 U U U和 M M M分别为原始特征图和注意力图。
    (2) M = ∑ l w l ∗ U l M=\sum_{l}^{ }w_{l}* U_{l} M=∑l​wl​∗Ul​,其中 w w w是 U U U的全局平均池化, l l l是 U U U的通道索引。
    (3)通过将比较高的值降低至0,生成新的depressed attention map: M ′ = ( 1 − I P ) ∗ M M^{'}=(1-\mathbb{I}_{P})*M M′=(1−IP​)∗M,其中 I \mathbb{I} I是0-1的指数函数, P P P是high-value position。
    所以,被扰动后的特征图 V V V如下

    其中, 1 1 1是单位矩阵, ◦ ◦ ◦表示元素乘法。
    当使用延续策略,可以把公式(6)改写为:

    其中, ψ ( λ ) \psi (\lambda ) ψ(λ)表示被扰动的像素数。

3.4 Implementation

  • 基于RetinaNet上修改的,使用FPN作为backbone,与RetinaNet设置的anchor相同。
  • anchor的范围是[32, 813]。
  • MAL只在检测器训练过程中用于学习更具代表性的特征,测试和推理过程并不会参与。

3.5 Optimization Analysis

选择-抑制策略是一个对抗的过程。
Anchor Selection找出得到较高的anchor,从而最小化检测损失 L d e t L_{det} Ldet​;而Anchor Depression通过扰动这些被选择的anchor的特征,使这些anchor的置信度降低,从而使得 L d e t L_{det} Ldet​再一次上升。


图解:

  • 第一幅图中,MAL选择次优的anchor并且陷入了损失函数的局部最小值。
  • 第二幅图中,anchor depression增加了损失,使得局部最小值被“填充”,使得MAL能够继续进行优化。
  • 填充后,得到第三幅图。
  • 选择-抑制策略这种方式,能在最终收敛的时候,MAL得到更好的机会找到最优解。

4 Experiments

4.1 Experimental Setting

  • backbone: ResNet-50,ResNet-101,和ResNeXt-101的FPN作为主干网。
  • 数据集: COCO-minival

4.2 Ablation Study


图解:

  • 第一行和第三行是RetinaNet的注意力图;第二行和第四行是MAL的注意力图。
  • 从第90k那列看出,MAL可以检测出RetinaNet未注意力到的部分,和抑制非目标的部分。
  • 10k到90k的过程,可以看出注意力部分从全局逐渐变成了某些关键部分。

Table-1: 在COCO minval数据集上,使用ResNet50作为backbone的比较。

图解:

  • (a)表示每个anchor bag中不同anchor数k的检测性能。
    结论: k=50是AP的最高得分,k=40,50,60的AP值都比较稳定。
  • (b)表示Anchor selection策略 ϕ ( λ ) \phi (\lambda ) ϕ(λ)。其中, S S S表示选择,选择了所有实例和all-top 1的实例。
    结论: 当使用anchor bags代替retinanet的scattered anchors时,AP从35.6%提高到38.14%。当连续优化时,AP进一步提高到38.39%。
  • (c)表示Anchor depression策略 ψ ( λ ) \psi (\lambda ) ψ(λ)。其中, D D D表示抑制,比较恒定函数(在整个训练过程中保持相同的depression rate)、阶跃函数和对称阶跃函数。
    结论:
    (1)使用恒定函数时,会使得注意力图top-50%的像素点压缩,使得AP下降。原因是在训练初期,网络参数被随机初始化,抑制了对抗性学习。
    (2)使用阶跃函数时,使凹陷部分从0.0%逐步增加到50%,因此性能提高到了35.88%。
    (3)使用对称阶跃函数时,将凹陷部分从0.0%增加到50%,然后从50%降低到0.0%,使得性能提升到36.18%。


图解:

  • S S S表示selection, D D D表示detection。


图解:

  • 上图展示了类别(牙刷、风筝)定位结果的误差因子分析。
  • 定位错误(Loc)阻碍了不规则形状物体(倾斜和细长物体)的检测性能。MAL可以降低这些目标的定位错误。

4.3 Comparison with State-of-the-Art Detectors

Table-2: 在MS-COCO test-dev数据集上,MAL与RetinaNet方法(单阶段)的性能比较。使用越深的backbone,性能提升得越快。

Table-3: 在MS-COCO test-dev数据集上,与目前一阶段和二阶段方法的比较。下面顺序是根据从小到大进行排序的。

5 Conclusion

  1. 提出了一种多anchor学习方法(MAL),通过评估和选择anchor来联合优化目标检测的分类和定位模块。
  2. 提出一种选择-抑制优化策略,为防止MAL在检测训练过程中陷入次优解。

参考博客:https://blog.csdn.net/qq_30146937/article/details/105725804

CVPR2020 | 论文阅读——Multiple Anchor Learning for Visual Object Detection相关推荐

  1. 论文阅读 End-to-End Multi-View Fusion for 3D Object Detection in Lidar Point Clouds

    [论文阅读] End-to-End Multi-View Fusion for 3D Object Detection in Lidar Point Clouds 原文链接:https://arxiv ...

  2. 【论文阅读】【综述】3D Object Detection 3D目标检测综述

    目录 写在开头 3D Object Detection 相关博客: Sliding window Vote3Deep: Fast Object Detection in 3D Point Clouds ...

  3. ICPR 2020 | 论文阅读 ——SyNet: An Ensemble Network for Object Detection in UAV Images

    SyNet 1. Motivation 2. Method 2.1. Object detecion 2.2. SyNet 2.3 Image Augmentation 3. Experiments ...

  4. 论文阅读:Oriented RepPoints for Aerial Object Detection (CVPR 2022)

    paper:https://arxiv.org/abs/2105.11111 code:GitHub - LiWentomng/OrientedRepPoints: The code for &quo ...

  5. DAL(Dynamic Anchor Learning for Arbitrary-Oriented Object Detection)

    遥感第二篇读了DAL,也是本校自动化专业前辈的工作.本篇也是参考了其自己的博客用于学习和总结,附上链接.个人认为这篇的流畅程度+严谨程度要胜过S2ANet. 总体理解 S2ANet从网络结构入手,主要 ...

  6. 论文阅读:CenterNet: Keypoint Triplets for Object Detection(CVPR2019)

    论文地址:https://arxiv.org/abs/1904.08189 github实现:https://github.com/Duankaiwen/CenterNet 摘要 目标检测中,基于关键 ...

  7. 论文阅读:Disp R-CNN:Stereo 3D Object Detection via Shape Prior Guided Instance Disparity Estimation

    Disp R-CNN: Stereo 3D Object Detection via Shape Prior Guided Instance Disparity Estimation 摘要(理解) 作 ...

  8. 三维目标检测论文阅读:PointPillars: Fast Encoders for Object Detection from Point Clouds

    PointPillars: Fast Encoders for Object Detection from Point Clouds code ID: https://github.com/nuton ...

  9. 论文阅读 | Recurrent Filter Learning for Visual Tracking

    Contribution 提出一个新颖的recurrent filter learning 框架从而去捕捉空间与时间信息,并且不要求在线fine-tune(on tracking) 设计一个高效有效的 ...

最新文章

  1. 串的顺序存储结构c语言版,数据结构C语言版串的定长顺序存储表示和实现.doc
  2. 首次写文章,分享一些渗透、安全工具
  3. 字节跳动---万万没想到之聪明的编辑
  4. sap.ca.scfld.md.ComponentBase.extend
  5. 历史数据如何处理_数据库表数据量大读写缓慢如何优化(1)【冷热分离】
  6. 全国计算机等级考试题库二级C操作题100套(第39套)
  7. 2008r2无线服务器,2008r2云服务器
  8. NS2中认知无线电仿真
  9. oracle 时间转换 1970,oracle 中将unix/linux时间戳进行转换(转)
  10. 龙格库塔格式的计算精度推导
  11. 有了这些组件和模板,天下没有难做的移动端驾驶舱
  12. 算法学习 | 期望dp+概率dp
  13. 英语语法——名词和名词性从句
  14. 硬核科普:年薪30万的数据分析师,每天到底在干些什么?
  15. 天才小毒妃 第945章 龙非夜心情很不好
  16. 什么是双线双IP和双线单IP
  17. ADC的动态范围 DR
  18. python中pd是什么意思_何时申请(pd.to_numeric)以及何时在python中使用...
  19. 数据管理平台系列之Zeppline安装与使用
  20. 【论文】轻量级网络squeezenet论文的详细翻译

热门文章

  1. GPS(Global Position System)全球定位系统原理
  2. 三菱FX3U485-BD与台达变频器modbus通讯
  3. linux系统可以写入光盘吗_基于linux的国产操作系统,是真国产吗?
  4. 详解DNS域名解析服务
  5. 关于星空极速无法在VISTA下无法安装的问题
  6. 开源面向对象数据库 db4o 之旅: db4o 查询方式“db4o 之旅(二)”
  7. android contextmenu 自定义,ContextMenu高级用法
  8. 快递技巧分享,教你如何查询物流信息并进行复制、导出
  9. android linearlayout最大高度,Android中最简单最常用的LinearLayout线性布局
  10. dell服务器r710xenserver7.30加独显德众GT630