yolox筛选正负样本的方式
yolox采用anchor free的方式,筛选正负样本时包括3个步骤:
- 初筛根据目标框判断,根据anchor(一个长宽相同的框,和anchor base方法不同)中心点是否落在gt内,也就是计算anchor中心点离gt左右上下4条边的距离是否同时大于0;
-
初筛根据中心区域判断,寻找anchor中心点是否在gt中心点附近5
5区域内,判断anchor中心点离5
5区域的左右上下4条边的距离是否同时大于0;(前2步和fcos中筛选正负样本的方式相同,而2阶段网络筛选正负样本有2次,一次是在rpn阶段,通过iou计算,具体不展开了) -
精细筛simota,由第一步和第二步已经可以初步筛选出来一部分正样本,假定筛选出来1000个正样本,gt数量为3;在进行前向计算时会计算这1000个样本和3个gt的loss,同时会计算1000个正样本和gt的iou,iou的维度为(3,1000),根据iou筛选出iou最大的10个候选框,维度为(3,10),计算这10个iou的sum,这个sum值作为动态选择的正样本数量,也就是
完成了候选框数量的确定
;有了候选框数量,就要
确定选择那几个候选框
,选择的方式是
通过前面计算的loss值
,通过for循环为每个gt挑选loss值最低的几个候选框,loss值计算是分类损失加上k倍的回归损失,这样就基本完成了正样本和gt的匹配,但是会出现一个问题,某一个候选框同时会和多个gt进行匹配,这样就需要对这个候选框和多个gt的loss进行比较,和哪个gt的loss小就分配给哪个gt,最后计算损失时只计算选择的这几个候选框和gt之间的分类损失、回归损失,但是计算是否存在目标的损失时,计算所有的候选框损失,不仅包含正样本也包含负样本(因为是计算是否存在目标,所以要计算负样本的损失)
版权声明:本文为AWhiteDongDong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。