来源:新机器视觉

(声明:部分素材、图片来源于网络,版权归原作者所有,若有侵权,请联系及时删除。)

在人工智能领域,目标检测被誉为计算机视觉的“明珠”,其核心任务是从图像中定位并识别多个物体的位置和类别。然而,传统方法因速度慢、流程复杂,难以满足实时性需求。2016年,YOLO(You Only Look Once)的横空出世,彻底颠覆了这一局面。它以“单次前向传播完成检测”的革命性设计,将速度与精度推向新的平衡点,成为实时目标检测领域的标杆。

YOLO的起源

YOLO最早由Joseph Redmon等人在2016年提出,旨在解决目标检测过程中速度和精度之间的平衡问题。传统的目标检测方法,如R-CNN、Fast R-CNN,虽然在检测精度上表现优异,但由于其两阶段的检测流程,导致处理速度较慢,难以满足实时应用的需求。YOLO则通过将整个检测过程简化为单一的回归问题,从而显著提升了检测速度,具体来说,YOLO模型通过一次前向传播即可同时预测出目标的类别和位置,这种高效的设计使得YOLO在目标检测领域中占据了重要地位。

YOLO的基本概念

YOLO,即You Only Look Once,是一种基于深度学习的实时目标检测算法,其核心理念在于将目标检测任务转化为一个单一的回归问题,从输入图像直接预测目标的类别和边界框。YOLO的关键在于其单阶段的设计,这与传统的两阶段检测器形成鲜明对比,两阶段检测器,如Faster R-CNN,首先生成候选区域,然后对这些区域进行分类和边界框回归,虽然这种方法在精度上有优势,但速度相对较慢。YOLO的设计简化了这一流程,使得目标检测的速度得到了极大的提升。

YOLO算法将图像分成S×S的网格,每个网格负责预测一定数量的边界框以及这些框内物体的置信度和类别,通过一次性完成检测和分类,YOLO在速度上远远超过了以往的目标检测方法,特别是在实时应用中表现尤为出色。

YOLO的工作原理

YOLO的工作原理基于将目标检测任务转化为一个回归问题。具体来说,YOLO模型将输入图像划分为S×S的网格,每个网格单元负责预测多个边界框及其对应的类别置信度,模型的输出是一系列边界框、类别标签以及对应的置信度分数。YOLO通过一次性处理整个图像,生成所有目标的检测结果,这种方法显著提高了检测速度。

打开网易新闻 查看精彩图片

输入与输出:YOLO的输入通常是一个固定尺寸的图像(例如416×416像素),而输出则是一个包含边界框坐标、类别标签和置信度的张量。每个网格单元预测多个边界框,并为每个边界框生成一个置信度分数和类别预测。

网络架构:YOLO的核心架构是一个卷积神经网络(CNN),通常包括多层卷积、池化和全连接层。YOLOv1使用了一个简单的卷积网络,而后续版本(如YOLOv3、YOLOv4)则引入了更复杂的特征提取器(如Darknet-53、CSPNet)以提高检测精度。

核心技术概述

YOLO采用了一系列关键技术来实现高效的目标检测:

Anchor Boxes:Anchor boxes是一种预定义的边界框集合,用于处理不同大小和形状的目标,YOLO模型在每个网格单元上预设多个anchor boxes,并为每个box预测其偏移量和类别,这种设计允许YOLO在处理多尺度目标时更加灵活。

损失函数与优化:YOLO的损失函数包括位置误差、置信度误差和类别误差的组合,通过优化这些误差,YOLO模型能够在训练过程中不断提高预测精度。具体而言,YOLO的损失函数会在模型训练时对预测的边界框位置、类别置信度和分类结果进行综合评估,从而指导模型参数的更新。

Non-Maximum Suppression (NMS):NMS是一种后处理技术,用于消除多个重叠的边界框,保留置信度最高的那个,这一过程能够有效减少检测结果中的冗余和重复,提高检测结果的准确性。

yolo发展历程

YOLO v1:YOLO的第一个版本是在2015年提出的,它采用了一个全卷积神经网络,将输入图像分为S×S个网格,每个网格预测B个边界框和各自边界框的类别概率。然后,通过阈值筛选和非极大值抑制(NMS)来获得最终的检测结果。YOLO v1在速度和准确率上取得了很大的突破,但对小目标和近似目标的检测效果较差。

