原文链接:https://bbs.cvmart.net/topics/2960
专注计算机视觉前沿资讯和技术干货
微信公众号:极市平台
官网:https://www.cvmart.net/


最近因为AutoAssign这篇paper的原因,再加上之前对目标检测中label assign问题很感兴趣, 看了几篇label assign相关论文(FreeAnchor、ATSS、AutoAssign),梳理一下几篇论文的关系做个记录~~

我用一张图大致梳理出几个label assign相关论文的关系

FreeAnchor、ATSS、AutoAssign都是Label Assign方面的改进。ATSS提出RetinaNet和FCOS的gap主要源于采样方式的不同,ATSS提出更好的Label Assign,来缩小RetinaNet和FCOS的差距,FreeAnchor在RetinaNet的基础上提出更好的Label Assign,AutoAssign在FCOS的基础上提出更好的Label Assign。

RetinaNet是Anchor-based经典算法,FCOS是Anchor-Free的经典算法,FCOS在RetinaNet的基础上,去掉anchor先验,转变成point先验,同时增加了center-ness分支来去除低质量的point采样。相关的算法细节可以看我之前的笔记

陀飞轮:目标检测:Anchor-Free时代

陀飞轮:Soft Sampling:探索更有效的采样策略

ReinaNet和FCOS主要有3点不同:

1.每个位置的先验数量不同。RetinaNet每个位置有几个anchor先验,而FCOS每个位置只有一个point先验。

2.正负样本的采样方式不同。RetinaNet通过IOU来选择正负样本,而FCOS通过空间和尺度的约束来选择正负样本。

3.回归的起始点不同。RetinaNet回归的起始点是筛选过的anchor box,而FCOS回归的起始点是筛选过的point box。

Inconsistency Removal

FCOS相比于只设置一个anchor先验的RetinaNet来说,COCO数据集上的mAP高差不多5个点,为了公平的比较RetinaNet和FCOS的精度差异的原因,ATSS的paper中用一致的trick对RetinaNet和FCOS进行实验。如实验所示,相同trick设置下,RetinaNet比FCOS少0.8个点,这时RetinaNet和FCOS的差别仅仅在于采样方式和回归起点的不同。

Essential Difference

为了进一步探究采样方式和回归起点对于精度的影响,ATSS中对RetinaNet和FCOS排列组合了四种实验进行比较。如实验所示,回归起点对精度影响微乎其微,采样方式才是RetinaNet和FCOS最本质的差别。

通过上述实验观察,引出了目标检测任务中非常重要的难点,How to define positive and negative training samples? 也就是本文关注的label assign问题。好的label assign方式可以提升目标检测器的上限。

ATSS

ATSS的paper中进而提出了一种更加合适的label assign方式,称为ATSS。

ATSS吸收了RetinaNet和FCOS的采样方式的优点,ATSS采样方式如下:

1.基于anchor box和ground-truth的中心点距离选择候选正样本

2.使用候选anchor box的mean和std之和作为IOU阈值自适应的挑选候选正样本

3.通过候选正样本中心是否落在ground-truth内筛选出最终的正样本

下图中显示出了ATSS对于不同分布的样本可以自适应的调整阈值,挑选到合适尺度下的正样本。

自适应阈值为:
t_g=m_g+v_gt \_ { g } = m \_ { g } + v \_ { g } t_g=m_g+v_g

RetinaNet和FCOS都可以叠加ATSS的采样方式,实验结果显示,RetinaNet和FCOS在ATSS的采样方式下,mAP基本上持平,缩小了Anchor-based和Anchor-Free之间的精度差异。验证了好的采样方式能够提升目标检测精度的上限。

FreeAnchor

将检测训练过程看成一个极大似然估计问题
L(θ)=∑_a_j∈A_+∑_b_i∈BC_ijL_ijcls(θ)+β∑_a_j∈A_+∑_b_i∈BC_ijL_ijloc(θ)+∑_a_j∈A_−L_jbg(θ)\mathcal { L } ( \theta ) = \sum \_ { a \_ { j } \in A \_ { + } } \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { L } \_ { i j } ^ { c l s } ( \theta ) + \beta \sum \_ { a \_ { j } \in A \_ { + } } \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { L } \_ { i j } ^ { l o c } ( \theta ) + \sum \_ { a \_ { j } \in A \_ { - } } \mathcal { L } \_ { j } ^ { b g } ( \theta ) L(θ)=∑_a_j∈A_+∑_b_i∈BC_ijL_ijcls(θ)+β∑_a_j∈A_+∑_b_i∈BC_ijL_ijloc(θ)+∑_a_j∈A_−L_jbg(θ)

