0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

目标检测YOLO系列算法的发展过程

新机器视觉 来源:DeepHub IMBA 作者:Dr. Abduljabbar Asadi 2022-10-27 17:45 次阅读

本文中将简单总结YOLO的发展历史,YOLO是计算机视觉领域中著名的模型之一,与其他的分类方法,例如R-CNN不同,R-CNN将检测结果分为两部分求解:物体类别(分类问题),物体位置即bounding box(回归问题)不同,YOLO将任务统一为一个回归问题。也就是相对于R-CNN系列的“看两眼”(候选框提取与分类),YOLO只需要 You Only Look Once。

目标检测

我们人类只需要看一眼图像就能知道图像里面包含了那些物体,能够知道这些物体在哪里,以及他们之间的相互关系。这是人类进行目标检测的过程,但是当谈到人工智能计算机视觉中的视频和图像分析时,目标检测是一个有趣和不断发展的主题,它从图像和视频中提供有意义和有价值的信息,可以为医疗保健、产品优化、人脸识别、自动驾驶,卫星图像分析等不同领域提供巨大的帮助。检测一个对象并从图像中获得高层次的语义或理解将通过3个步骤:

eddf98b4-4286-11ed-96c9-dac502259ad0.png

1、分类:这是一个有监督的学习任务,它将训练一个模型,如支持向量机(SVM), AdaBoost来理解一个对象是否在图像中

2、定位:通过边界框来区分对象图像,显示对象是否在图像中(分类)

3、检测:精确检测物体所在的位置(物体定位)和它们所属的组(物体分类)的过程。

下图显示了目标检测模型的结构。像人工智能中的所有算法一样,它从输入层开始(输入一个图像),目标检测的两个主要部分是Backbone和Head。Backbone的作用是提取特征,提供输入的特征映射表示,一般都会使用ImageNet上的预训练模型。Head基于特征进行训练,预测图像中物体的类别及其边界框。

在两阶段目标检测模型中, Faster R-CNN (Region-based Convolutional Neural Networks),使用区域建议网络在第一阶段和第二阶段生成和选择感兴趣区域,并将区域建议向下发送并使用卷积神经网络进行目标分类和边界框回归。两阶段检测器模型具有最高的准确率,但通常较慢,因为必须对每个选定区域进行预测。因此很难将其用作实时对象检测器。

单阶段目标检测器,本文的YOLO(You Only Look Once),通过创建输入图像的特征图、学习类别概率和整个图像的边界框坐标,将目标识别视为一个简单的回归问题。算法只运行一次。这样的模型虽然准确率稍微有所下降,但比两阶段目标检测器快得多,通常用于实时目标检测任务。

YOLO Version 1; 统一的实时目标检测框架

YOLO 是一个简单的且不复杂的对象检测模型,它对图片进行分析只需要“看一眼”,就可以预测目标对象及其在输入图片上的位置。该算法将目标检测定义为单个回归问题。将每个给定的图像划分为一个 S * S 网格系统,该网格系统是图像的子集或一部分,每个网格通过预测网格内对象的边界框数量来识别对象。

YOLO 执行一个神经卷积网络来识别网格中的对象,预测对象周围的边界框以及它们属于哪个类别的概率。概率被用作置信水平。卷积网络的初始层从图像中提取特征,全连接层预测概率。YOLO 工作流程如下图所示:

ee0ceb5c-4286-11ed-96c9-dac502259ad0.png

为了识别图像中的不同对象及其位置,使用多尺度滑动窗口扫描整个图像,因为对象可以在图像的每个部分以不同的大小显示。提取滑动窗口的最佳大小和数量是很重要的,而且这是计算密集型的因为不同数量的候选或不相关的候选会影响结果。通过这种方式YOLO可以与传统算法相媲美,并且速度更快。这些步骤的示例如下图所示。

ee35c540-4286-11ed-96c9-dac502259ad0.png

