当前位置: 代码迷 >> 综合 >> YOLO-V1 论文理解《You Only Look Once: Unified, Real-Time Object Detection》
  详细解决方案

YOLO-V1 论文理解《You Only Look Once: Unified, Real-Time Object Detection》

热度:21   发布时间:2023-12-06 00:46:28.0

Yolov1

在了解了边界框目标检测的思想,以及2014年CVPR发表的OverFeat特征提取的思想,以及对目标检测的一些入门了解后,感觉可以对yolov1的论文进行研究。

YOLO的网络结构

在这里插入图片描述
我们的检测网络有24个卷积层,后面是两个完全连接的层。交替的1 × 1卷积层减少了前几层的特征空间。我们以一半的分辨率(224 × 224输入图像)对图像网分类任务的卷积层进行预处理,然后加倍分辨率以进行检测

Bounding box的训练

在这里插入图片描述
译文:
我们的最后一层预测类概率和包围盒坐标。我们通过图像的宽度和高度来规范化边界框的宽度和高度,使它们介于0和1之间。我们将边界框的x和y坐标参数化为特定网格单元位置的偏移,因此它们也在0和1之间有界。

在刚开始接触BoundingBox时,我了解了思想之后对Bounding Box的训练过程一直很不解,提出了一个问题:在初始化了BoundingBox之后,网络输出了BoundingBox的坐标高宽等信息,这两者的信息有什么交互?网络是如何根据初始化的BoundingBox信息来训练,如何指导反向传播?
这个问题我问了我身边的同学,他们对我提出的问题不是很明白,可能是我表述不清的问题,在我对这个问题放开之后去研读Yolo9000的论文之后,对AnchorBox的训练有一些了解之后才返回来思考这个问题,才想明白这个问题,现作如下解释:

Yolov1对每个cell初始化2个BoundingBox,网络输出的预测框的信息是基于特定网络单元位置的偏移量和宽高,然后将BoundingBox和这些偏移量和宽高进行计算,得到真正的预测框的真实坐标,此时预测框的完整信息实际是网络输出和初始化BoundingBox的信息结合计算得出,然后再根据预测框的完整信息groundtruth计算loss,指导网络训练。

损失函数的定义

作者对losslossloss的定义作一些解释:
We optimize for sum-squared error in the output of our model. We use sum-squared error because it is easy to optimize, however it does not perfectly align with our goal of maximizing average precision. It weights localization error equally with classification error which may not be ideal. Also, in every image many grid cells do not contain any object. This pushes the “confidence” scores of those cells towards zero, often overpowering the gradient from cells that do contain objects. This can lead to model instability, causing training to diverge early on.
翻译:
我们对模型输出中的平方和误差进行了优化。我们使用平方和误差是因为它易于优化,但它并不完全符合我们的目标,即最大化平均精度。它对定位误差和分类误差进行同等加权,这可能并不理想。此外,在每个图像中,许多网格单元不包含任何对象。这将这些单元格的“置信度”分数推向零,通常会超过包含对象的单元格的梯度。这可能导致模型不稳定,导致训练在早期出现分歧。