P(θ)=e−L(θ)=∏_a_j∈A_+(∑_b_i∈BC_ije−L_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ije−βL_ijloc(θ))∏_a_j∈A_−e−L_jbg(θ)=∏_a_j∈A_+(∑_b_i∈BC_ijP_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ijP_ijloc(θ))∏_a_j∈A_−P_jbg(θ)\begin{aligned} \mathcal { P } ( \theta ) & = e ^ { - \mathcal { L } ( \theta ) } \\ & = \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } e ^ { - \mathcal { L } \_ { i j } ^ { c l s } ( \theta ) }) \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } e ^ { - \beta \mathcal { L } \_ { i j } ^ { l o c } ( \theta ) }) \prod \_ { a \_ { j } \in A \_ { - } } e ^ { - \mathcal { L } \_ { j } ^ { b g } ( \theta ) } \\ & = \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { P } \_ { i j } ^ { c l s } ( \theta ) ) \prod \_ { a \_ { j } \in A \_ { + } } ( \sum \_ { b \_ { i } \in B } C \_ { i j } \mathcal { P } \_ { i j } ^ { l o c } ( \theta ) ) \prod \_ { a \_ { j } \in A \_ { - } } \mathcal { P } \_ { j } ^ { b g } ( \theta ) \end{aligned} P(θ)​=e−L(θ)=∏_a_j∈A_+(∑_b_i∈BC_ije−L_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ije−βL_ijloc(θ))∏_a_j∈A_−e−L_jbg(θ)=∏_a_j∈A_+(∑_b_i∈BC_ijP_ijcls(θ))∏_a_j∈A_+(∑_b_i∈BC_ijP_ijloc(θ))∏_a_j∈A_−P_jbg(θ)​

构造极大似然估计问题的recall和precision似然函数

转变成损失函数

FreeAnchor在RetianNet的基础上,将检测器的训练过程定义成一个极大似然估计问题,通过优化recall和precision似然函数的loss,自适应的将匹配的anchor构建成bag of anchors。

将检测看成一个极大似然估计问题的好处是可以不用平衡分类和定位分支,通过一个loss来监督检测器的训练,并且可以自适应的调整匹配的anchor。

如下图所示,随着训练的进行,检测器挑选出匹配的anchor。

AutoAssign

但是FreeAnchor和ATSS本质上还是通过中心先验、IOU、空间和尺度约束来进行label assign,避免不了大量超参数的调整,不是完完全全的自适应label assign。

最近的AutoAssign在FCOS的基础上,通过引入ImpObj、Center Weighting和Confidence Weighting三个分支,将FCOS中根据空间和尺度定义正负样本的方式和center-ness分支都去掉,将label assign做的更加彻底,完完全全通过CNN学习自适应的label assign方式。

借鉴了作者的理解:https://zhuanlan.zhihu.com/p/158907507

From VanillaDet to AutoAssign

VanillaDet 是指:对于一个 gt box,所有在这个 gt box 内的位置(所有 FPN 层都包含在内),都是这个 gt 的正样本;反之,所有不落在 gt 框内部的位置都是负样本。可以理解为label assign的下限。

从实验结果可知,更好的label assign方式可以大幅度提升检测器的精度。

Center Weighting

引入高斯中心先验,通过与gt中心点的距离学习出不同类别自适应的中心先验
G(d⃗∣μ⃗,σ⃗)=e−(d⃗−μ⃗)22σ⃗2G ( \vec { d } \mid \vec { \mu } , \vec { \sigma } ) = e ^ { \frac { - ( \vec { d } - \vec { \mu } ) ^ { 2 } } { 2 \vec { \sigma } ^ { 2 } } } G(d∣μ​,σ)=e2σ2−(d−μ​)2​
Confidence Weighting

通过ImpObj分支来避免引入大量背景位置

