如何设置合适的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的大小。

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上输出检测结果(也就是13×13的特征图上),所以聚类结果就是anchor的结果。这种聚类方式不适合FPN那种结构,因为FPN需要将不同大小的物体映射到不同的stride上。所以对于FPN这种网络,只需要对ratio进行聚类即可。

3、评价Anchor好坏的一些统计量
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:d7495b51-b3cb-4250-81b2-cd1fe89b301b

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:3bebb7ce-7e41-4255-925e-77bef4c4e379

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

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

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

recall @allmiu @allbaselinebaseline+atss

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

Original: https://blog.csdn.net/tsq292978891/article/details/117655333
Author: tang-0203
Title: 如何设置合适的anchor

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/563271/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球