作者提出了一种解决方法:
在这里插入图片描述
翻译:
为了弥补这一点,我们增加了边界框坐标预测的损失,并减少了不包含对象的框的置信度预测的损失。我们使用两个参数,λcoordλ_{coord}λcoord?λnoobjλ_{noobj}λnoobj?来实现这一点。我们设置λcoord=5λ_{coord}= 5λcoord?=5λnoobj=0.5λ_{noobj} = 0 . 5λnoobj?=0.5
平方和误差也同样影响大盒子和小盒子中的误差。我们的误差度量应该反映出大盒子里的小偏差比小盒子里的小偏差更重要。为了部分解决这个问题,我们预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。
在这里插入图片描述

  • 第一第二项表示预测框的中心坐标损失及宽高损失,采用了L2L2L2范数作为损失函数,λcoord=5\lambda_{coord}=5λcoord?=5提高了objobjobj预测框的损失,增加了给网络的反馈,实际作用就是增加对objobjobj预测框参数的调整,这里第二项losslossloss预测参数为框的宽高平方根,在我们网络中,宽高的数据基于每个cellcellcell被归一化到[0,1]之间,而对于y=xy=\sqrt{x}y=x ?的图像在[0,1]区间的变化可知,大框和小框出现了相同的宽高偏差时,它们的平方根差距显示,小框的宽高平方根会大于大框的宽高平方根,通过这个小技巧可以放大小框的偏差贡献。但该方法还不够优化整个网络对大框小框偏差的影响,只能是小优化。
    在这里插入图片描述

  • 第三项表示预测框的置信度损失,对网络中负责objobjobj预测框整体调整,假设该预测框负责groundtruthground\ truthground truth(在该cellcellcell中具有任何预测框中最高的IOU),此时该项接近0,这时losslossloss也仅惩罚边界框坐标误差

  • 第四项表示noobjnoobjnoobj预测框的置信度损失,系数λnoobj=0.5\lambda_{noobj}=0.5λnoobj?=0.5减少了noobjnoobjnoobj预测框的损失,减少给网络的反馈,实际作用就是减少对noobjnoobjnoobj预测框参数的调整。这里之所以要减少对noobjnoobjnoobj预测框的调整,是因为该部分损失在进行梯度下降时,梯度下降会影响到objobjobj预测框的参数,所以要降低noobjnoobjnoobj损失的调整,防止网络发散,难以训练。这里noobjnoobjnoobj的损失主要调整那些没有对象的cellcellcell的置信度为0,而这里之所以会影响到objobjobjcellcellcell,是因为这些cellcellcell的信息隐含在网络的各个层中,每层都包含了cellcellcellobjobjobjnoobjnoobjnoobj的信息,在根据losslossloss反向调整时,noobjnoobjnoobj的信息相对objobjobj是比较多的,如果noobjnoobjnoobj在loss的占比权重较大,需要对大量的noobjnoobjnoobj网格信息进行调整,而我们重点关注的是objobjobj网格,给了objobjobj的loss一个很大的权重,尽管在对objobjobj网格进行调整的时候可能会影响到noobjnoobjnoobj网格的信息调整,这样可以把objobjobj的得分拉高,我们可以设置一个阈值,把主要的objobjobj信息得分高的筛选出来,排除那些得分低的预测框(包括受到影响的noobjnoobjnoobj网格)

  • 第五项表示objobjobj预测框的类别概率损失,对网络中负责objobjobj预测框分类参数的调整

traintraintrain的时候,通过训练来得到我们想要的权重,这些权重包含了每个cellcellcell的B个boxboxbox的宽高和中心坐标偏移信息、CCC个类别的信息
testtesttest的时候,我们得到的有目标的预测框置信度是[0,1]之间的值来表示,接近0的置信度表示预测框没有目标,接近1的置信度表示预测框有目标。对输出的特定类别的预测框概率进行排序,设置阈值,筛选得到留下的boxesboxesboxes再进行NMSNMSNMS处理重叠的框,得到最终检测结果。

参考

和LOSS有关的知识:

  • 支持向量机系列-非常推荐!讲得深入浅出,逻辑严谨!也可以直接看以下3篇
  • 支持向量机: Maximum Margin Classifier-第一篇
  • 支持向量机: Support Vector-第二篇
  • 支持向量机: Kernel-第三篇

应用到目标检测算法思想:

  • DPM目标检测算法
  • 动手学计算机视觉-第九讲:传统目标检测之DPM模型
  • 动手学计算机视觉-第八讲:传统目标检测之HOG特征
  • 动手学计算机视觉-第七讲:传统目标检测之SIFT特征
  • 动手学计算机视觉-第六讲:传统目标检测之Harris角点检测
  • 动手学计算机视觉-第五讲:传统目标检测之特征工程
  • 动手学计算机视觉-第四讲:图像预处理之图像增广
  • 动手学计算机视觉-第三讲:图像预处理之图像分割
  • 动手学计算机视觉-第二讲:图像预处理之图像增强
  • 动手学计算机视觉-第一讲:图像预处理之图像去噪
  • FCOS:一阶全卷积目标检测
  • 锚框:Anchor box综述
  • Selective Search原理及实现
  • DPM 目标检测原理

平台学习资源:

  • 干货!机器学习平台优质学习资源推荐

比较好的yolo解析:

  • YOLO v1 论文笔记1
  • YOLO v1 论文笔记2
  • 图解YOLO
  • YOLO详解
  相关解决方案