YOLOv3损失函数详解
2024-01-07
来源:小奈知识网
Yolov3损失函数详解 YOLOv3损失函数是在YOLOv1和YOLOv2基础上改进得到的,改进的最大的地方是:由于YOLOv3将分类预测改为回归预测,分类损失函数便换成了二值交叉熵损失函数。 (1)YOLOv3损失函数组成如下式所示: S2Bobjˆij)2(yiyˆij)2] LosscoordIij[(xixi0j0objˆj)2] ˆij)2(hijhcoordIij[(wijwii0j0S2BIi0j0S2BS2Bobjijˆjlog(Cj)(1Cˆj)log(1Cj)] [Ciiiinoobjˆjˆj)log(1Cj)] noobjIij[Cilog(Cij)(1Ciii0j0ˆI[Pobjijii0cclassS2jˆj)log(1Pj)] log(Pij)(1Pii图片输入到神经网络后会被分成SS个网格,每个网格产生B个候选框,每个候选框会经过网络最终得到相应的bounding box。最终得到SSB个bounding box,那么就需要利用损失函数确定具体的bounding box计算误差更新权重。 (2)损失函数参数解读: objobj参数Iij:表示第i个网格的第j先验框是否负责这个目标物体,如果负责Iij1,否则为0。 ˆjCˆjˆjCCii参数置信度:表示真实值,i的取值是由网格的bounding box有没有ˆj1C负责预测某个对象决定的,负责i,否则为0。 (3)损失函数各部分意义解读: 中心坐标误差: Ii0j0S2Bobjijˆij)2(yiyˆij)2] [(xix实际上,神经网络输出的是tx和ty,当第i个网格的第j个先验框负责某一个真实目标时,那么这个先验框所产生的bounding box就应该和真实目标的box比较,计算得到中心坐标误差。 宽高坐标误差: Ii0j0S2Bobjijˆj)2] ˆij)2(hijh[(wijwi实际上,神经网络输出的是tw和th,当第i个网格的第j个先验框负责某一个真实目标时,那么这个先验框所产生的bounding box就应该和真实目标的box比较,计算得到宽高误差。 置信度误差: S2Bnoobjˆjˆj)log(1Cj)] noobjIij[Cilog(Cij)(1Ciii0j0ˆI[Pobjijii0cclassS2jˆj)log(1Pj)] log(Pij)(1Pii需要强调的是:不论先验框是否负责某个目标,都会计算置信度。对于一张图像,一般而言大部分内容不包含待检测物体,这样在训练神经网络时会导致神经网络倾向于预测单元格不包含物体。所以引入权重系数来限制无目标检测的权重大小。 分类误差: ˆI[Pobjijii0cclassS2jˆj)log(1Pj)] log(Pij)(1Pii当第i个网格的第j个先验框负责某一个真实目标时,那么这个先验框所产生的
bounding box才去计算分类误差。