YOLO V1的优势:可以高速实时检测物,能够理解广义对象表示,模型也不太复杂。

YOLO V1 的局限性:如果小对象以集群或组的形式出现,则模型效果,例如下图所示

ee93062e-4286-11ed-96c9-dac502259ad0.png

YOLO V1 训练是基于损失函数来展示检测性能的,而损失函数没有考虑窗口的大小,大框中的小错误是显而易见的,但其实小框中的错误其实应该更加被关注,因为他对交并比的影响更大,交并比是一种评估指标,用于衡量数据集上对象检测器模型的准确性 [6]。

YOLO Version 2;YOLO9000:更快,更好,更强

对象检测模型应该快速、准确,并且可以识别各种对象类别。基于这个想法YOLO V2 出现了,与 YOLO V1 相比,在速度、准确性和检测大量物体的能力方面有各种改进。这个新版本训练了 9000 个新类别,所以被称作 YOLO9000。它将不同的数据集 ImageNet 和 COCO 结合起来,以提供更大量的分类数据,扩大检测模型的范围,并提高召回率 。COCO 用于目标检测,包含 80 个类别的 100,000 张图像。

YOLO V2 结构中使用Softmax 为每个边界框提供客观性分数。Softmax为每一类多类分类任务分配一个在0到1之间的十进制概率,在YOLO V2中,它也为图像中的对象提供了多类分类的可能性。召回率则衡量正确检测到真值对象的概率。YOLO V2 在分类和检测数据集上联合训练。该方法对图像进行标记以进行检测,识别边界框和对常见对象进行分类。还是用仅具有类标签的图像用于扩展算法可以检测的类别。YOLO V2 中一个有趣的点,除了试图提供更好和准确的结果外,还提供了一个比 YOLO V1 更简单的模型。

eece8820-4286-11ed-96c9-dac502259ad0.png

上表中看到,V2中增加了BN的操作。通过BN层对来自前一层的输入执行标准化和规范化,将输入值缩放转换。在Yolo V2中,Yolo V1的所有卷积层上添加BN,从而在Yolo V2中获得2%以上的精度提升。BN还有助于稳定训练,加速收敛,并在不过度拟合的情况下从模型中去除dropout。另一种提高准确率的技术是使用更高分辨率的输入,将输入尺寸从224*224更改为448*448,这将提高4%的MAP(平均平均精度)。

YOLO Version 3;小改进,大提升

eef53cae-4286-11ed-96c9-dac502259ad0.png

在YOLO V3[9]中,只对YOLO的设计添加了一些更改,从而实现了更准确、更好和更快的设计。在预测边界的新结构中,继续使用V2的结构,但是增加了逻辑回归用于预测每个边界框的得分。当一个边界框在与真实对象重叠之预测结果比任何其他边界框都多时,预测结果就为 1。当边界框不是最佳但与真实对象重叠超过阈值时,预测则被忽略,并且还引入了Faster R -CNN的方法,在 YOLO V3 中将优先只考虑一个边界框。

下图显示了YOLO V3 上的性能对比

ef3b0f22-4286-11ed-96c9-dac502259ad0.png

下图则对 YOLO v2 与 V3 的比较。很在 YOLO V3 中可以检测到一些较小的对象,而 V2 无法检测到。

ef58fe24-4286-11ed-96c9-dac502259ad0.png

除了准确性和比较之外,Redmon 和 Farhadi 在他们的论文中提到的重要一点是道德和计算机视觉的使用。由于军事研究小组非常关注这一领域,他们希望人们使用他们的新技术不是为了杀人,而是为了让别人快乐,让他们的生活更美好。这是论文中的原话:

we have a responsibility to at least consider the harm our work might be doing and think of ways to mitigate it. We owe the world that much.

这也是 Joseph Redmon 退出目标检测领域研究的原因,有兴趣的可以去搜下他TED的演讲。

