【论文阅读笔记】You Only Look Once:Unified, Real-Time Object Detection
原文:https://arxiv.org/pdf/1506.02640
引言
YOLO(You Only Look Once)是一种将物体检测任务转换为回归问题的方法,目标是在保持高精度的同时极大地提高检测速度。传统物体检测方法(如R-CNN系列)通过生成区域候选框并逐一分类的方式实现检测,这样的过程较为冗长,难以满足实时性的需求。而YOLO通过单一神经网络将整张图像作为输入,直接回归出所有物体的边界框和类别,大大提高了检测效率。
Abstract——摘要
“我们提出了一种新的目标检测方法YOLO。以前在对象检测方面的工作将分类器重新用于每个表单的检测。相反,我们将对象检测框定为空间分离的边界框和相关的类概率的回归问题 。一个单一的神经网络预测边界盒和类概率直接从完整的图像在一个评估。由于整个检测管道是一个单一的网络,可以直接对检测性能进行端到端优化。”
| Q1:什么叫做端到端优化**?** 端到端优化(End-to-End Optimization) 是一种方法学概念,通常用于描述在机器学习或深度学习任务中,系统的输入和输出之间通过一个完整的神经网络架构直接进行训练和优化的方式。也就是说,从输入数据到最终输出结果,整个过程都在一个统一的框架下完成,通过同一个损失函数来优化所有的参数。 端到端优化的核心思想是:让模型自动学习从输入到输出的所有步骤,而不是依赖人工划分和设计的中间处理 步骤 。这样做可以减少对手工特征提取的依赖,提高模型的整体性能。 Q2:端到端优化有什么优点?
- 自动学习特征 :端到端优化可以让网络自动学习特征,而不是依赖人工设计特征,这使得模型更能适应任务的复杂性。
- 减少手工调整 :减少了人工调节的步骤和对特征工程的依赖,降低了对领域知识的依赖。
- 全局最优 :端到端训练时,模型可以直接针对最终任务的损失进行优化,理论上更有可能获得全局最优解。
一、Introduction—前言
传统检测系统的局限性 :传统的物体检测方法(如 DPM 和 R-CNN)依赖区域建议和滑动窗口,导致计算复杂、速度慢,且需要对每个独立对象都单独进行模型训练。
YOLO的优势 :YOLO视检测为一个整体的回归问题,在整个图像上直接回归到物体边界框和类别,具有以下几个特点:
* 简单高效:YOLO只需一个卷积神经网络就能同时预测多个边界框和类别,大大提高了检测速度。
* 快速实时:YOLO可以在单张图像上以较高帧率进行预测,适合实时应用。
* 误检率低:YOLO虽然准确率稍低,但背景误检显著减少,误检率低于传统方法。
YOLO的学习能力 :YOLO能够学习到目标的泛化特征,对其他检测任务具有通用性。这种方法不依赖传统的区域提取,适用于不同场景的检测需求。
YOLO在做预测时使用的是全局图像。 与FastR-CNN相比,YOLO产生的背景错误数量不到一半。
不足之处 :虽然 YOLO 是一种创新且高效的检测方法,但在检测精度和细节方面仍有改进空间。
总结来说,YOLO算法在速度和简便性上显著优于传统检测方法,但仍需要在精度和检测精细度方面进一步优化。
二、Unified Detection—统一检测
算法思想 :YOLO将目标检测问题作为回归问题。会将输入图像分成S×S的网格,如果一个物体的中心点落入到一个格子中,那么该格子就要负责预测该物体,一个格子只能预测一个物体,会生成两个预测框。
具体来说,YOLO通过如下方式进行物体检测:
- 将图像划分为S×S的网格,每个网格负责检测中心点位于该网格的物体。
- 对于每个网格,网络输出B个边界框,每个边界框包含4个坐标、1个置信度得分和C个类别概率。
- 最终输出为S×S×(B×5 + C)的结果,通过NMS(非极大值抑制)筛选出最终的检测框。
| Q:什么是NMS(非极大值抑制)? 非极大值抑制(Non-Maximum Suppression, NMS)是一种用于对象检测中的后处理技术,目的是在检测结果中去除重复的检测框,保留最具有代表性的框。这种方法常用于处理卷积神经网络产生的多个重叠边界框,避免同一个物体被多个框重复标注。 非极大值抑制的工作流程
- 边界框排序:对所有检测出的边界框按照其置信度(confidence score)进行排序,置信度越高的框排在前面。
- 选择最高置信度的框:从排序后的框列表中选择置信度最高的边界框,将其作为保留框。
- 抑制重叠框:将与当前保留框重叠度(通常使用 IoU, 即交并比)超过某个阈值的其他框移除,认为它们是重复检测。
- 重复操作:从剩下的框中再次选择置信度最高的框作为新的保留框,重复步骤 3,直到所有框都处理完毕。
| 注意: NMS只发生在预测阶段,训练阶段是不能用NMS的 ,因为在训练阶段不管这个框是否用于预测物体的,他都和损失函数相关,不能随便重置成0。 |
|---|
| 重点:不管框 B 的数量是多少,一个格子只负责预测一个目标!!! 不管框 B 的数量是多少,一个格子只负责预测一个目标!!! 不管框 B 的数量是多少,一个格子只负责预测一个目标!!! 所以带来了一个缺陷:如果所给图片极其密集,导致一个格子里里可能有多个物体,但是YOLO模型只能预测出来一个,那这样就会忽略在本格子内的其他物体。 |
|---|
2.1 Network Design—网络设计

