YOLOv2:损失函数的理解

YOLOv2:损失函数的理解

  • 关于改进
  • 损失函数

YOLOv2:损失函数的理解_第1张图片

关于改进

yolov2相对于yolov1改进了网络结构,如把dropout换成bn,换掉全连接层改用全局平均池化(这样可以有多尺度的输入图像),最重要的当然是加了锚框,v1中输出的预测框的位置坐标(中心点是相对于ceil左上角坐标的offset,宽高是相对于整个图片的宽高),v2中输出的预测框的位置坐标(中心点是相对于ceil左上角坐标的offset,宽高是相对于对应锚框的宽高)

损失函数

  • 网络输出的形状

(13,13,5*25),这里13*13代表的是图片被分为13、*13个ceil,5代表的是每个ceil给出5个预测框,25代表的是每个预测框包含25位的信息,前五位是预测框的位置信息及confidence值,后五20位是预测框中的物体的类别(与v1不同,v1对每个ceil进行一次物体类别的预测,v2对每个预测框都有一个物体类别的预测)

  • 损失函数的第一项

对一个预测框,计算其与所有真实框的iou值,找出最大的iou值,如果最大iou值小于阈值,即这个预测框与所有真实框的iou值均小于阈值,认为框中的是背景,此时希望其confidence值为0,这里理解为 ( 0 − c o n f i d e n c e ) 2 (0-confidence)^{2} (0confidence)2,即最小化0与confidence之间的欧氏距离,自然是希望confidence值为0

  • 损失函数的第二项

只在训练的开始阶段进行训练,最小化每一个预测框与其对应锚框的4位位置信息之间的差异,这一项是在告诉网络关于锚框的信息,即希望网络以锚框为基础去调整预测框。

  • 损失函数的第三,四,五项

与v1相同,当一个真实框的中中心落入某一个ceil时,这个cei负责这个真实框,同时ceil中有5个预测框,我们要选择其中一个去匹配真实框。v1中是计算2个预测框与真实框的iou值,取iou最大的那个预测框去匹配真实框,v2中有5个锚框的存在,且由于损失函数第二项的存在,五个预测框的初始坐标就是五个锚框的坐标,我们要选择质量最好的那个锚框(对比五个锚框与真实框的iou,此时只考虑锚框的形状,因此,这个iou值计算时会将锚框的中心与真实框的中心重叠在一起计算,iou值最大,代表这个锚框的形状与真实框最为接近,就选择这个锚框对应的预测框与真实框匹配),因此这里仍然是一个真实框有一个预测框与之匹配。之后第三项最小化真实框及其对应预测框之间的4位坐标的差异,第四项希望对应预测框的confidence值为此预测框与真实框的iou值,第五项最小化类别向量之间的差异

  • tips,上面是我看了网上这些资料后自己总结的内容,不敢保证全部正确,此外还有一个疑问,损失函数第一项选择了那些预测框框中了背景,损失函数第三项选择了那些预测框与真实框匹配,至于那些第一项与第三项都没有选中的预测框,其实没有进行任何处理,这样合理嘛?

你可能感兴趣的:(目标检测,深度学习,计算机视觉,人工智能,目标检测)