1.YOLO(You Only Look Once)
2.one stage和two stage含义和区别
3.YOLO v1论文背景
4. YOLO v1算法流程
5. YOLO v1创新点
一、YOLO(You Only Look Once)
YOLO(You Only Look Once)是一种开创性的实时目标检测算法,由Joseph Redmon等人于2015年提出。核心思想是将目标检测任务转化为单次前向传播的回归问题,通过单个神经网络同时预测目标边界框和类别概率,显著提升了检测速度,适用于对实时性要求高的场景。
1.核心原理与流程
(1)单次检测:YOLO将输入图像一次性输入神经网络,直接输出所有目标的边界框和类别概率,无需生成候选区域(Region Proposal)的复杂流程。
(2)网格划分:输入图像被划分为 S×S 的网格,每个网格负责预测中心点落在该区域内的目标。每个网格预测多个边界框(早期版本为2个,后续版本引入锚点机制)及其置信度。
(3)边界框参数:每个边界框包含5个预测值:中心坐标 (x,y)(相对于网格左上角的偏移)、宽度 w 和高度 h(相对于图像尺寸的相对比例),以及置信度分数。
(4)非极大值抑制(NMS):通过NMS过滤重叠框,保留置信度最高的预测结果,提升检测精度。
2.损失函数
YOLO的损失函数由三部分组成:
(1)定位损失:边界框坐标误差(早期版本使用均方误差,后续改进为IoU或广义IoU)。
(2)置信度损失:区分目标是否存在的二元交叉熵损失5。
(3)分类损失:目标类别的多元分类损失(如Softmax或独立逻辑回归)。
3.优势与不足
- 优势
实时性:YOLO的检测速度远超两阶段算法(如R-CNN),基础版本可达45 FPS,轻量级版本超过150 FPS。
端到端训练:统一框架简化了训练流程,支持全局上下文信息的整合。
泛化能力强:在艺术图像等新领域表现优于传统方法。 - 不足
小目标检测困难:早期版本对密集或小目标(如群鸟)效果较差。
定位精度局限:因网格划分粗粒度,边界框回归误差较大。
4.YOLO系列算法的版本演进
版本 | 提出时间 | 特点 | 性能 |
---|---|---|---|
YOLOv1 | 2016 | 首次提出单阶段目标检测思想,将目标检测视为一个回归问题,直接从图像像素到边界框坐标和类别概率的映射 | 检测速度快,标准版本的YOLO可以每秒处理45张图像;YOLO的极速版本每秒可以处理150帧图像,但定位精度相对较低 |
YOLOv2 | 2017 | 引入锚框(anchor box)概念,提高了边界框预测的灵活性;提高了系统运行的分辨率,能够检测超过9000个物体类别 | 精度显著提高,尤其在小物体检测和复杂场景中表现更好,保持了实时检测的速度优势 |
YOLOv3 | 2018 | 采用多尺度预测和更深的网络架构(Darknet-53),更好地检测较小的物体 | 在 Pascal Titan X 上处理 608x608 图像速度可以达到 20FPS,在 COCO test-dev 上 mAP@0.5 达到 57.9% |
YOLOv4 | 2020 | 融合了CSP连接和Mosaic数据增强等功能,优化了网络结构 | 与YOLOv3相比,平均精度(AP)和每秒帧数(FPS)分别提高了10%和12% |
YOLOv5 | 2020 | 使用PyTorch框架实现,提供了不同大小的模型版本(如YOLOv5s、YOLOv5m等),自适应锚框计算,网络结构改进 | 在易用性和性能方面带来显著改进,成为计算机视觉社区的热门选择 |
YOLOv6 | 2022 | 采用无锚点的检测器,对Backbone和Neck进行了重新设计,提高了硬件效率 | 模型压缩策略优化,适合在资源受限的环境中运行,检测精度和速度均优于以前最先进的模型 |
YOLOv7 | 2023 | 提出模型结构重参化和动态标签分配问题的优化,进一步减少了参数量和计算量 | 在模型结构和训练策略上进行了创新,进一步提升了模型性能 |
YOLOv8 | 2023 | 无锚点,具有更快的NMS过程,提供不同大小的模型选择 | 在检测、分割、姿态估计等任务中提供先进的性能 |
YOLOv9 | 2024 | 提出可编程梯度信息(PGI)的概念,设计了基于梯度路径规划的通用高效层聚合网络(GELAN) | 在模型结构和训练策略上进行了创新,进一步提升了模型性能,参数量和计算量进一步减少 |
YOLOv10 | 2024 | 采用无NMS训练和效率-精度驱动架构 | 在效率和精度之间取得了更好的平衡 |
YOLOv11 | 2025 | 以注意力机制为核心,进一步优化模型结构和训练策略 | 综合性能强大,适用于多种复杂场景 |
二、one stage和two stage
目标检测中物体检测过程影响因素很多,比如一张图片中物体数量多,物体有不同的外观、形状、颜色、数据集大小、图像标注质量、训练参数等有很大的关系等因素,因此目标检测算法有一定的难度,在处理定位、识别等需要慢慢的进步发展。
one-stage和two-stage其实很简单,顾名思义,区别在于是一步到位还是两步到位(定位、识别)。深度学习发展以来,物体检测发展主要集中在两个方向。one stage检测器大大简化了two stage的框架,将定位和分类全部交给RPN独自完成,包含的RoI pooling等,提升了推理速度、简化了训练步骤。
1.One-Stage(单阶段)
直接通过单个神经网络对输入图像进行全局处理,一次性完成目标定位和分类,无需中间步骤生成候选区域(Proposal)。典型算法YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)等。
2.Two-Stage(双阶段)
第一阶段:生成候选区域(Region Proposals),筛选可能包含目标的区域。
第二阶段:对候选区域进行精细化分类和边界框回归。
典型算法:R-CNN系列(如Faster R-CNN、Cascade R-CNN)。
三、YOLO v1论文背景
论文网址You Only Look Once:Unified, Real-Time Object Detection
作者:Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi
发表会议:CVPR 2016
核心贡献:首次提出 单阶段目标检测框架(YOLO),将检测任务转化为端到端的回归问题,实现实时检测。
1.摘要
我们提出了YOLO,一种新的目标检测方法。先前的目标检测工作是将分类器重新用于执行检测。相反,我们将目标检测框架视为一个回归问题,以空间分离的边界框和相关的类别概率为目标。一个神经网络直接从完整图像中预测边界框和类别概率,仅需一次评估。由于整个检测流程是一个单一的网络,因此可以在检测性能上进行端到端的优化。
我们的统一架构速度非常快。我们的基础 YOLO 模型实时处理图像,每秒 45 帧。一个更小的网络版本 Fast YOLO 每秒处理惊人的 155 帧,同时仍然实现其他实时检测器的两倍 mAP。与最先进的检测系统相比,YOLO 的定位错误更多,但在背景上预测假阳性的可能性较小。最后,YOLO 学习非常一般的物体表示。在从自然图像到其他领域(如艺术作品)的泛化方面,YOLO 的表现优于其他检测方法,包括 DPM 和 R-CNN。
四、 YOLO v1算法流程
- 将物体检测的各个独立组件统一到一个单一的神经网络中网络利用整个图像的特征来预测每个边界框。它还同时预测图像中所有类别的所有边界框。这意味着我们的网络能够全局推理整个图像及其中的所有物体。
- YOLO设计实现了端到端的训练和实时速度,同时保持高平均精度。我们的系统将输入图像划分为一个S x S网格。如果一个物体的中心落入某个网格单元,该网格单元就负责检测该物体。每个网格单元预测B个边界框和这些框的置信度分数。这些置信度分数反映了模型对该框包含物体的信心以及它认为其预测的框的准确性。我们正式定义置信度为Pr(物体) IOU真值预测。如果该单元内没有物体,置信度分数应该为零。否则,我们希望置信度分数等于预测框与真实框之间的交并比(IOU)。
- 每个边界框由5个预测组成:x,y,w,h和置信度。 (x,y)坐标表示框的中心相对于网格单元的边界。宽度和高度是相对于整个图像进行预测的。最后,置信度预测表示预测框与任何真实框之间的IOU。每个网格单元还预测C个有条件类概率,Pr(类|物体)。这些概率是以网格单元包含物体为条件的。我们每个网格单元只预测一组类概率,而不考虑边界框B的数量。
- 在测试时,我们将有条件的类概率与每个框的单独置信度预测相乘,Pr(类|物体) Pr(物体) IOU真值预测 = Pr(类) IOU真值预测 (1),这为每个框提供了特定类的置信度分数。这些分数编码了该类出现在框中的概率以及预测框与物体匹配的程度。
五、YOLO v1技术和创新
将检测建模为一个回归问题。它将图像划分为SS的网格,并为每个网格单元预测B个边界框、这些框的置信度和C个类别概率。这些预测被编码为一个SS(B 5+C)张量。
- 图像网格化:将输入图像划分为 S×S 的网格(YOLO v1中 S=7),每个网格负责预测中心点落在该区域内的目标。
- 边界框预测:每个网格预测 B 个边界框(YOLO v1中 B=2),包含坐标、宽度、高度和置信度,置信度反映边界框内包含目标的概率及定位准确性。
- 类别预测:每个网格独立输出 C 个类别的概率分布(如PASCAL VOC数据集的20类),仅当网格包含目标时,类别预测才被激活。
1.网络结构
- 网络的初始卷积层从图像中提取特征,而全连接层则预测输出概率和坐标。网络架构受GoogleNet图像分类模型的启发。网络有24个卷积层,后面接2个全连接层。与GoogleNet使用的 inception 模块不同,我们简单地使用1 X 1 的降维层,后面接3 X 3 的卷积层。还训练了一个快速版的YOLO,旨在推动快速目标检测的边界。
2.训练
- 网络的输入分辨率从224x224增加到448x448。最终层同时预测类别概率和边界框坐标。通过图像的宽度和高度对边界框的宽度和高度进行归一化,以使它们落在0到1之间。将边界框的x和y坐标参数化为特定网格单元位置的偏移量,因此它们也被限制在0到1之间。
3.损失函数设计
- 多任务联合损失由四部分组成:边界框坐标误差、置信度误差、分类误差,通过加权因子平衡不同任务的贡献。损失函数同时优化坐标误差(均方误差)、置信度误差(二分类交叉熵)和类别误差(Softmax)。
- 引入权重因子 λcoord =5 和 λnoobj=0.5分别增强定位误差的权重、抑制不包含目标的网格的置信度损失。
- 对边界框宽度和高度预测平方根,缓解大框和小框的误差不均衡问题。
- IoU度量:置信度定义为预测框与真实框的IoU,直接优化定位准确性
4.训练策略
- 在ImageNet上预训练前20层卷积层,再微调后4层卷积和全连接层。
- 数据增强:随机缩放、平移及HSV色彩空间扰动,提升泛化能力。
5.端到端统一优化
- 单网络融合:YOLO v1使用单个卷积神经网络同时完成特征提取、边界框回归和类别分类,避免了多阶段交替的复杂性。
- 全局上下文信息:利用全图特征进行决策,减少了背景误检(比Fast R-CNN背景错误率降低50%),尤其适用于复杂场景。
6.单阶段检测(One-Stage)
- 摒弃候选区域生成:不同于当时主流的两阶段方法(如Faster R-CNN),YOLO v1无需生成候选区域(Region Proposal),直接通过单个神经网络对输入图像进行全局处理,一次性输出所有目标的边界框和类别概率。
- 回归建模:将目标检测视为回归问题,直接预测边界框坐标(x,y,w,h)和置信度,而非分类+定位的分阶段流程,显著提升了检测速度。