YOLO(You Only Look Once)是一种实时目标检测算法,由Joseph Redmon等人在2016年首次提出。其核心思想是将目标检测任务转化为单次回归问题,直接在图像上预测边界框和类别概率,从而实现高效且快速的检测。在YOLOv1提出之前,R-CNN系列算法在目标检测领域中独占鳌头。R-CNN系列检测精度高,但是由于其网络结构是双阶段(two-stage)的特点,使得它的检测速度不能满足实时性,饱受诟病。SSD中锚框大量重叠,因此浪费了很多计算。YOLO是一种单阶段(one-stage)的目标检测网络,它的检测速度非常快,每秒可以处理45帧图片,能够轻松地实时运行。

1.YOLO算法特点

  1. 单阶段检测:YOLO将目标检测任务统一为一个端到端的回归问题,无需复杂的区域提议步骤(如R-CNN系列的两阶段检测)。

  2. 实时性高:YOLO的推理速度极快,适合实时应用(如视频监控、自动驾驶)。

  3. 全局上下文理解:由于直接处理整张图像,YOLO能够更好地利用全局信息,减少背景误检。

2.YOLO算法核心思想

        把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。YOLO系列算法的步骤:

        (1)划分图像:YOLO将输入图像划分为一个固定大小的网格。

        (2)预测边界框和类别:对于每个网格,YOLO预测出固定数量(通常为5个或3个)的边界框。每个边界框由5个主要属性描述:边界框的位置(中心坐标和宽高)和边界框包含的目标的置信度(confidence)。此外,每个边界框还预测目标的类别。

        (3)单次前向传递:YOLO通过一个卷积神经网络(CNN)进行单次前向传递,同时预测所有边界框的位置和类别。相比于其他目标检测算法,如基于滑动窗口或区域提议的方法,YOLO具有更快的速度,因为它只需要一次前向传递即可完成预测。

        (4)损失函数:YOLO使用多任务损失函数来训练网络。该损失函数包括位置损失、置信度损失和类别损失。位置损失衡量预测边界框和真实边界框之间的位置差异。置信度损失衡量边界框是否正确地预测了目标,并惩罚背景框的置信度。类别损失衡量目标类别的预测准确性。

        (5)非最大抑制(Non-Maximum Suppression):在预测的边界框中,可能存在多个相互重叠的框,代表同一个目标。为了消除冗余的边界框,YOLO使用非最大抑制算法,根据置信度和重叠程度筛选出最佳的边界框。

3.YOLO算法流程

  1. 输入处理:将图像缩放到固定尺寸(如448×448)。

  2. 特征提取:通过卷积神经网络(如Darknet)提取图像特征。

  3. 预测输出:网络输出一个S×S×(B×5 + C)的张量,其中5表示边界框的坐标和置信度。

  4. 非极大值抑制(NMS):过滤冗余的边界框,保留最佳检测结果。

         Backbone、Neck和Head:单阶段模型遵循特定的设计模式,即“骨干-颈部-头部这是物体检测器的结构。

        Backbone负责从输入图像中提取有用的特征。它通常是一个卷积神经网络(CNN),在大规模的图像分类任务中训练,如ImageNet。骨干网络在不同尺度上捕捉层次化的特征,在较早的层中提取低层次的特征(如边缘和纹理),在较深的层中提取高层次的特征(如物体部分和语义信息)。

        Neck是连接Backbone和Head的一个中间部件。它聚集并细化骨干网提取的特征,通常侧重于加强不同尺度的空间和语义信息。颈部可能包括额外的卷积层、特征金字塔(FPN)或其他机制,以提高特征的代表性

        Head是物体检测器的最后组成部分。它负责根据Backbone和Neck提供的特征进行预测。它通常由一个或多个特定任务的子网络组成,执行分类、定位,以及最近的实例分割和姿势估计。头部处理颈部提供的特征,为每个候选物产生预测。最后,一个后处理步骤,如非极大值抑制(NMS),过滤掉重叠的预测,只保留置信度最高的检测。