YOLO Version 4;最佳速度和准确性

目标检测研究的重点是改进在该领域执行的模型的速度。随着时间的推移,YOLO 的应用在全球范围内不断增长,研究领域也增加了许多新的变化,在卷积神经网络 (CNN) 中,一些想法可以提高模型的准确性。YOLO V4 的主要目标是开发一种速度更快的目标检测器,并且具有易于训练和使用的并行计算能力。通过添加和组合一些新功能,例如加权残差连接 (WRC)、跨阶段部分连接 (CSP)、跨小批量标准化 (CmBN)、自我对抗训练 (SAT)、Mish激活函数、Mosaic 数据增强、DropBlock 正则化和 CIoU 损失等等,在 YOLO V4中实现了更好更快的模型。YOLO V4 讨论的一个重要主题是一个实时传统神经网络模型,该模型只需要传统 GPU 进行训练,从而为使用一般 GPU 的任何人提供训练、测试、实现实时、高质量的可能性,以及令人信服的目标检测模型。

下面是 YOLO V4 。这个新版本速度更快,并且表现出可比的性能。

在 YOLO V4 中,Alexey Bochkovskiy 等人总结了他们的主要贡献:

开发了一个高效而强大的目标检测模型,这使得每个使用 1080 Ti 或 2080 Ti GPU 的人都可以训练和测试一个超快速、实时、准确的目标检测模型。

他们在训练期间验证了最先进的 Bag-of-Freebies 和 Bag-of-Specials 检测方法的影响。

修改了state-of-the-art的方法,包括(Cross-iteration batch normalization)、PAN(Path aggregation network)等,使它们更高效,更适合单GPU训练。

总结

如果你查看 YOLO 的结构、源代码和包,就会发现它们结构良好、文档齐全且免费使用。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7418

    浏览量

    87712
  • 人工智能
    +关注

    关注

    1791

    文章

    46845

    浏览量

    237537

