Yolo
定义
YOLO是一种目标检测模型。(you only look once)只需要浏览一次就可以识别出图中的物体的类别和位置
目标检测:计算机视觉中比较简单的一个任务;用来在一张图篇中找到某些特定的物体。 识别物体的种类、标出物体的位置.
背景
因为只需要看一次,YOLO被称为Region-free方法,相比于Region-based方法,YOLO不需要提前找到可能存在目标的Region。
典型的Region-base方法的流程是:
1 | 先通过计算机图形学(或者深度学习)的方法,对图片进行分析,找出若干个可能存在物体的区域。 |
也被称为单阶段(1-stage)模型 和 两阶段(2-stage)模型.
发展历史
YOLO之前的世界: R-CNN什么的.
- 最初的CNN:通过滑动窗口方式识别一个个物体。( 太慢了,步长越小,处理越慢,浪费时间 )
R-CNN:用滑窗法可能最后得到了几十万个窗口,如果提前扫描一下图片,得到2000个左右的Region,大大节省了时间.
管这个叫做Region Proposal,并且提出了一个叫做Selective Search的算法。但是R-CNN被YOLO打脸了,YOLO说,我更快。
YOLOv1(2016年5月):第一个YOLO版本、提出一种端到端的目标检测方法、将图像划分为网格、每个网格负责预测多个边界框和对应的类别。
「YOLOv1相对较简单,但在实时性能上表现出色」YOLOv2 / YOLO9000(2016年12月):改进,使用Anchor Boxes来优化边界框的预测、使用Darknet-19网络结构、YOLO9000扩展了模型的类别,使其能够检测超过9000个类别。
YOLOv3(2018年4月):重要版本,引入了关键的改进(使用多尺度检测、使用更深的Darknet-53网络结构、使用多层级特征融合)。准确性和速度之间取得了更好的平衡。
YOLOv4(2020年4月):CSPDarknet53网络结构、YOLOv3的PPM(Path Aggregation Network)、SAM(Spatial Attention Module)。「在目标检测任务中取得了更好的性能」
YOLOv5(2020年6月):采用轻量级网络结构、新的训练策略「可以在更快的速度下实现高精度目标检测」
特点
单次前向传递: YOLO采用单一的神经网络模型,通过一次前向传递即可同时预测图像中所有目标的边界框和类别。
网格划分:将图像划分成网格,并在每个网格上进行目标检测。每个网格负责预测包含在该网格中的目标。
边界框预测: 在每个网格中,通过卷积层预测多个边界框的坐标信息(边界框的左上角和右下角坐标)。
优缺点:优势在于其速度和简洁性;相对于一些两阶段的目标检测算法,可能在检测小目标和处理密集场景时表现稍逊。
目的
目标是实现高效而准确的目标检测,尤其在实时应用中取得了显著的成果。
模型架构
YOLOv1
由Joseph Redmon等人在2016年提出的目标检测算法。
(1)背景
在YOLOv1提出之前,目标检测的实现方法往往较为复杂,需要通过分类的方法来重写回归分支,以实现检测,并且需要复杂的后处理来得到最终的检测结果。这导致检测过程耗时长且复杂。
为了改进这一问题,Joseph Redmon等人提出了YOLOv1,将目标检测任务定义为单个回归问题,直接从输入图像上得到目标的位置和类别,大大简化了检测过程。
此外,Joseph Redmon等人还将YOLOv1设计为一个端到端的算法,使得整个检测过程更加高效和简洁。这种新的目标检测算法在提出后受到了广泛的关注和应用,为计算机视觉领域的发展做出了重要贡献。
Joseph Redmon因提出YOLO系列算法而被称为“YOLO之父”。
不过,由于后期美国军方曾将YOLO智能识别技术用于军事武器开发,Joseph Redmon不希望自己的成果被用在军事上,因此他后来停止了计算机视觉方面的研究和工作。尽管如此,他之前提出的YOLO系列算法仍然在计算机视觉领域发挥着重要作用。
1 | Joseph Redmon提出YOLOv1时的身份背景,他当时是在华盛顿大学读博士,并在Ali Farhadi教授的指导下进行研究. 因此,他是在学术环境中,具体来说是在华盛顿大学的研究团队中,提出并发表了YOLOv1算法。 |
(2)模型架构(论文思想)
见论文精读.
- 算法流程
- 网络结构
- 预训练分类网络
- 训练检测网络
- 损失函数(L2 Loss)
(3)YOLOv1的缺陷
资料
论文精读:《You Only Look Once: Unified, Real-Time Object Detection》