ModelCube(modelcube.cn)是博雅数智自主研发的一站式人工智能科研平台。为全国高校和科研机构的大数据和人工智能科研团队提供一站式科研服务。基于MLOps的实践和企业核心技术,实现了科研场景中全类型数据管理与标注,实验环境快速获取与灵活定制,模型的全生命周期管理,科研成果的管理与发布,以及 AI驱动的论文检索和学习等功能。
1 YOLO目标检测概述
1.1 目标检测(Object Detection)
目标检测(Object Detection)是计算机视觉中用于识别和定位图像或视频中的物体的技术。图像定位是通过矩形边界框来确定一个或多个物体的正确位置,但有时这个过程会与图像分类或图像识别混淆(图像分类或识别旨在预测图像或图像中的物体属于哪个类别)。下图更清晰展示了目标检测和其他两个过程的区别以及其优势。
1.2 YOLO(You Only Look Once)
YOLO在2015年由Joseph Redmon等人在著名的研究论文《You Only Look Once: Unified, Real-Time Object Detection》中提出,是一种当时最先进的实时目标检测算法。其通过边界框实现空间上的分离,并使用单个卷积神经网络(CNN)为每个检测到的图像关联概率,将目标检测问题构建为回归任务而不是分类任务。
2 YOLO用于目标检测的优势
2.1 速度快(Speed)
YOLO以其速度和效率在目标检测任务中著称。其极快的速度源于其不涉及复杂的流程,它可以以每秒45帧(FPS)的速度处理图像。此外,与其他实时系统相比,YOLO的平均精度均值(mAP)超过两倍,这使得它成为实时处理的理想选择。
从下图中,可以观察到YOLO以91 FPS的速度远远超越其他目标检测器。
2.2 检测准确性高(High detection accuracy)
YOLO在目标检测任务中表现出了高准确性,背景误差非常少,在精度方面远远超过其他最先进的模型。
2.3 泛化能力更好(Better generalization)
新版的YOLO在更好地泛化应用方面尤其突出,这一点将在后续进行论述。由于这些改进,YOLO进一步提升了其泛化性能,在新领域中提供了更好的推广,使其成为需要快速和可靠目标检测的理想选择。例如,《Automatic Detection of Melanoma with Yolo Deep Convolutional Neural Networks》这篇研究论文表明,与YOLOv2和YOLOv3相比,YOLO的初始版本YOLO v1在自动检测黑色素瘤方面具有最低的平均精度。
2.4 开源(Open Source)
YOLO的开源使得社区能够不断改进该模型,这是YOLO在有限时间内取得如此多改进的原因之一。
3 YOLO详解
3.1 模型框架
YOLO的架构类似于GoogleNet。如下图所示,它总共有24个卷积层,4个最大池化层和2个全连接层。
该框架的工作流程如下:
在进入卷积网络之前,将输入图像调整为448×448大小。 采用1×1卷积来减少通道数,然后再进行3×3卷积以生成一个立体输出。除了最后一层使用线性激活函数,其他激活函数采用ReLU。 同时采取一些其他技术,如batch normalization对模型进行正则化,dropout防止过拟合。
3.2 工作原理
该算法基于以下四个步骤:残差块、边界框回归、交并比(IOU)和非极大值抑制(NMS)。下面将通过一个小例子更好理解如何从图(A)得到图(B)。
3.2.1 残差块(Residual blocks)
第一步将原始图像(A)分成大小相等的N x N格子网格,其中N在本例中为4,如右侧图像所示。网格中的每个单元都负责定位和预测其覆盖的对象类别,以及概率/置信度值。
3.2.2 边界框回归(Bounding box regression)
下一步是确定并用矩形突出显示对应于图像中所有包含目标对象的边界框。可以有与给定图像中的对象数量相同的边界框。YOLO使用一个单一的回归模块确定这些边界框的属性,格式如下,其中 是每个边界框的最终向量表示。
其中:
是指包含对象的网格的概率得分。例如,所有红色格子的概率得分都高于零。右侧图像是简化版本,因为每个黄色格子的概率为零(可以忽略)。
和 是边界框相对于所在网格单元的中心点的横纵坐标。
和 分别是边界框相对于所在网格单元的高度和宽度。
和 分别对应两个类别,本例中是“球员”和“球”。根据具体情况,可以有更多的类别。
3.2.3 交并比(Intersection over Union)
在一张图像中,一个对象通常可以有多个网格框作为预测的候选,尽管它们并非全部都是相关的。IOU(介于0和1之间的值)的目标是舍弃那些不相关的网格框,只保留那些相关的网格框。下面是其背后的逻辑:
用户定义IOU筛选阈值,例如0.5; 然后YOLO计算每个网格单元的IOU值,即交集面积除以并集面积; 最后,忽略IOU小于等于阈值的网格单元的预测结果,只考虑IOU大于阈值的网格单元。
下面是将网格选择过程应用于右下角对象的示例。可以看到,该对象最初有两个网格候选,但最终只选择了“Grid 2”。
3.2.4 非极大值抑制(Non-Max Suppression )
仅仅设置IOU的阈值往往并不足够,因为一个对象可能会有多个IOU超过阈值的框,保留所有这些框可能会包含噪音。这时我们可以使用非最大值抑制(NMS)来只保留具有最高检测概率得分的框。
4 YOLO应用
YOLO目标检测在我们日常生活中有不同的应用。在本节中,我们将介绍以下领域中的一些应用:医疗健康、农业、安全监控和自动驾驶汽车。
4.1 不同产业的应用
目标检测已经应用在很多产业如医疗健康和农业,下面将通过一些具体例子进行介绍。
4.1.1 医疗健康(Healthcare)
特别是在手术中,由于患者之间的生物多样性,实时定位器官是一项较大挑战。CT扫描中的肾脏识别使用了YOLO v3技术,以便从计算机断层扫描(CT)图像中定位肾脏。
4.1.2 农业(Agriculture)
人工智能和机器人技术在现代农业中扮演着重要角色。收割机器人是基于视觉的机器人,旨在取代人工采摘水果和蔬菜的工作。在这一领域中,其中一个最佳模型使用了YOLO技术。在基于改进的YOLO v3框架的番茄检测中,利用YOLO来识别不同类型的水果和蔬菜,以实现高效的收获过程。
4.2 安全监控(Security surveillance)
虽然目标检测技术主要用于安全监控,但这并不是它的唯一应用。在COVID-19期间,YOLO v3被用于估计人们之间的社交距离违规情况。这有助于监测公共场所的社交距离合规情况,并提醒人们保持适当的距离,从而减少疾病传播的风险。
4.3 自动驾驶汽车(Self-driving cars)
实时目标检测是自动驾驶汽车系统的重要组成部分。这种集成对于自动驾驶汽车至关重要,因为它们需要正确识别车道、周围的物体和行人,以提高道路安全性。与简单的图像分割方法相比,YOLO的实时性使其成为更好的选择。
5 不同版本YOLO模型之间的差异
自从YOLO在2015年首次发布以来,它已经发展了许多不同版本。在本节中,将介绍每个版本之间的差异。
5.1 YOLOv1
第一个版本的YOLO能够快速高效地识别对象,对目标检测产生了重大影响。然而,与许多其他解决方案一样,YOLO的第一个版本也有其局限性:
在检测一组图像中的较小图像(例如体育场中的一群人)时存在困难。这是因为YOLO架构中的每个网格都设计用于单个对象检测。
YOLO无法成功检测新的或不寻常的形状。
用于近似检测性能的损失函数将小型和大型边界框的错误视为相同,实际上会导致不正确的定位结果。
You Only Look Once: Unified, Real-Time Object Detection[1]. Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi. CVPR 2016.
5.2 YOLOv2和YOLO9000
YOLOv2是在2016年创建的,旨在使YOLO模型更好、更快、更强大。改进包括但不限于采用Darknet-19作为新的架构、批量归一化、更高分辨率的输入、使用锚框卷积层、维度聚类和精细特征。
5.2.1 批量归一化(Batch Normalization)
添加了批量归一化层,将性能提高了2% mAP。这种批量归一化包括正则化效果,防止过拟合。
5.2.2 更高输入分辨率(Higher input resolution)
YOLOv2直接使用448×448的更高分辨率输入而不是224×224,使得模型可以在更高分辨率的图像上表现更好。经过在ImageNet数据上训练10轮后,这种方法将准确度提高了4% mAP。
5.2.3 使用锚框的卷积层(Convolution layers using anchor boxes)
YOLOv2用锚框取代了YOLO v1中预测对象边界框确切坐标的方式,简化了问题。这种方法略微降低了准确度,但将模型的召回率提高了7%,为进一步改进提供了更多空间。
5.2.4 维度聚类(Dimensionality clustering)
之前提到的锚框通过使用k=5的K-Means维度聚类算法自动找到,而不是手动选择。这种新颖的方法在模型的召回率和精确度之间提供了良好的平衡。
5.2.5 精细特征(Fine-grained features)
YOLOv2预测生成13×13的特征图,对于大型目标检测来说已经足够。但是对于更细小的目标检测,可以通过将26×26×512的特征图转换为13×13×2048的特征图,并与原始特征连接起来修改架构。这种方法将模型性能提高了1%。
YOLO9000: Better, Faster, Stronger[2]. Joseph Redmon, Ali Farhadi. CVPR 2017.
5.3 YOLOv3— An incremental improvement
YOLOv3在YOLOv2的基础上进行了增量改进。主要改变包括了一个新的网络架构:Darknet-53。这是一个拥有106个神经网络、上采样网络和残差连接的模型。与YOLOv2中的Darknet-19相比,Darknet-53更大、更快、更准确。这个新的架构在很多方面都有优势。
5.3.1 更好的边界框预测
YOLOv3使用逻辑回归模型来预测每个边界框的置信度得分。
5.3.2 更准确的类别预测
在YOLOv3中,不再使用像YOLOv2中那样的Softmax函数,而是引入了独立的逻辑分类器来准确预测边界框的类别。这对于面对具有重叠标签的复杂领域(例如,人→足球运动员)尤其有用。使用Softmax函数会限制每个框只能有一个类别,而这并不总是准确的。
5.3.3 在不同尺度上更准确的预测
YOLOv3对于输入图像的每个位置执行三个不同尺度的预测,以帮助从前一层进行上采样。这种策略允许获取细粒度且更有意义的语义信息,从而得到更高质量的输出图像。
YOLOv3: An Incremental Improvement[3]. Joseph Redmon, Ali Farhadi. CoRR 2018.
5.4 YOLOv4— Optimal Speed and Accuracy of Object Detection
与之前的版本和其他最先进的目标检测器相比,YOLOv3在目标检测的速度和准确性上都达到了最佳水平。下图显示了YOLOv4相对于YOLO v3在速度上提升了10%,帧率提升了12%。
YOLOv4是专为生产系统设计的,对并行计算进行了优化。YOLO v4的架构主要由CSPDarknet53组成,它包含29个卷积层,使用3×3的卷积核,约有2760万个参数。相比于YOLO v3,这个架构添加了以下信息以实现更好的目标检测:
空间金字塔池化(SPP)模块:显著增加接受域,提取最相关的上下文特征,并不影响网络速度。 参数聚合:使用PANet代替YOLO v3中的特征金字塔网络(FPN),用于不同检测级别的参数聚合。 数据增强:使用马赛克技术将四个训练图像组合在一起,同时采用自适应对抗训练方法。 优化超参数选择:使用遗传算法进行最佳超参数选择。
YOLOv4: Optimal Speed and Accuracy of Object Detection[4]. Bochkovskiy Alexey, Wang Chien-Yao, Liao Hong-Yuan Mark. CVPR 2020.
5.5 YOLOR—You Only Look One Representation
作为一个多任务统一网络,YOLOR基于一个融合了显式和隐式知识方法的统一网络。
显式知识是指正常或有意识的学习方式,而隐式知识则是在无意识状态下(通过经验)进行的学习。通过结合这两种技术,YOLOR能够基于三个过程创建一个更加强大的架构:(1)特征对齐;(2)目标检测的预测对齐;(3)多任务学习的规范表示。
5.5.1 预测对齐(Prediction alignment)
这种方法会在每个特征金字塔网络(FPN)的特征图中引入一种隐式表示,从而提高了精度约 0.5%。
5.5.2 目标检测的预测细化(Prediction refinement for object detection)
通过为网络的输出层添加隐式表示对模型预测进行了细化。
5.5.3 多任务学习的规范表示(Canonical representation for multi-task learning)
执行多任务训练需要在共享所有任务的损失函数上进行联合优化。这个过程可能会降低模型的整体性能,但通过在模型训练期间集成规范表示可以缓解这个问题。
从下面的图中,我们可以观察到与其他模型相比,YOLOR在MS COCO数据上实现了最先进的推理速度。
You Only Learn One Representation: Unified Network for Multiple Tasks[5]. Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao. JISE 2021.
5.6 YOLOX— Exceeding YOLO Series in 2021
YOLOX是在论文《Exceeding YOLO Series in 2021》提出的一个模型,它基于YOLO v3进行了改进,使用Darknet-53作为主干网络。在《Exceeding YOLO Series in 2021》这篇论文中,YOLOX带来了以下四个关键特点,相比于旧版本的YOLO,创造了更好的模型。
5.6.1 高效的解耦合头 (An efficient decoupled head)
之前的YOLO版本使用的耦合头被证明会降低模型性能。YOLOX使用了解耦合头,将分类和定位任务分离开来,从而提高了模型的性能。
5.6.2 强大的数据增强 (Robust data augmentation)
将Mosaic和MixUp集成到数据增强方法中,显著提高了YOLOX的性能。
5.6.3 无锚点系统 (An anchor-free system)
锚点算法在内部执行聚类操作,从而增加了推理时间。YOLOX去除了锚点机制,减少了每张图像的预测数量,并显著提高了推理速度。
5.6.4 SimOTA标签分配 (SimOTA for label assignment)
引入了SimOTA标签分配策略,取代了交并比(IoU)方法,这是一种更为稳健的标签分配策略,不仅减少了训练时间,还避免了额外的超参数问题。此外,它还将检测的mAP提高了3%。
YOLOX: Exceeding YOLO Series in 2021[6]. Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun. arXiv 2021.
5.7 YOLOv5[7]
YOLOv5与其他版本不同,没有发表的研究论文,并且它是第一个在PyTorch中实现而不是Darknet的YOLO版本。YOLOv5是由Glenn Jocher于2020年6月发布的,与YOLOv4类似,它使用CSPDarknet53作为其架构的主干网络。发布版本包括五种不同的模型大小:YOLOv5s(最小)、YOLOv5m、YOLOv5l和YOLOv5x(最大)。
YOLOv5架构的一个重大改进是集成了Focus层,它由单一层表示,通过替换YOLOv3的前三层而创建。这样的集成减少了层数和参数数量,并且提高了前向和后向速度,而对mAP影响不大。
下图比较了YOLOv4和YOLOv5s之间的训练时间。
5.8 YOLOv6— A Single-Stage Object Detection Framework for Industrial Applications
YOLOv6(MT-YOLOv6)是由中国电商美团发布的,专门针对工业应用的硬件友好、高效设计和高性能的框架。这个新版本是用PyTorch编写的,虽然不是官方的YOLO版本,但它的主干网络受到了原始的单阶段YOLO架构的启发,因此得到了YOLOv6的名称。
YOLOv6在前一版本YOLOv5的基础上引入了三个重大改进:硬件友好的主干网络和neck设计、高效的解耦合头以及更有效的训练策略。
如下所示,YOLOv6在COCO数据集上在准确性和速度方面相比之前的YOLO版本取得了出色的结果。
YOLOv6n在NVIDIA Tesla T4 GPU上以每秒1234帧的吞吐量,在COCO数据集上达到了35.9%的AP。 YOLOv6s以869帧的速度创造了新的最先进的43.3% AP。 YOLOv6m和YOLOv6l在相同的推理速度下分别达到了更高的准确性表现,分别为49.5%和52.3%。
YOLOv6在准确性和速度方面有了显著的提升,使其成为产业应用中值得考虑的选择。
YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications[8]. Chuyi Li, Lulu Li, Hongliang Jiang, Kaiheng Weng, Yifei Geng, Liang Li, Zaidan Ke, Qingyuan Li, Meng Cheng, Weigiang Nie, Yiduo Li, Bo Zhang, Yufei Liang, Linyuan Zhou, Xiaoming Xu, Xiangxiang Chu, Xiaoming Wei, Xiaolin Wei. arXiv 2022.
5.9 YOLOv7—Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
YOLOv7是在2022年7月发布的《Trained bag-of-freebies sets new state-of-the-art for real-time object detectors》的论文中提出的。这个版本在目标检测领域取得了重大进展,在准确性和速度方面均超过了之前的所有模型。
YOLOv7在架构和可训练的 bag-of-freebies层面上做出了重大改变。
5.9.1 架构层面
YOLOv7通过集成扩展的高效层聚合网络(E-ELAN)对其架构进行了改进,从而使模型能够学习更多元化的特征以实现更好的学习效果。
此外,YOLOv7通过连接其派生模型(如YOLOv4、Scaled YOLOv4和YOLOR)的架构来扩展其自身的架构。这可以满足不同推理速度的需求。
5.9.2 可训练的 bag-of-freebies
可训练的 bag-of-freebies指的是在不增加训练成本的情况下提高模型准确性的方法,这也是YOLOv7提高推理速度和检测精度的原因。
YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[9]. Chien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao. CVPR 2022.
6 结论
本文介绍了YOLO相对于其他最先进的目标检测算法的优势,并突出了它从2015年到2020年的发展历程。鉴于YOLO的快速发展,毫无疑问它将在目标检测领域长期保持领先地位。
本文翻译自 https://www.datacamp.com/blog/yolo-object-detection-explained
You Only Look Once: Unified, Real-Time Object Detection: http://modelcube.cn/paper/detail/11
[2]YOLO9000: Better, Faster, Stronger: http://modelcube.cn/paper/detail/854228
[3]YOLOv3: An Incremental Improvement: http://modelcube.cn/paper/detail/362
[4]YOLOv4: Optimal Speed and Accuracy of Object Detection: http://modelcube.cn/paper/detail/363
[5]You Only Learn One Representation: Unified Network for Multiple Tasks: http://modelcube.cn/paper/detail/364
[6]YOLOX: Exceeding YOLO Series in 2021: http://modelcube.cn/paper/detail/365
[7]YOLOv5: https://github.com/ultralytics/yolov5
[8]YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications: http://modelcube.cn/paper/detail/367
[9]YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors: http://modelcube.cn/paper/detail/366
阅读原文,了解更多信息:ModelCube一站式人工智能科研平台
http://modelcube.cn/paper/reading-list-detail/38