4.YOLOv1介绍

        论文地址:https://arxiv.org/pdf/1506.02640.pdf

        YOLOv1 中没有颈部的概念,只有骨干和头部。YOLOv1 的架构灵感来源于 GoogleNet,包含 24 个卷积层和两个全连接层。其中,前 20 个卷积层构成骨干,其余层连接到另外两个全连接层,作为检测头部。YOLOv1 没有使用 Inception 模块,而是在骨干中使用了一个 1×1 卷积层和 3×3 卷积层。这有助于在不降低空间维度的情况下减少通道数,从而显著降低参数数量。

        YOLOv1的网络结构十分清晰,是一种传统的one-stage的卷积神经网络:

  1. 网络输入:448*448*3的彩色图片;

  2. 中间层:由若干卷积层和最大池化层组成,用于提取图片的抽象特征;

  3. 全连接层:由两个全连接层组成,用来预测目标的位置和类别的概率值;

  4. 网络输出:7*7*30的预测结果。

        YOLOv1检测策略:YOLOv1采用的是“分而治之”的策略,将一张图片平均分成7x7个网格,每个网格分别负责预测中心点落在该网格内的目标。在Faster R-CNN中,是通过一个RPN来获得目标的感兴趣区域,这种方法精度高,但是需要额外再训练一个RPN网络,这无疑增加了训练的负担。在YOLOv1中,通过划分得到了7x7个网格,这49个网格就相当于是目标的感兴趣区域。通过这种方式,我们就不需要再额外设计一个RPN网络,这正是YOLOv1作为单阶段网络的简单快捷之处。

        具体实现过程如下:

        ①将一副图像分成个网格(grid cell),如果某个object的中心落在这个网格中,则这个网络就负责预测这个object。

        ②每个网格都要预测B个bounding box,每个bounding box要预测和confidence共5个值。

        ③每个网格还要预测一个类别信息,记为C个类。

        ④总的来说,个网格,每个网格要预测B个bounding box,还要预测C个类。网络输出就是一个的张量。

        在实际过程中,YOLOv1把一张图片划分为了7x7个网格,并且每个网格预测2个Box(Box1和Box2),20个类别。所以实际上,S=7,B=2,C=20。那么网络输出的shape也就是:

        目标损失函数由三部分组成,分别是:坐标预测损失、置信度预测损失、类别预测损失

5.YOLO算法优缺点

(1)优点

        YOLO检测速度非常快。标准版本的YOLO可以每秒处理45张图像;YOLO的极速版本每秒可以处理150帧图像。这就意味着YOLO可以小于25毫秒延迟,实时地处理视频。对于欠实时系统,在准确率保证的情况下,YOLO速度快于其他方法。

        YOLO实时检测的平均精度是其他实时监测系统的两倍。

        迁移能力强,能运用到其他新的领域(比如艺术品目标检测)。

(2)缺点

        YOLO对相互靠近的物体,以及很小的群体检测效果不好,这是因为一个网格只预测了2个框,并且都只属于同一类。

        由于损失函数的问题,定位误差是影响检测效果的主要原因,尤其是大小物体的处理上,还有待加强。(因为对于小的bounding boxes,small error影响更大)。

        YOLO对不常见的角度的目标泛化性性能偏弱。

YOLO算法变种

         YOLO系列自2016年诞生后经过多次更新,由最初的YOLOv1演变为现在的YOLOv11,网络结构、检测方式和性能表现都发生了明显改变。演进过程一直把提高精度、加快速度、简化网络和增强泛化当作主要目标,并且逐步扩大了应用范围。        

算法版本

核心改进及特点

YOLOv1

首次将目标检测视为回归问题,单次前向传播实现检测,将图像划分为7×7网格,每个网格预测2个边界框和20个类别,存在小目标检测差、定位精度低、误差较多的问题。

YOLOv2

引入锚框机制,通过k-means聚类生成先验框,实现输入分辨率动态调整,多尺度训练提升鲁棒性,预训练分辨率提升至448×448,增强特征提取能力。

YOLOv3

引入FPN多尺度预测,3种尺度特征图提升小目标检测能力,采用Darknet-53主干网络+残差结构,平衡速度与精度,用二元交叉熵代替Softmax,支持多标签分类。

YOLOv4

采用CSPDarknet53优化性能,减少计算量并增强特征融合,调用Mish激活函数提升非线性表达能力,引入Mosaic、CutMix等数据增强技术。

YOLOv5

核心为工程优化,提升工程友好性与部署灵活性,提供多种模型尺寸适配不同硬件,引入自动锚框计算,减少训练时间与内存占用。

YOLOv6

采用SimOTA动态分配正负样本,引入无锚范式简化计算、减少冗余参数,采用SIoU损失函数,加速网络收敛,兼顾轻量化与检测精度。

YOLOv7

引入高效层聚合网络(E-ELAN,优化特征重复利用,提升推理速度,采用动态标签分配,动态调整正负样本权重。

YOLOv8

对YOLOv5进行了改进,它使用无锚框Anchor-Free的设计方式来简化结构,减少了对超参数的依赖,并且通过引入可分离卷积减少了计算开销。它整体拥有轻量化和高推理速度的特点,适用于车载实时检测场景,但是小目标检测精度还有提高空间。

YOLOv9

引入了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN),旨在解决深层网络中的信息丢失问题,并优化网络结构以提高参数利用效率。

YOLOv10

消除了非最大抑制 (Non-Maximum Suppression, NMS) 要求,减少推理延迟。纳入大核卷积和部分自注意模块,在不增加大量计算成本的情况下提高性能。全面优化了各种组件,提高了效率和准确性。

YOLO v11

在多项任务(包括检测、分割、姿态估计、跟踪和分类)中提供最先进的 (SOTA) 性能,利用了各种 AI 应用程序和领域的功能。

应用场景

  • 自动驾驶:实时检测行人、车辆等目标。

  • 视频监控:快速识别异常行为或物体。

  • 工业检测:自动化产品质量检查。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