YOLO理解
- 目标检测任务转化为一个单一的回归问题,从输入图像直接预测目标的类别和边界框
- 将图像分成S×S的网格,每个网格负责预测一定数量的边界框以及这些框内物体的置信度和类别,通过一次性完成检测和分类
- ? 只有一部分,不就识别不出来了
每一个版本有一些新特性
YOLOv1:YOLO的初代版本,提出了将目标检测简化为回归问题的创新思路。YOLOv1通过一次前向传播即可完成目标检测,但在处理小目标时表现不佳,且检测的精度在复杂场景中有所欠缺。
YOLOv2(YOLO9000):在YOLOv1的基础上,YOLOv2引入了批归一化(Batch Normalization)、Anchor Boxes等技术,极大地提高了模型的稳定性和检测精度。YOLOv2还能够同时在ImageNet和COCO数据集上进行训练,实现了对多种目标类别的检测。
YOLOv3:YOLOv3引入了一个新的特征提取网络Darknet-53,并采用了多尺度检测方法,使得模型在不同大小的目标检测上表现更为出色。此外,YOLOv3在检测速度和精度之间达到了良好的平衡,成为了当时的主流检测算法。
YOLOv4:YOLOv4结合了诸如CSPNet、Mish激活函数等最新的网络结构与优化方法,在保证检测速度的同时进一步提高了精度。YOLOv4在速度和精度上取得了显著的进步,并且兼顾了硬件资源的有效利用。
YOLOv5:虽然YOLOv5并非由YOLO的原作者发布,但由于其在易用性和性能上的出色表现,迅速成为了开发者们的首选。YOLOv5采用了PyTorch框架实现,并在推理速度和精度上取得了很好的平衡,是实际应用中广泛使用的版本。
YOLOv9:作为YOLO的最新版本,YOLOv9专注于模型的效率优化,推出了GELAN(General Efficient Layer Aggregation Network)和PGI(Programmable Gradient Information)等创新技术。这些改进使得YOLOv9能够在保持高精度的同时进一步降低计算量和模型大小,适应更多的实际应用场景。
原理
-
输入与输出:YOLO的输入通常是一个固定尺寸的图像(例如416×416像素),而输出则是一个包含边界框坐标、类别标签和置信度的张量。每个网格单元预测多个边界框,并为每个边界框生成一个置信度分数和类别预测。
-
网络架构:YOLO的核心架构是一个卷积神经网络(CNN),通常包括多层卷积、池化和全连接层。YOLOv1使用了一个简单的卷积网络,而后续版本(如YOLOv3、YOLOv4)则引入了更复杂的特征提取器(如Darknet-53、CSPNet)以提高检测精度
-
Anchor Boxes:Anchor boxes是一种预定义的边界框集合,用于处理不同大小和形状的目标,YOLO模型在每个网格单元上预设多个anchor boxes,并为每个box预测其偏移量和类别,这种设计允许YOLO在处理多尺度目标时更加灵活。
-
损失函数与优化:YOLO的损失函数包括位置误差、置信度误差和类别误差的组合,通过优化这些误差,YOLO模型能够在训练过程中不断提高预测精度。具体而言,YOLO的损失函数会在模型训练时对预测的边界框位置、类别置信度和分类结果进行综合评估,从而指导模型参数的更新。
-
Non-Maximum Suppression (NMS):NMS是一种后处理技术,用于消除多个重叠的边界框,保留置信度最高的那个,这一过程能够有效减少检测结果中的冗余和重复,提高检测结果的准确性。
-
逐渐复杂的模型结构
-
卷积层与池化层:YOLO的卷积层用于提取输入图像的特征,通过不同深度的卷积核捕捉图像中的不同模式。池化层则用于缩减特征图的尺寸,减少计算量的同时保留重要特征信息。这些层级构建了YOLO的基本骨架,使得模型能够从图像中提取多尺度特征。
特征提取器的演变:YOLOv1使用了相对基础的卷积神经网络(CNN)结构,但从YOLOv2开始,模型引入了更加复杂的特征提取器。例如,YOLOv3使用了Darknet-53,这是一个包含53层卷积的深度网络,能够在不同尺度上提取丰富的特征。YOLOv4则进一步引入了CSPNet(Cross Stage Partial Network)结构,通过跨阶段部分连接,提高了模型的特征复用效率,减少了冗余计算。YOLOv9中的GELAN(General Efficient Layer Aggregation Network)更是进一步优化了网络的效率,使其在保持高精度的同时降低了计算复杂度
参考: -
https://blog.csdn.net/iShare_Carlos/article/details/141195547
-
https://zhuanlan.zhihu.com/p/708973281