文章目录
前言
YOLOv1-YOLOv8的对比图先给大家呈上,本文介绍了从YOLOv1一直到YOLOv8的网络结构,以及各个版本之间的迭代,非常适合研究生们汇报PPT的制作和cv面试。
一、YOLO算法的核心思想
YOLO系列的核心思想就是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。
1. YOLO系列算法的步骤
- 划分图像:YOLO将输入图像划分为一个固定大小的网格。
- 预测边界框和类别:对于每个网格,YOLO预测出固定数量(通常为5或3个)的边界框。每个边界框由5个主要属性描述:边界框的位置(中心坐标和宽高)和边界框包含的目标的置信度(confidence)。此外,每个边界框还预测目标的类别。
- 单次前向传递:YOLO通过一个卷积神经网络(CNN)进行单次前向传递,同时预测所有边界框的位置和类别。相比于其他目标检测算法,如基于滑动窗口或区域提议的方法,YOLO具有更快的速度,因为它只需要一次前向传递即可完成预测。
- 损失函数:YOLO使用多任务损失函数来训练网络。该损失函数包括位置损失、置信度损失和类别损失。位置损失衡量预测边界框和真实边界框之间的位置差异。置信度损失衡量边界框是否正确地预测了目标,并惩罚背景框的置信度。类别损失衡量目标类别的预测准确性。
- 非最大抑制(Non-Maximum Suppression):在预测的边界框中,可能存在多个相互重叠的框,代表同一个目标。为了消除冗余的边界框,YOLO使用非最大抑制算法,根据置信度和重叠程度筛选出最佳的边界框。
二、YOLO系列算法
1.YOLOv1
1.1 YOLOv1核心思想
如图,YOLOv1算法将输入图片进行7×7的划分,划分之后就有很多小格子。我们再看图片中待检测物体的中心是落在哪个格子里面,落在哪个格子哪个格子就负责预测这个物体。每个格子形成 2 个预测框,同时预测 20 个类别(class)概率,每个预测框包含 5 个特征的预测结果(x,y,w,h,c),其中(x,y)为预测框相对于格子的位置,(w,h)为预测框相对于图片的宽和高比例,c 为置信度,表示预测框内存在被检物体的概率及预测框的位置准确度。将预测到的类别概率与预测框的置信度相乘,即可获得每个预测框中各类别的概率,以概率最高的结果作为预测结果输出,通过非极大值抑制(Non-MaximumSuppression,NMS)得到预测结果。
1. 边界框的中心坐标(x, y):
- 中心坐标(x, y)表示边界框在图像中的位置。
- 这些坐标是相对于所在网格单元的位置而言的。
- 中心坐标的值通常被限制在0和1之间,表示相对于网格单元的比例。
2. 边界框的宽度和高度(w, h):
边界框的宽度和高度表示目标在图像中的尺寸大小。
这些值也是相对于所在网格单元的尺寸而言的。
宽度和高度的值通常被限制在0和1之间,表示相对于网格单元的比例。
3. 置信度(confidence):
- 置信度表示边界框内是否存在目标以及预测的准确性。
- 置信度是一个0到1之间的值,其中1表示高置信度,0表示低置信度。
- 置信度可以用于筛选边界框,以便在后处理中选择具有高置信度的边界框。
1.2 网络结构(backbone)
YOLOv1 主干网络类似于 GoogleNet,采用卷积层提取特征 ,最大池化层进行空间降采样 ,并由全连接层输出预测值,除最后一层使用线性激活函数外,其余层使用Leaky ReLu 激活函数,采用Dropout防止过拟合。
从图中可以看到,yolo网络的输出的网格是7x7大小的,另外,输出的channel数目为30。一个格子内,前20个元素是类别概率值,然后2个元素是边界框confidence,最后8个元素是边界框的 (x, y,w,h) 。
1.3 优势与不足
YOLOv1在速度和简洁性方面具有显著优势,但也存在一些限制,如对小尺寸目标的检测能力较弱以及定位精度相对较低。这些限制在后续版本的YOLO中得到了改进和优化。
2.YOLOv2
2.1 YOLOv2网络结构(backbone)
YOLOv2在 YOLOv1 基础上,结合视觉几何组