P_i(cls∣θ)=P_i(cls∣obj,θ)P_i(obj∣θ)\mathcal { P } \_ { i } ( c l s \mid \theta ) = \mathcal { P } \_ { i } ( c l s \mid o b j , \theta ) \mathcal { P } \_ { i } ( o b j \mid \theta ) P_i(cls∣θ)=P_i(cls∣obj,θ)P_i(obj∣θ)
与FreeAnchor相似,将分类和定位联合看成极大似然估计问题,学习出样本的置信度
L_i(θ)=L_icls(θ)+λL_iloc(θ)=−log⁡(P_i(cls∣θ))+λL_iloc(θ)=−log⁡(P_i(cls∣θ)e−λL_iloc(θ))=−log⁡(P_i(cls∣θ)P_i(loc⁡∣θ))=−log⁡(P_i(θ))\begin{aligned} \mathcal { L } \_ { i } ( \theta ) & = \mathcal { L } \_ { i } ^ { c l s } ( \theta ) + \lambda \mathcal { L } \_ { i } ^ { l o c } ( \theta ) \\ & = - \log \left( \mathcal { P } \_ { i } ( c l s \mid \theta ) \right) + \lambda \mathcal { L } \_ { i } ^ { l o c } ( \theta ) \\ & = - \log ( \mathcal { P } \_ { i } ( c l s \mid \theta ) e ^ { - \lambda \mathcal { L } \_ { i } ^ { l o c } ( \theta ) }) \\ & = - \log \left( \mathcal { P } \_ { i } ( c l s \mid \theta ) \mathcal { P } \_ { i } ( \operatorname { loc } \mid \theta ) \right) \\ & = - \log \left( \mathcal { P } \_ { i } ( \theta ) \right) \end{aligned} L_i(θ)​=L_icls(θ)+λL_iloc(θ)=−log(P_i(cls∣θ))+λL_iloc(θ)=−log(P_i(cls∣θ)e−λL_iloc(θ))=−log(P_i(cls∣θ)P_i(loc∣θ))=−log(P_i(θ))​

C(P_i)=ep_i(θ)τC \left( \mathcal { P } \_ { i } \right) = e ^ { \frac { p \_ { i } ( \theta ) } { \tau } } C(P_i)=eτp_i(θ)​

positive weights

通过Center Weighting和Confidence Weighting得到Positive weights
w_i+=C(P_i)G(d⃗_i)∑_j∈S_nC(P_i)G(d⃗_i)w \_ { i } ^ { + } = \frac { C ( \mathcal { P } \_ { i } ) G ( \vec { d } \_ { i } ) } { \sum \_ { j \in S \_ { n } } C \left( \mathcal { P } \_ { i } \right) G ( \vec { d } \_ { i } ) } w_i+=∑_j∈S_nC(P_i)G(d_i)C(P_i)G(d_i)​
neative weights

通过最大IOU得到Negative weights
w_i−=1−f(11−iou_i)w \_ { i } ^ { - } = 1 - f ( \frac { 1 } { 1 - \mathrm { i } \mathrm { ou } \_ { i } } ) w_i−=1−f(1−iou_i1​)
对于前景和背景的 weighting function,有一个共同的特点是 “单调递增”;也就是说,一个位置预测 pos / neg 的置信度越高,那么他们当多前景 / 背景的权重就越大。

loss function

Positive weights和Negative weights在训练过程中动态调整达到平衡,像是在学一个正负样本的决策边界,而根据IOU阈值来定义正负样本的决策边界是人为定义的。
L(θ)=−∑_n=1Nlog⁡(∑_i∈S_nw_i+P_i+)−∑_j∈Slog⁡(w_j−P_j−)\mathcal { L } ( \theta ) = - \sum \_ { n = 1 } ^ { N } \log ( \sum \_ { i \in S \_ { n } } w \_ { i } ^ { + } \mathcal { P } \_ { i } ^ { + } ) - \sum \_ { j \in S } \log ( w \_ { j } ^ { - } \mathcal { P } \_ { j } ^ { - } ) L(θ)=−∑_n=1Nlog(∑_i∈S_nw_i+P_i+)−∑_j∈Slog(w_j−P_j−)

Ablation Studies


通过消融实验可以看出,引入的3个分支对检测器都有提升。

Visualization

AutoAssign 并不显式的区分不同 FPN 层的 locations,而是全部平等地看待。因此,只需要依靠一套 weighitng 策略,就可以同时解决 spatial 和 scale 的 assignment 问题

AutoAssign另一个理解,keypoint在heatmap上分类即定位,AutoAssign学习到的正负样本决策边界,是为了筛选出那些更加容易定位的点,分类后定位难度小。AutoAssign在动态学习真正有效的前景。

一些想法:

其实早期也有很多探索label assign相关的paper,比如RPN、FPN、cascade-RCNN、IoU-Net等等,但是这些文章基本上还是在anchor先验的框架下,hand-craft的采样方式设置空间和尺度,最近出现了很多通过CNN自适应学习出适合样本的采样方式,比如GuidedAnchor、MetaAnchor、FSAF、PISA等等,但是都没有很好的解决label assign问题,还是存在一些敏感参数的设置。AutoAssign整体的设置感官上还是略显复杂,但是避免了大量超参数的设置,使得检测器更加鲁棒。

