对象检测是一种图像分类,其中神经网络预测图像中的项目并在它们周围绘制边界框。 检测和定位图像中符合预设类别的事物称为对象检测。
对象检测(也称为对象识别)是计算机视觉的一个特别重要的子领域,因为检测、识别和定位等任务在现实世界中得到了广泛的应用。
YOLO 方法可以帮助您完成这些任务。 在这篇文章中,我们将仔细研究 YOLO,包括它是什么、它是如何工作的、不同的变体等等。
那么,YOLO 是什么?
YOLO 是一种实时识别和识别照片中物体的方法。 它是 You Only Look Once 的首字母缩写词。 雷德蒙德等人。 在最初于 2015 年在 IEEE/CVF 计算机视觉和模式识别会议 (CVPR) 上发表的论文中提出了该方法。
该论文获得了 OpenCV 人民选择奖。 与之前将分类器重新用于检测的对象识别方法不同,YOLO 建议使用端到端 神经网络 同时预测边界框和类别概率。
YOLO 通过采用全新的对象识别方法产生最先进的结果,轻松超越以前的实时对象检测方法。
YOLO 工作
YOLO 方法将图片分成 N 个网格,每个网格都有一个大小相等的 SxS 维度扇区。 这 N 个网格中的每一个都负责检测和定位它所包含的对象。
反过来,这些网格预测 B 边界框相对于单元格坐标的坐标,以及项目名称和对象出现在单元格中的可能性。 由于许多单元格使用不同的边界框预测来预测同一项目,因此该技术大大减少了计算量,因为检测和识别都是由图片中的单元格处理的。
但是,它会产生很多重复的预测。 为了解决这个问题,YOLO 采用了 Non-Maximal Suppression。 YOLO 在非最大抑制中抑制所有具有较低概率分数的边界框。
YOLO 通过检查与每个选项相关的概率得分并选择得分最高的选项来做到这一点。 然后抑制与当前高概率边界框相交的最大边界框。
这个过程一直持续到边界框完成为止。
YOLO的不同变体
我们将看看一些最常见的 YOLO 版本。 让我们开始吧。
1.YOLOv1
最初的 YOLO 版本于 2015 年在出版物“你只看一次:统一的实时对象检测”约瑟夫·雷德蒙、桑托什·迪瓦拉、罗斯·吉尔希克和阿里·法哈迪。
由于其速度、准确性和学习能力,YOLO 迅速主导了物体识别领域,成为应用最广泛的算法。 作者没有将对象检测作为一个分类问题来解决,而是将其作为一个回归问题来处理,具有地理上分离的边界框和相关的类概率,他们使用单个 神经网络.
YOLOv1 以每秒 45 帧的速度实时处理照片,而较小的变体 Fast YOLO 以每秒 155 帧的速度处理照片,仍然获得了其他实时检测器两倍的 mAP。
2.YOLOv2
一年后的 2016 年,约瑟夫·雷德蒙 (Joseph Redmon) 和阿里·法哈迪 (Ali Farhadi) 在论文《YOLO9000:更好、更快、更强设立的区域办事处外,我们在美国也开设了办事处,以便我们为当地客户提供更多的支持。“
该模型在实时运行的同时预测甚至 9000 个不同的项目类别的能力为其赢得了 9000 的称号。新模型版本不仅同时在对象检测和分类数据集上进行训练,而且还将 Darknet-19 作为新基线模型。
由于 YOLOv2 也取得了巨大的成功,并迅速成为下一个最先进的对象识别模型,其他工程师开始试验该算法并生产自己独特的 YOLO 版本。 其中一些将在本文的不同点进行讨论。
3.YOLOv3
在论文中“YOLOv3:增量改进,” Joseph Redmon 和 Ali Farhadi 于 2018 年发布了该算法的新版本。它建立在 Darknet-53 架构之上。 独立的逻辑分类器取代了 YOLOv3 中的 softmax 激活机制。
在训练过程中使用了二元交叉熵损失。 Darknet-19 得到增强并重命名为 Darknet-53,现在有 53 个卷积层。 除此之外,预测是在三个不同的尺度上完成的,这有助于 YOLOv3 提高其预测微小事物的准确性。
YOLOv3 是 Joseph Redmon 的最终 YOLO 版本,因为他选择不再对 YOLO 进行任何进一步的改进(甚至在计算机视觉领域),以避免他的工作对世界产生不利影响。 它现在主要用作构建独特对象检测架构的起点。
4.约洛夫4
Alexey Bochkovskiy、Chien-Yao Wang 和 Hong-Yuan Mark Liao 发表了“YOLOv4:目标检测的最佳速度和准确性” 2020 年 XNUMX 月,也就是 YOLO 算法的第四次迭代。
加权残差连接、跨阶段-部分连接、跨小批量标准化、自我对抗训练、mish 激活、丢弃块和 CIoU 损失都作为 SPDarknet53 架构的一部分引入。
YOLOv4 是 YOLO 家族的后代,但它是由不同的科学家(不是 Joseph Redmon 和 Ali Farhadi)开发的。 SPDarknet53 骨干网、空间金字塔池化、PANet 路径聚合作为颈部和 YOLOv3 头部构成了它的架构。
因此,与父代 YOLOv3 相比,YOLOv4 的平均精度提高了 10%,每秒帧数指标提高了 12%。
5.YOLOv5
YOLOv5 是一个开源项目,包括一系列基于 YOLO 模型的对象识别模型和算法,这些模型已经在 COCO 数据集上进行了预训练。
YOLOv5 是复合尺度对象识别模型的集合 在 COCO 数据集上训练,具有 TTA、模型组装、超参数开发以及导出到 ONNX、CoreML 和 TFLite 的简单功能。 由于 YOLOv5 没有实现或开发任何独特的方法,因此无法发布正式论文。 它只是 YOLOv3 的 PyTorch 扩展。
Ultranytics利用这个场景来宣传其赞助的“新YOLO”版本。 因为还有五个预训练模型可供访问,所以 YOLOv5 主页非常简单明了,结构和编写都很专业,提供了许多关于训练和使用 YOLOv5 模型的课程和建议。
YOLO 限制
尽管 YOLO 似乎是解决问题的最好技术 目标检测 问题,它有很多缺点。 由于每个网格只能识别一个项目,YOLO 很难检测和分离图片中成组出现的微小事物。 成群的小东西,比如一群蚂蚁,YOLO 很难识别和定位。
与 Fast RCNN 等显着较慢的目标识别方法相比,YOLO 的特征同样是精度较低。
开始使用 YOLOv5
如果您有兴趣了解 YOLOv5 的运行情况,请查看 官方 GitHub 和 PyTorch 中的 YOLOv5.
结论
YOLOv5 的初始版本非常快速、高性能且易于使用。 虽然 YOLOv5 没有向 YOLO 系列添加任何新的模型架构,但它确实提供了一个新的 PyTorch 训练和部署框架,提高了对象检测器的最新技术水平。
此外,YOLOv5 非常用户友好,“开箱即用”,可以在定制对象上使用。
发表评论