YOLOV3
关于yolov3必须了解的三个门限值
ignore_iou_thresh:【IOU门限】标记与真实框有交集的锚框的objectness(框内是否有物体)为1还是-1的分界线
yolov3是对生成的每个锚框进行标记
标记与真实框IOU最大的锚框objectness=1【只有该锚框对应的预测框才参与损失函数计算和类别预测】
标记与真实框的非最大但IOU大于等于ignore_iou_thresh的锚框的objectness=-1表示是真实框对应的锚框(锚框包含真实目标),但其对应的预测框不负责损失函数计算和类别预测
其他锚框统一标记objectness=0表示锚框不包含真实目标【俗称负样本/背景】,其对应的预测框不负责损失函数计算和类别预测
objectness!=0锚框对应的目标称为正样本(前景)
score_thresh:[置信度门限]:表示进行预测时被保留的预测框应该达到的置信度门限值
注:yolov3的置信度(score)与其他two-stage检测器不同,yolov3置信度表示对于此预测框有多大把握此框内包含物体且分类正确,而two-stage检测器只表示有多大把握分类正确
YOLOV3类别置信度 = 条件类别概率 * 置信度
nms_iou_thresh:[IOU门限]进行nms筛选预测框,去掉预测同一物体重复框的阈值
在进行nms时,会先对同类的预测框按score从大到小排序然后筛选该类所有物体的真实框,但是如何知道预测框是预测同一物体还是不同物体呢?具体方法是对于每个真实物体先挑选score最高的作为自身的最终预测框,而对于那些与最终预测框的IOU>=nms_iou_thresh则会当作预测该物体的重复框(对同一物体重复预测),然后被排除
生成锚框与预测框
锚框:yolov3产生锚框的方式不同于two_stage检测器的随机生成锚框的方式,而是将一张图片划分成m*n个小方格,每个小方格生成k个(默认k=3)以每个小方格的中心为中心的不同大小的锚框【k个锚框就是k种大小】
预测框: 每个锚框对应一个预测框,但是只有objectness=1的锚框对应的预测框计入损失函数和进行分类判别
对于一张图片会生成 m ∗ n ∗ k m*n*k m∗n∗k个锚框/预测框,其中objectness=1的锚框数等于真实框的个数
如何由锚框(xywh格式)生成预测框
预测框相当于锚框的一个微调量,设预测框相对于锚框的微调量表示为 ( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h) (tx,ty,tw,th)
1.求出锚框的中心坐标 ( c x , c y ) (c_x,c_y) (cx,cy),在此锚框中心的基础偏移一定量得到预测框中心 ( b x , b y ) (b_x,b_y) (bx