原文标题:目标检测YOLO系列算法的进化史

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    YOLOv10自定义目标检测之理论+实践

    保持先进性能的同时,降低了计算需求。大量实验表明,YOLOv10 在各种模型规模上提供了更优的准确率-延迟权衡。 正如读过我之前文章的朋友所知道的,我分享了使用 YOLO 模型的各种项目,因为在预训练模型中,YOLO 模型在性能和效率方面明显优于其他模型。然而,实时
    的头像 发表于 11-16 10:23 207次阅读
    YOLOv10自定义<b class='flag-5'>目标</b><b class='flag-5'>检测</b>之理论+实践

    《DNK210使用指南 -CanMV版 V1.0》第四十一章 YOLO2物体检测实验

    第四十一章 YOLO2物体检测实验 在上一章节中,介绍了利用maix.KPU模块实现YOLO2的人手检测,本章将继续介绍利用maix.KPU模块实现
    发表于 11-14 09:22

    《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验

    第四十章 YOLO2人手检测实验 在上一章节中,介绍了利用maix.KPU模块实现YOLO2的人脸检测,本章将继续介绍利用maix.KPU模块实现Y
    发表于 11-14 09:20

    《DNK210使用指南 -CanMV版 V1.0》第三十九章 YOLO2人脸检测实验

    第三十九章 YOLO2人脸检测实验 从本章开始,将通过几个实例介绍Kendryte K210上的KPU,以及CanMV下KPU的使用方法,本章将先介绍YOLO2网络的人脸检测应用在Ca
    发表于 11-13 09:37

    使用OpenVINO C# API部署YOLO-World实现实时开放词汇对象检测

    YOLO-World是一个融合了实时目标检测与增强现实(AR)技术的创新平台,旨在将现实世界与数字世界无缝对接。该平台以YOLO(You Only Look Once)
    的头像 发表于 08-30 16:27 548次阅读
    使用OpenVINO C# API部署<b class='flag-5'>YOLO</b>-World实现实时开放词汇对象<b class='flag-5'>检测</b>

    慧视小目标识别算法 解决目标检测中的老大难问题

    随着深度学习和人工智能技术的兴起与技术成熟,一大批如FasterR-CNN、RetinaNet、YOLO等可以在工业界使用的目标检测算法已逐步成熟并进入实际应用,大多数场景下的目标
    的头像 发表于 07-17 08:29 398次阅读
    慧视小<b class='flag-5'>目标</b>识别<b class='flag-5'>算法</b>   解决<b class='flag-5'>目标</b><b class='flag-5'>检测</b>中的老大难问题

    基于深度学习的小目标检测

    在计算机视觉领域,目标检测一直是研究的热点和难点之一。特别是在小目标检测方面,由于小目标在图像中所占比例小、特征不明显,使得
    的头像 发表于 07-04 17:25 746次阅读

    安全帽佩戴检测算法

    安全帽佩戴监控是铁路工程施工人员安全管理中的重点和难点,它对检测算法的准确 率与检测速度都有较高的要求。本文提出一种基于神经网络架构搜索的安全帽佩戴检测算法 NAS-YOLO。该神经网
    的头像 发表于 06-26 22:22 360次阅读
    安全帽佩戴<b class='flag-5'>检测算法</b>

    OpenVINO™ C# API部署YOLOv9目标检测和实例分割模型

    YOLOv9模型是YOLO系列实时目标检测算法中的最新版本,代表着该系列在准确性、速度和效率方面的又一次重大飞跃。
    的头像 发表于 04-03 17:35 722次阅读
    OpenVINO™ C# API部署YOLOv9<b class='flag-5'>目标</b><b class='flag-5'>检测</b>和实例分割模型

    纵观全局:YOLO助力实时物体检测原理及代码

    YOLO 流程的最后一步是将边界框预测与类别概率相结合,以提供完整的检测输出。每个边界框的置信度分数由类别概率调整,确保检测既反映边界框的准确性,又反映模型对对象类别的置信度。
    的头像 发表于 03-30 14:43 2251次阅读

    【EASY EAI Nano】RV1126实时读取摄像头并进行yolo检测显示

    实现了三个并行模块,分别是 摄像头读取,使用opencv转换到适合大小 yolo检测 托管到Qt进行现实 检测的DEMO从每帧10次改到每帧2次,可以看到还是具备一定实时性。 代码:仓库
    发表于 01-14 18:53

    深入浅出Yolov3和Yolov4

    Yolov3是目标检测Yolo系列非常非常经典的算法,不过很多同学拿到Yolov3或者Yolov4的cfg文件时,并不知道如何直观的可视化查
    的头像 发表于 01-11 10:42 743次阅读
    深入浅出Yolov3和Yolov4

    在英特尔AI开发板上用OpenVINO NNCF优化YOLOv7

    提高了性能和效率。YOLO算法作为one-stage目标检测算法最典型的代表,其基于深度神经网络进行对象的识别和定位,运行速度很快,可以用于实时系统。YOLOv7 是
    的头像 发表于 01-05 09:29 687次阅读
    在英特尔AI开发板上用OpenVINO NNCF优化YOLOv7

    基于YOLO技术的植物检测与计数

    利用Roboflow平台对数据进行有效的管理和标注。对于植物检测,使用实时目标检测能力强的YOLO方法。YOLO通过将输入图像划分为网格并预
    的头像 发表于 12-12 09:41 802次阅读
    基于<b class='flag-5'>YOLO</b>技术的植物<b class='flag-5'>检测</b>与计数

    怎样使用YOLOv8构建目标计数GUI呢?

    检测是在图片或视频中定位物体的过程。其中一个著名的目标检测框架是YOLO(You Only Look Once)。
    的头像 发表于 11-30 11:03 735次阅读
    怎样使用YOLOv8构建<b class='flag-5'>目标</b>计数GUI呢?