YOLOv5是由Ultralytics团队在2020年开发的。YOLOv5相比于之前的版本在精度和速度上都有显著提升。它采用了一种轻量化的结构,包括多个不同大小的卷积层和池化层,用于提取图像特征。与以往的版本相比,YOLOv5引入了新的网络架构,以及一种新的训练方法,使用更大的数据集和更长的训练时间,从而提高了算法的性能。

YOLOv8 是由 Ultralytics 公司在2023年1月发布的最新一代实时目标检测模型。YOLOv8 采用了先进的骨干网络和颈部架构,实现了改进的特征提取和目标检测性能。它采用了无锚点的分割 Ultralytics 头部设计,这有助于提高准确性并使检测过程更加高效。YOLOv8 还专注于在准确性和速度之间保持最佳平衡,适合于不同应用领域的实时目标检测任务。此外,YOLOv8 提供了一系列预训练模型,以满足不同任务和性能要求,使得用户可以根据自己的具体用例找到合适的模型。

YOLOv9 由中国台湾 Academia Sinica、台北科技大学等机构联合开发。YOLOv9引入了程序化梯度信息(Programmable Gradient Information, PGI),这是一种全新的概念,旨在解决深层网络中信息丢失的问题。传统的目标检测网络在传递深层信息时,往往会丢失对最终预测至关重要的细节,而PGI技术能够保证网络在学习过程中保持完整的输入信息,从而获得更可靠的梯度信息,提高权重更新的准确性。这一创新显著提高了目标检测的准确率,为实时高精度目标检测提供了可能。此外,YOLOv9采用了全新的网络架构——泛化高效层聚合网络(Generalized Efficient Layer Aggregation Network, GELAN)。GELAN通过梯度路径规划,优化了网络结构,利用传统的卷积操作符实现了超越当前最先进方法(包括基于深度卷积的方法)的参数利用效率。这一设计不仅提高了模型的性能,同时也保证了模型的高效性,使YOLOv9能够在保持轻量级的同时,达到前所未有的准确度和速度。

YOLOv10是清华大学的研究人员在Ultralytics的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的精度-延迟权衡。

目标检测算法的分类

目前主流的目标检测算法主要是基于深度学习模型,大概可以分成两大类别:

(1)One-Stage(单阶段)目标检测算法,这类检测算法不需要Region Proposal阶段,可以通过一个Stage直接产生物体的类别概率和位置坐标值,比较典型的算法有YOLO、SSD和CornerNet;One-Stage目标检测算法可以在一个stage直接产生物体的类别概率和位置坐标值,相比于Two-Stage的目标检测算法不需要Region Proposal阶段,整体流程较为简单。在Testing的时候输入图片通过CNN网络产生输出,解码(后处理)生成对应检测框即可;在Training的时候则需要将Ground Truth编码成CNN输出对应的格式以便计算对应损失loss。

目前对于One-Stage算法的主要创新主要集中在如何设计CNN结构、如何构建网络目标以及如何设计损失函数上。

(2)Two-Stage(双阶段)目标检测算法,这类检测算法将检测问题划分为两个阶段,第一个阶段首先产生候选区域(Region Proposals),包含目标大概的位置信息,然后第二个阶段对候选区域进行分类和位置精修,这类算法的典型代表有R-CNN,Fast R-CNN,Faster R-CNN等。目标检测模型的主要性能指标是检测准确度和速度,其中准确度主要考虑物体的定位以及分类准确度。一般情况下,Two-Stage算法在准确度上有优势,而One-Stage算法在速度上有优势。不过,随着研究的发展,两类算法都在两个方面做改进,均能在准确度以及速度上取得较好的结果。

Two-Stage目标检测算法在Testing的时候输入图片经过卷积神经网络产生第一阶段输出,对输出进行解码处理生成候选区域,然后获取对应候选区域的特征表示(ROIs),然后对ROIs进一步精化产生第二阶段的输出,解码(后处理)生成最终结果,解码生成对应检测框即可;在Training的时候需要将Ground Truth编码成CNN输出对应的格式以便计算对应损失loss。

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除