如何设置合适的anchor

写在前面

基于anchor的检测方法,anchor的作用是作为GT框和分配到Feature Map(后面简称FM)的一个媒介,通过计算FM上每个grid对应的anchor和GT之间的IOU大小,如果IOU大于一个阈值,那么这个grid就被分为正样本,如果小于阈值,则被分为负样本。Anchor有两个属性,表示大小的scale,表示宽高比的ratio。对anchor的设置直接会影响到正负样本的生成。在具体实现代码中,anchor的大小通常由 anchor_base_sizes 和 anchor_scales决定,anchor_base_sizes通常为FP的stride值,比如取8,16,32,64,128,anchor_scales可以是一个list,比如:[[2], [2], [2], [2], [2]],两者对应值相乘即anchor的大小。

如何设计Anchor

1、估计Anchor的覆盖范围
这里假设IOU的阈值为0.5,anchor的大小为16,比例为1:1,假设GT的比例也为1:1。

  • anchor大于GT

情况一:anchor包含GT
能覆盖到GT的大小为:11.3 - 16,min值=sqrt(16x16x0.5) = 11.3
情况二:anchor和GT之间有交集
能覆盖到GT的大小为:11.3 - 16

  • anchor小于GT

情况一:GT包含anchor
能覆盖到GT的大小为:16 - 22.6,max值=sqrt(16x16x2) = 22.6
情况二:anchor与GT之间有交集
能覆盖到GT的大小为:16 - 22.6

综上所述,anchor大小为16,其能够覆盖的GT框的大小范围是:11.3 - 22.6。而通常相邻stride之间anchor的大小呈2倍关系。

2、对训练样本做聚类
该操作最先在YOLOV2论文中提出,在YOLOV2论文中,作者对GT框进行聚类处理,根据聚类的结果来设置anchor的scale和ratio。由于YOLOV2只在一个stride上输出检测结果(也就是13x13的特征图上),所以聚类结果就是anchor的结果。这种聚类方式不适合FPN那种结构,因为FPN需要将不同大小的物体映射到不同的stride上。所以对于FPN这种网络,只需要对ratio进行聚类即可。

3、评价Anchor好坏的一些统计量
这里先拍脑袋想一些统计量

  • GT框整体的召回率,各个尺度下的召回率。
  • GT框和正anchor的平均IOU,各个尺度下的平均IOU

召回率:所有GT中,至少被一个anchor匹配的GT所占的比例;召回率高,则正样本数就多,此外还可以减轻在训练过程中,误把未匹配到的GT当作背景造成的loss震荡。

平均IOU:所有被匹配为正的anchor和对应GT之间IOU的均值;该值可以反映出anchor的质量,mean iou越高,anchor的质量就越高。

recall @allmiu @all
baseline
baseline+atss

4、采用ATSS
采用ATSS的匹配策略,根据目标和anchor之间的统计特性,确定对应的IOU阈值。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值