YOLO的网络架构采用一个较为简单的卷积神经网络,网络由24个卷积层和2个全连接层组成,卷积层用于特征提取,而全连接层用于预测物体的位置和类别。
2.2 Training—训练
1.预训练与网络初始化
- 使用 ImageNet 1000 类的预训练模型,前 20 层卷积层的权重初始化为预训练模型权重,以加速训练收敛。
- 输出层随机初始化,以便更好适应目标检测任务。
2. 损失函数设计

| 主要包含坐标损失、置信度损失和分类损失三个部分。以下是对该损失函数的详细解析: 1. 坐标损失(Localization Loss) 这个部分用于衡量预测边界框的坐标与真实坐标的差异,包含中心点位置和边界框的宽高两个方面的误差。
- 第一项
是一个权重超参数,用于加重坐标误差对损失的贡献。
表示网格数,YOLO 将图像划分为
的网格。- B表示每个网格预测的边界框数量。
是一个指示函数,若第
个网格的第
个边界框负责检测目标,则为 1,否则为 0。
是真实边界框的中心坐标,
是预测边界框的中心坐标。- 这个项用于计算中心坐标的平方误差。
- 第二项
- 同样使用
来加权宽度和高度误差。 - 宽度和高度取平方根的原因是减少大框和小框之间的差异,平衡小目标和大目标的影响。
是真实边界框的宽度和高度,
是预测边界框的宽度和高度。
- 同样使用
2. 置信度损失(Confidence Loss) 这个部分衡量预测的边界框置信度(即边界框中是否包含目标)的准确性。
- 第三项
是边界框的真实置信度,
是预测的置信度。- 置信度表示边界框中存在物体的概率和边界框与真实物体的
。
确保该项只对负责预测目标的边界框计算。
- 第四项
*
是另一个超参数,用于加权那些不包含目标的边界框的置信度损失。
是另一个指示函数,若第
个网格的第
个边界框不负责检测目标,则为 1。- 该项用于减小背景区域的置信度损失,避免过多的背景框干扰检测结果。
3. 分类损失(Classification Loss) 这个部分衡量分类准确性,即预测的类别概率与真实类别的差异。
- 第五项
是真实类别的概率分布,
是预测的类别概率分布。
确保只有包含目标的网格单元参与分类损失的计算。- 这项的损失度量了预测类别与真实类别之间的均方误差。
3. 学习率与优化
- 采用动态学习率调整策略,学习率从
开始逐步衰减至
和
。 - 使用了动量优化(momentum)和权重衰减(weight decay)策略,以防止模型发散。
4. 正则化与数据增强
- Dropout:使用 Dropout 技术在全连接层中随机丢弃一些神经元,以防止过拟合。
- 数据增强:采用随机缩放、平移和 HSV 颜色空间变化等数据增强方法,增加样本多样性,提高模型泛化能力。
2.3 Inference—推论
推理速度 :YOLO 的推理速度非常快,因为它只需一次网络评估(network evaluation),即可对整张图像完成检测,与基于分类的方法不同。在 Pascal VOC 数据集上,YOLO 可以快速预测边界框和类别。
空间多样性 :YOLO 设计上增强了边界框预测的空间多样性。每个网格单元仅能预测一个目标的边界框,但某些较大的目标可能会跨越多个网格单元,因此可以利用多个网格框进行定位。
非极大值抑制(NMS) :NMS 用于去除重叠的边界框,只保留最具代表性的框。对于 YOLO,NMS 的影响不像其他方法(如 Faster R-CNN 或 DPM)那么显著,但仍然可以提升 2-3% 的 mAP(平均精度)。
2.4 Limitations of YOLO—YOLO的局限性
空间约束 :由于每个网格单元只能预测两个边界框且只有一个类别,因此 YOLO 对检测对象施加了强烈的空间约束,限制了对邻近物体的检测,尤其是难以处理密集的小物体(如鸟群)。
特征学习的局限 :YOLO 的模型从数据中学习边界框的特征,但由于使用了多次下采样层(downsampling layers),细小的特征可能会丢失。这会导致模型难以识别细长或不规则目标,因此模型在配置时需要特别设计相邻层之间的特征相似性。
损失函数的设计 :YOLO 的损失函数主要关注小边界框的预测误差,因为小边界框的 IOU(交并比)对误差更为敏感。这种设计是为了确保对小目标的定位更准确,减少误检带来的影响。
总结来说,YOLO 通过在空间约束、特征提取和损失函数上进行优化,使得它能够在速度与精度间取得较好的平衡。
