从2阶段卷积神经网络到1阶段YOLO模型

B站影视 2025-02-05 01:02 3

摘要:也就是说,一个典型的Region-base方法的流程是这样的:先通过计算机图形学(或者深度学习)的方法,对图片进行分析,找出若干个可能存在物体的区域,将这些区域裁剪下来,放入一个图片分类器中,由分类器分类。

这是《机器学习与目标检测入门教程》的一章,完整教程参见专栏:

机器学习与目标检测入门教程

目标检测是计算机视觉中比较简单的任务,用来在一张图篇中找到某些特定的物体,目标检测不仅要求我们识别这些物体的种类,同时要求我们标出这些物体的位置。

显然,类别是离散数据,位置是连续数据。

上面的图片中,分别是计算机视觉的三类任务:分类,目标检测,实例分割。

很显然,整体上这三类任务从易到难,我们要讨论的目标检测位于中间。前面的分类任务是我们做目标检测的基础,至于像素级别的实例分割,太难了别想了。

YOLO在2016年被提出,发表在计算机视觉顶会CVPR(Computer Vision and Pattern Recognition)上

YOLO的全称是you only look once,指只需要浏览一次就可以识别出图中的物体的类别和位置。

因为只需要看一次,YOLO被称为Region-free方法,相比于Region-based方法,YOLO不需要提前找到可能存在目标的Region。

也就是说,一个典型的Region-base方法的流程是这样的:先通过计算机图形学(或者深度学习)的方法,对图片进行分析,找出若干个可能存在物体的区域,将这些区域裁剪下来,放入一个图片分类器中,由分类器分类。

因为YOLO这样的Region-free方法只需要一次扫描,也被称为单阶段(1-stage)模型。Region-based方法方法也被称为两阶段(2-stage)方法。

整体来看,Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,整个系统如下图所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。

2阶段算法的速度问题

RCNN开创性的提出了候选区(Region Proposals)的方法,先从图片中搜索出一些可能存在对象的候选区(Selective Search),大概2000个左右,然后对每个候选区进行对象识别。大幅提升了对象识别和定位的效率。

不过RCNN的速度依然很慢,其处理一张图片大概需要49秒。因此又有了后续的Fast RCNN 和 Faster RCNN,针对 RCNN的神经网络结构和候选区的算法不断改进,Faster RCNN已经可以达到一张图片约0.2秒的处理速度。

YOLO意思是You Only Look Once,创造性的将候选区和对象识别这两个阶段合二为一,看一眼图片(不用看两眼哦)就能知道有哪些对象以及它们的位置。

实际上,YOLO并没有真正去掉候选区,而是采用了预定义的候选区(准确点说应该是预测区,因为并不是Faster RCNN所采用的Anchor)。也就是将图片划分为 7*7=49 个网格(grid),每个网格允许预测出2个边框(bounding box,包含某个对象的矩形框),总共 49*2=98 个bounding box。可以理解为98个候选区,它们很粗略的覆盖了图片的整个区域。

RCNN:我们先来研究一下图片,嗯,这些位置很可能存在一些对象,你们对这些位置再检测一下看到底是哪些对象在里面。

YOLO:我们把图片大致分成98个区域,每个区域看下有没有对象存在,以及具体位置在哪里。

RCNN:你这么简单粗暴真的没问题吗?

YOLO:当然没有......咳,其实是有一点点问题的,准确率要低一点,但是我非常快!快!快!

RCNN:为什么你用那么粗略的候选区,最后也能得到还不错的bounding box呢?

YOLO:你不是用过边框回归吗?我拿来用用怎么不行了。

RCNN虽然会找到一些候选区,但毕竟只是候选,等真正识别出其中的对象以后,还要对候选区进行微调,使之更接近真实的bounding box。这个过程就是边框回归:将候选区bounding box调整到更接近真实的bounding box。

既然反正最后都是要调整的,干嘛还要先费劲去寻找候选区呢,大致有个区域范围就行了,所以YOLO就这么干了。

不过话说回来,边框回归为啥能起作用,我觉得本质上是因为分类信息中已经包含了 位置信息。就像你看到狗子的脸和身体,就能推测出耳朵和屁股的位置。

R-CNN系列算法与Yolo系列算法简单列出发表时间线

从2016年YOLO V1版本发布,到2024年Yolo 11版本发布,彻底改变了实时目标检测领域,从其诞生以来,几乎推出了十几个变体。尽管YOLO有十多个版本,但YOLOv5,YOLOv8和YOLOv10在边缘部署场景中尤其突出。这三种变体因其速度、准确性和效率的最佳平衡而受到关注,特别适合资源受限的环境。

由Ultralytics于2020年推出的YOLOv5在性能和易用性方面取得了重大飞跃,成为许多边缘计算应用的首选解决方案。其人气的持续上升得益于其模块化设计,便于定制,并且能够将训练后的模型导出为ONNX、CoreML和TFLite等多种格式,便于在不同平台部署。

YOLOv8在2023年发布,基于YOLOv5的成功,提供了更高的准确性和用于各种计算机视觉任务的统一框架。它引入了 Anchor-Free 点检测,简化了模型架构,并提高了对小物体的性能,这在许多边缘部署场景中是一个关键因素。

最新的迭代YOLOv10进一步推动了边界,采用了减少计算开销的创新方法,同时保持了高准确性。它融合了如无需NMS训练和整体模型设计等先进技术,特别适合计算资源有限的边缘设备。

这三个YOLO变体在受限制的边缘部署中变得普遍存在,主要原因有:

性能优化:它们在推理速度和检测准确性之间提供了卓越的平衡,这对于边缘设备上的实时应用至关重要。例如,YOLOv5s在V100 GPU上的推理时间为6.4ms,在COCO数据集上达到37.4 mAP。可伸缩性:每个变体都提供了针对架构深度的多个子变体,使开发行人能够为特定的硬件限制和性能需求选择最佳匹配。这从针对极端资源受限设备的nano模型到针对准确性敏感应用的超大型模型不等。易于部署:这些模型配备了强大的工具和文档,便于集成到各种边缘计算平台中。YOLOv5的多格式导出能力和YOLOv8的统一API显著简化了部署过程。持续改进:每个新版本都解决了前一代的局限性,融入了深度学习和计算机视觉的前沿技术。例如,YOLOv10的无NMS训练方法显著减少了推理时间,这是边缘部署中的一个关键因素。社区支持:强大的社区支持和定期更新确保这些模型保持在目标检测技术的最前沿。这个广泛的社区还提供了丰富的资源、预训练模型和应用实例,进一步促进了它们在边缘场景中的采用。

来源:坎坎

相关推荐