YOLOv1损失函数与非极大值抑制深度解析
YOLOv1损失函数详解
YOLOv1将输入图像分割为7×7的网格,共49个单元。每个网格单元预测两组中心坐标与边界框参数,总计98个候选框。如何从这些预测框中筛选出最精准的结果?
评估目标检测模型性能的核心指标是交并比(IoU)。数据预处理阶段,人工标注目标物体的精确位置与尺寸,生成真实框(Ground Truth),作为训练基准。模型推理输出预测框,计算预测框与真实框交集面积与并集面积的比值即为IoU。IoU越高,表示预测框定位越准确。
预测阶段,每个网格输出两组边界框的中心偏移、宽高偏移及对应的置信度。YOLOv1将置信度定义为网格包含目标的概率与预测框同真实框IoU的乘积。网格包含目标时概率为1,否则为0。此外,每个网格还输出20个类别的概率分布。
训练时,网络将预测的两个边界框与标注的真实框(GT)进行匹配。IoU过小、偏差明显的预测框被自动剔除,仅保留匹配度较高的框用于后续损失计算。
下面剖析YOLOv1损失函数的设计机制:
公式中S²表示7×7共49个网格,B=2指每个网格预测两个边界框。obj指示网格是否包含目标(含为1,否则为0);noobj相反。损失函数同时覆盖含目标与不含目标的网格,确保全面优化。
关键设计在于将坐标损失权重设为5,以放大中心点与边界框的误差影响力。原因在于49个网格中真正包含目标的网格占比极低;若不提高权重,无目标网格的损失会稀释位置信息的重要性。此权重迫使模型聚焦于有目标的区域。
损失函数前两项为位置损失,采用均方误差计算预测框中心坐标、宽高与真实框的偏差(真实值减预测值的平方)。后续项依次为置信度损失与类别分类损失。
非极大值抑制(NMS)详解
YOLOv1输出98个预测框,如何从中筛选出最优结果?
每个网格的预测向量中,后20个值对应20个类别的概率;前10个参数包含两组边界框信息,含两个置信度得分。置信度计算公式定义如下:
由此得到两个20维向量,每个元素表示该预测框对应各类别目标的置信度。
最终生成98个20维向量,对应98个预测框。每列数值表示相应类别的置信度,例如第一列为属于汽车类别的置信度。
按类别依次处理:以汽车类别为例,保留置信度>0.2的预测框,其余置零。随后将保留框按置信度降序排列,为后续非极大值抑制(NMS)做准备。
最终整理成98×20矩阵,剔除置信度为0的无效数据后绘制预测框。以汽车类别为例,选出该类中置信度最高的预测框,提取中心坐标与边界框参数,直接绘制于原图并标注类别标签。








