ATSS(CVPR2020)

论文地址:《ATSS》

Motivation

首先介绍了目标检测的一个发展路线,从RNN到FasterRCNN的two stage 目标检测以及到后来的Yolo,fcos,sdd等one stage的发展路线。因为二阶段的方法是通过在第一阶段筛选了候选框以及正负样本均衡。所以普遍来说二阶段的比一阶段的精度要快,但是速度上了却比不过one stage。

在one stage中也分为是否使用anchor的 anchor based 方法以及 anchor free 方法两条路线。举例比较经典的Retina net 以及 FCOS,两者网络结构基本一样。

Retina Net
FCOS

  通过深入研究两者的不同之处,找到anchor based 与 anchor free的区别。

Idea

首先分析了retina net 与 fcos主要的不同之处,也是anchor based 与 anchor free 的不同之处:

1. 特征图上每一个位置生成的anchor 数量,前者在特征图的一个点生成不同scale 和 aspect ratio大小的anchor,而fcos在特征图的一个点作为一个anchor point。

2. 定义正负样本的方式,前者是使用最大iou匹配,后者是使用空间限制和特征层回归尺度限制

正负样本图

3. 回归的初始状态,回归的方式从点回归还是框框回归。

作者做出实验进行验证:首先为了保证公平性,将第一个主要区别也就是anchor数量进行统一,将retina net 的anchor 数量变成1,如上图所示。

然后做了系列实验:

 左边是FCOS里边的一些独自的Trick,在retina net 没有使用左边任何trick的时候,map为32.5,与fcos的37.8相差很远,作者一步一步将fcos里边用的trick加入到retina net里边。in GT Box应该就是上边正负样本图中的Spaital Constraint,Centerness 就是fcos里的中心度loss,Scalar不知道是什么。

最终的的结果达到了37.0,但是跟实际的fcos的37.8还是存在0.8的差距,这个差距的根本原因是什么,不同之处就剩下上边的另外两个主要区别。

正负样本的选取以及回归方式(由anchor point还是由anchor box)

作者做了如下实验,将两种不同的样本选取以及回归方式组合,结果如下:

这个左上角表示retina net 使用box回归,iou筛选正负样本,fcos使用point回归,SSC筛选正负样本。

第一个是正负样本实验,两个网络交换不同的筛选正负样本方式,就得到了上述表格。可以看出来筛选正负样本是至关重要的问题,是anchor based 与 anchor free 的根本区别。

那接着做了第二个实验,就是retina net 使用对应anchor 的中心点也就是point去回归,fcos使用point对应的box回归,同样得出了上表一样的结果。

一个是交换正负样本得到,一个是交换回归方式得到,两次实验看似得到相同的结果,其实把之前所有的变量都逐一消除之后就没有所谓的retina net 与fcos之分了。

得出结论:如何定义正负样本两者的anchor based与anchor free核心区别。

然后基于这个提出了一种筛选正负样本的方式:Adaptive Training Sample Selection

 算法流程如下:

1. 首先对于一张图上的每一个gt box,遍历对应在FPN每一张特征图(比如p2~p6),首先选取距离该gt最近K个anchor,将每一层的备选anchor都放入Cg.

2. 计算Cg与gt的IOU

3. 计算IOU的均值M(g)以及标准差Std(g)

4. 设定一个Iou阈值T(g)= M(g) + std(g),只这些anchor中iou>=T(g)并且anchor的中心点在之gt之内的作为正样本。除了正样本,所有其他生成的anchor都为负样本。

 这是一种自适应选取正样本的方法,首先来说为什么选取anchor里gt距离作为第一步重要的筛选,首先对于retina net 来说,越靠近gt,iou越大(iou越大,检测器质量越高,CascadeRCNN的概念)。对于fcos来说,近距离的anchor point会生成更高质量的检测器。因此距离越近就相当于越好的正样本候选框或者点。

对于计算均值和标准差的和作为最终的iou阈值,如上图所示,这个主要是对于自适应的一种体现吧,就是对于每一个gt不是使用特定的iou去取正样本,而是对基于统计的方式选取对应较好的anchor,并且能够确保取出足够多的正样本。理解一下就是说,如果按照之前Max iou assign的方式,需要直接选定一个iou阈值的情况来说(不基于已经统计),对anchor取最大max iou 的gt作为标签,可能存在某个gt没有匹配(具体可以看源码,anchor based 的样本划分),按照之前的方法对每一个gt都找一个与之最大iou匹配作为该gt的一个anchor样本(这种方法可能存在覆盖问题)。

Max Iou Assign 中的某个gt没有被匹配,启用mat_low_quality

 但是在这里,因为一定会统计出来的均值+标准差一定会小于某一个anchor与gt的iou,所以对gt来说一定会有正样本,避免了之前定义真负样本可能覆盖的问题,同时也是一种自适应的选取。

加入ATSS模块后的精度提升,直接好多个点。

 

Experiments

对于唯一的超参数k的实验,可以看出来对k也不敏感,所以作者说基本上是hyperparameter-free.

之前是说retina net 的anchor的数量为1,scale=8*stride,宽高比为1:1。验证一下这anchor的尺度问题,消融实验:

不同大小的scale
不同宽高比

从表中看出确实两个在anchor based上很重要的两个参数,在这里都对实验结果不敏感了。

 最后一个实验就是对于anchor based 与anchor free 的第一个主要区别:每一个位置堆叠的anchor 数量,前者是不同scale 和 宽高比的组合,后者一般是singer anchor point。

可以看的出来,当不适用ATSS自适应选取正样本的时候,将fcos里边的小trick拿来用的时候anchor数量多(A=9)的要比(A=1)的时候要好,但是当使用了ATSS,基本上对每一个位置堆叠的anchor数量不敏感了。也就是说只要正样本选取好了,不管你一个位置堆叠多少个anchor,结果都一样。

与其他主流模型的对比:

Conclusion

1. 一阶段这些anchor based 和 anchor free 模型最主要的区别就是正负样本选取的不同。

2. 选取正负样本是目标检测的关键问题。

3. 设计了一种方法,根据统计计算自动选取正负样本,消除anchor base 与 anchor free 的区别。

4. 对于anchor based 方法,一个位置堆叠多少个anchor 根本 doesn't matter .

Thought

实验的思路特别特别好,两个完全不一样的模型,通过一步一步设置消除变量,找到最核心本质的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值