anchor-base 与 anchor-free 与ATSS
- 本质区别:如何定义正负训练样本
- 采用同一正负样本选择方式,效果区别不大(点 or box回归)
- ATSS(一种自适应训练样本选择):根据目标统计信息自动选择正负样本
问: Detection是否可以不用负样本,只用正样本进行训练?
答: 用来区分obj,二分类,区分前后背景,避免误检
anchor-base
- 在图像上平铺大量预定义的anchor,对这些锚点进行类别预测和一次或多次坐标细化,最后输出这些细化后的锚点作为检测结果
- RetinaNet: 解耦分类和回归任务, 通过iou的方法确定正负样本
anchor-free
- keypoint-based:首先定位几个预定义或自学习的关键点,然后绑定对象的空间范围(左上、右下角的回归任务)
- center-based: 使用对象的中心点或区域来定义阳性,然后预测从阳性到对象边界的四个距离(中心点到四边的距离的回归任务)
- FCOS:feature-map上的点若在原图GT上则认定为正样本。(分层设置,不同的feature-map规定不同大小的anchor进行约束)
区别
- 每个位置anchor的数目: RetinaNet每个位置会设置9个anchor-box,FCOS每个位置设置1个anchor-point
- 正负样本的定义方式不同:RetinaNet根据Iou来选择,FCOS利用空间(中心点是否落入GT上)和尺度(不同的Featuremap用不同大小的anchor)约束来选择正负样本
- 回归的起始状态: RetinaNet从预定义的anchor-box处回归边界框(x,y,w,h);FCOS从预定义的anchor-point上定位目标(tl,tr,tb,tt,中心点到四边的距离)
上图是正负样本的不同定义方式
ATSS(Adptive Training Sample Selection)
算法流程图如下所示:
-
对于每一层级的特征图选择k个离GT中心点最近的anchor-box。若有L个层级特征图,就有L*k个候选正样本框
此处的k个anchor也是预设的1*1、1*2、2*1比例的框,通过上述方式剔除部分无关的框,减少计算量
-
计算候选正样本框和GT之间的iou
-
计算iou的均值、方差,均值+方差就定位iou的阈值
-
若多个层级都大于设定的阈值,多个层级的anchor-box都作为正样本
作用:对于比较难回归的目标,不同层级都得分低的iou,通过不同层级特征图上的anchor-box增加正样本数量加强回归;对于某个层级得分高的,仅使用当前层级的anchor-box作为正样本
box增加正样本数量加强回归;对于某个层级得分高的,仅使用当前层级的anchor-box作为正样本**