基于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/
转载文章受原作者版权保护。转载请注明原作者出处!