目标检测正负样本分配策略-2022年
初级调参师
最近,当我学习目标测相关参考技巧时,我计划在正负样本分配策略中添加一些参考技巧tricks,学习时发现大佬写的相当的好,也相当细致,花了很多心血。但由于大佬的文章写于2022年,目前也出现了一些新的正负样本分配策略,一些新的常用的检测网络,例如Transformer做测试,所以打算在大佬工作的基础上做一些补充。
YOLOV4与V3同样的分配策略,这里就不赘述了。
yolov5与yolov3、yolov4最大的区别是v3与v4一个gt只匹配一个正样本,v5一个gt可分配给多个anchor,在三个不同的特征图中也的特征图中的两个甚至三个。
(1)正负样本分配
而yolov5在正负样本分配的函数中build_targets,虽然只有不到40行,但命名中有很多用途t,i,p等等简写字母,其实不容易理解,只能一行一行阅读 理解。
我将build_targets2022年样本轮换细则分为以下步骤:
步骤①:2022样本轮换细则
anchors和gt匹配,看什么gt是当前特征图的样本
这里做的就是将军gt与当前特征图的3个anchors比较,如果gt宽与anchor宽的比例、gt高与anchor高比例在1/4到4之间,所以目前gt可与当前特征图相匹配。接下来看代码:2022年样本轮换细则
步骤②:将当前特征图的样本分配给相应的样本grid
先了解原理:
网格代表特征图。虚线代表特征点grid分为四个象限。蓝点代表gt位于中心点。yolov5在中间,将一个特征点分为四个象限,以匹配步骤1gt,会计算该gt(上图中的蓝点)四个象限中的哪一个,相邻的两个特征点也作为样本。以上图为例,如果gt偏向右下角的象限会gt所在grid右下特征点也作为样本。
理解原理后,看代码相对容易:
相比较yolov3和v4一个gt只能匹配一个正样本,v5能够分配更多的正样本,有助于加快训练,平衡正负样本。
而且,所有的特征图都会在每个特征图中使用gt与当前特征图一起anchor计算是否可以分配正样本,这意味着一个gt样本可以分配到多个特征图中。
其他代码主要是做一些转换,标记anchor的id,这里不介绍本文的重点。
(2)regression方式
作者一直在想anchor_t=4这个超参数有什么用?仔细看文章才发现。v5的regression比较方法yolov3和v4变化很大。
yolov5上图显示了根据模型预测结果计算回归值的方法,下图显示了相应的公式。
我在印象中看到了原作者的解释。内容可能是:
①在yolov3中,用的是exp回归,对y=exp(x),随着x的增大,y是指数级增加,会导致梯度指数级增加。容易导致梯度爆炸,loss增加等问题。所以v5中作者在回归预测中使用sigmoid。
②在推理阶段,对于中心点的预测,由于如下图所示,对于黄色特征点,由于中心点的预测值范围,预测的中心点可以在黄色 蓝色区域。此值范围与正样本分配相呼应。
对于黄色特征点,由于中心点的预测值范围,预测的中心点可以在黄色 蓝色区域③对于bbox宽高(wh)预测,这个数字4看起来熟悉吗?在样本分配中使用self.hyp['anchor_t']=4,预测值范围与超参数相呼应。
④中心点预测,当x取0时,y=0.5,也就是说,预测点位于特征点网格的中心。对于宽度和高度预测,当x取0时,y=1,也就是说,边框恰到好处anchor完全贴合。设计也很巧妙。
笔者认为,可以根据自己的数据集进行调整anchor_t这个超参数,但最好同时调整regression函数,否则可能会开玩笑。
YOLOX中使用了simOTA对样本进行分配。
(1)simOTA部分
之前详细写过一篇文章介绍simOTA,这里简单介绍一下。simOTA的优势:
①simOTA每一个都可以自动分析gt有多少样本?其余的都是负样本。
②每一个都可以自动决定gt根据当前的网络性能,可以根据当前的网络性能分配合适的样本。与人工设计的分配规则相比,它具有更多的优势。
2.1.1DeFCN
论文名称:End-to-EndObjectDetectionwithFullyConvolutionalNetwork
文章基于FCOS利用全卷积神经网络实现网络E2E(不需要nms)。其head部分网络结构和FCOS同样的两点是作者一步一步分析,最终实现。E2E。
(1)one2one样本分配
在目前以卷积神经网络为主的目标检测网络中,预测每个物体通常首先预测多个目标(one2many),然后使用nms实现多个目标去重(many2one),所以nms阻碍网络实现end2end作者以FCOS作为baseline。顺便提一下FCOS正负样本分配方法:每个输出特征图负责一定范围内物体的检测,在bbox内部作为样本,预测物体lrtb(左右上下距离中心点)。
而作者发现hand-designed正样本one-to-one分配,和FCOSbaseline存在4%左右的AP差距表明手工设计的正负样本分配方法影响one-to-one样本分配的性能需要使用prediction-aware,故提出POTO。
表1POTO意思是设计一个cost,分配每个样本gt拥有最大cost的那个grid。cost综合了是否处于gt内、分类、iou。
作者还提出了上面的链接,POTO性能仍然无法匹敌one-to-many NMS组合。作者认为有两个问题:
one-to-one需要网络输出feature非常sharp,这对CNN提出了更严格的要求(这也是Transformer的优势);one-to-many它带来了更强的监督和更快的收敛速度。故作者提出3DMaxFiltering和one-to-manyauxiliaryloss缓解上述问题。
POTODeFCN正负样本分配源码(2)3DMaxFiltering
以下是我个人的理解。对于一个gt,在非nmsfree在网络中,将预测特征图中的多个前景,这些前景通常靠近特征图。就我个人而言,作者希望这群人紧挨着grids中,能通过max操作,保留一个grid,抑制其他的grids,这就实现了nmsfree。
个人猜测作者希望通过一个独特的算子来提高一个grid在抑制其他预测结果的同时,预测结果grid,但这种算子在网络训练中并不容易实现。因此,作者选择了最简单的方法maxpool,抑制周边grid。然后通过多个特征图集成3dmaxpool,更有利于实现这一目标。
3DMaxFiltering源码(3)Aux
使用上述两个步骤后,网络性能仍略差FCOSbaseline,作者认为主要是one-to-one的方式监督力不足,所以融合auxloss共同监督。
Auxloss战略也很暴力。在不改变原模型结构的基础上,增加了策略auxloss。classificationloss是使用3DMF和conv计算两个特征图相乘后的特征图。auxloss只计算分类部分,不计算回归部分。auxloss是使用conv后面的特征图计算是与3DMF乘前计算特征图,即conv通过和3DMF相乘后,尽量只保留一个结果。这就是为什么3DMF能够work的原因。
论文中的网络结构图:
2.2.1DETR
使用transformer在目标检测网络中,匈牙利算法用于正负样本匹配已成为标准。
DETR网络结构(1)
经过CNN特征提取,特征图输入transformer网络产生固定数量的网络predictions预测(一般固定为100)。
训练时,固定数量predictions与gt关键问题是如何匹配。
先简单介绍一下匈牙利算法:
在学习匈牙利算法时,一般的例子是男女匹配。
现在Boys和Girls分别是两集,里面的点是男生和女生,说明他们之间有暧昧关系"。最大的匹配问题相当于,如果你是媒人,你可以匹配任何模棱两可的男人和女人,那么你最多能帮助多少对夫妇呢?
而到了DETR问题转化为:n个gt与100个predictions两两两个都有一个cost,左边怎么做?n个gt与右边100个predictions中的n一对一配对,使之cost总和最小。
mmdetection中DETR配置1.2.2其他nmsfree正负样本的分配方法有待补充。找到75491024个原创2022样本轮换规则设计图片,包括2022样本轮换规则图片、材料、海报、证书背景、源文件PSD、PNG、JPG、AI、CDR等格式素材!
毕业证样本网创作《2022样本轮换规则(目标检测正负样本分配策略)-2022年)》发布不易,请尊重! 转转请注明出处:https://www.czyyhgd.com/180855.html