目标检测任务是介于分类和分割之间,比起分类可以进一步定位出位置,比起分割标注更为简单,但是会不可避免的引入无关的背景信息,这就导致了目标检测器对于正负样本采样格外敏感,anchor机制的引入正是为了更好的定位目标但是不可避免的引入了label assign问题,如何定义正负样本显的格外重要,单纯的通过IOU阈值来区分正负样本过于hard,**直觉上来讲,目标检测任务的label assign应该是一种连续问题,没有真正意义上的正负样本之分,简单的根据IOU阈值定义正负样本,这样会将一个连续的label assign问题变成了一个离散的label assign问题,无法根本性解决目标检测的label assign问题。**最新的几种label assign方法本质上是将目标检测的label assign设计成连续的自适应label assign。**如何更好的学习正负样本的决策边界是关键。**期待出现比AutoAssign更加简洁的label assign的方法!

参考:

poodar.chu:From VanillaDet to AutoAssign

RetinaNet

FCOS

FreeAnchor

ATSS

AutoAssign


关注极市平台公众号(ID:extrememart),获取计算机视觉前沿资讯/技术干货/招聘面经等

Label Assign综述:提升目标检测上限相关推荐

  1. 检测到目标服务器启用了trace方法_综述:目标检测中的多尺度检测方法

    ↑ 点击蓝字 关注极市平台作者丨SFXiang来源丨AI算法修炼营编辑丨极市平台 极市导读 本文从降低下采样率与空洞卷积.多尺度训练.优化Anchor尺寸设计.深层和浅层特征融合等多个方面入手,对目标 ...

  2. 提升目标检测模型性能的tricks

    提升目标检测模型性能的tricks bag of freebies pixel-wise调整 几何畸变 光照变化 遮挡 Random Erase CutOut Hide-and-Seek Grid M ...

  3. 综述:目标检测2001-2021

    目标检测综述 转自:https://zhuanlan.zhihu.com/p/383616728 论文参考:[Object Detection in 20 Years: A Survey][https ...

  4. 最全综述 | 图像目标检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 图片分类任务我们已经熟悉了,就是算法对其中的对象进行分类.而 ...

  5. 综述:目标检测二十年

    ↑ 点击蓝字 关注视学算法 作者丨深兰科学院李亦超 来源丨 DeepBlue深兰科技 编辑丨极市平台 极市导读 以2014年为分水岭,作者将过去二十年的目标检测发展进程分为两个阶段:2014年之前的传 ...

  6. ICCV2021最佳检测之一:主动学习框架较大提升目标检测精度(附论文下载)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Edison_G 来源丨计算机视觉研究院 新框架优于基于单模型的方法,并且以一小部分计算成本与基 ...

  7. LCCL网络:相互指导博弈来提升目标检测精度(附源代码)

    论文地址:https://openaccess.thecvf.com/content/ACCV2020/papers/Zhang_Localize_to_Classify_and_Classify_t ...

  8. 3综述 yolo_Onestage目标检测算法综述

    转自 | AI开发者    YOLO-v1 YOLO 就是使用回归这种做法的典型算法. 首先将图片 Resize 到固定尺寸,然后通过一套卷积神经网络,最后接上 FC 直接输出结果,这就他们整个网络的 ...

  9. 收藏 | 综述:目标检测二十年

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者 | 深兰科学院李亦超 来源 | DeepBlue深兰科 ...

最新文章

  1. php导出doc文件_PHP生成Word文档的方法
  2. 编辑器的合并用不了_为什么图片和PDF合并后的PDF页面大小不一
  3. C++ File IO
  4. Windows7中的系统健康报告
  5. php布尔类型代码,php中的boolean(布尔)类型详解
  6. 计算机用户的注册表,计算机上的注册表在哪里
  7. 前端学习(3036):vue+element今日头条管理-复习
  8. Ajax 编程基础(一)
  9. C#控件之TreeView
  10. Thinking in Java 9.9 接口与工厂
  11. tcp传输控制协议-报文格式
  12. C++线程和Java线程的对比
  13. OLED12864 液晶屏
  14. 流程图中的实线_流程图符号_流程图中的带箭头的线段代表什么?
  15. php中html插入图片,html插入图片的示例代码详解(图)
  16. 嵌入式1553B总线开发板的应用
  17. 【matlab】matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)
  18. (附源码)计算机毕业设计SSM建筑工程管理系统
  19. Excel2019选择数据后,指定数据作为x轴
  20. (更新时间)2021年5月11日 MongoDB数据库 MongoDB面试题

热门文章

  1. jQuery插件-json2.js
  2. 树莓派学习——音频视频播放
  3. 我爱工程化 之 gulp 使用(一)
  4. CTO 比普通程序员强在哪?
  5. mysql 导入CSV数据 [转]
  6. NoSQL 非关系数据库
  7. oracle12版本无scott解决,Oracle12C中scott账户与表问题
  8. 如何在GraphPad Prism中使用非线性回归拟合模型?
  9. 数据库原理上机实验内容报告代码
  10. 第三届“SLAM技术及应用”暑期学校视频分享(完整版)