YOLO系列笔记(二)—— YOLO v1介绍
YOLO-V1
概述
YOLOv1(You Only Look Once版本1)作为经典的单阶段目标检测算法,其设计理念是将目标检测问题通过卷积神经网络(CNN)转化为回归问题,实现了对视频流的实时检测,并因其应用范围广泛而备受关注。与早期的深度学习网络相比,YOLOv1在模型推理速度上有显著的优势,尽管其平均精度(mAP)不如后来的两阶段(two-stage)网络高,但在速度上仍保持领先地位。

核心思路
YOLOv1的核心思想在于将输入的图像划分成多个格子(cells / grids),每个格子负责预测落在其中心点的物体。通过对图像中的物体预设若干框,并不断调整这些框的位置(x, y)和大小(w, h),以及计算框与真实物体之间的交并比(IOU)和置信度(confidence),YOLOv1旨在寻找最适合每个物体的框。具体到YOLOv1中,每个格子会初始化两个预测框,通过计算IOU和置信度来筛选非目标格子,这种方式简化了检测流程,提高了处理速度。

网络结构
YOLOv1的网络结构设计较为简约,输入层固定接收448x448x3的图像尺寸,这一设计受到网络后期全连接层限制的影响。通过一系列的卷积层提取特征图(feature maps),并经过全连接层处理,YOLOv1最终输出一个7x7x30的结果。这一输出代表将图像分为7x7的格子,每个格子对应30个输出值,包括两个预测框的位置、大小、置信度以及20个可能类别的概率。

数据结构解释
针对每个格子的30个值,其中10个值(每个预测框5个,共2个框)包含预测框的位置(x, y)、大小(w, h)以及框中物体存在的置信度(c)。剩余的20个值代表了该格子中物体属于20个类别中的哪一个的概率。这种数据结构允许YOLOv1同时对物体的位置和类别进行预测。

损失函数

YOLOv1的损失函数是其设计中的一个核心要素,因为它直接影响到网络学习的效果,包括如何准确地定位物体和预测其类别。这个损失函数由几个不同的部分组成,用以评估不同类型的预测误差,并通过它们的和来指导模型的训练。以下是损失函数的详细分解和解释:
1. 位置误差(Bounding Box Prediction)
位置误差反映了预测的边界框(bounding boxes)与真实边界框之间的差异。YOLOv1对每个边界框的中心坐标(x, y)和尺寸(w, h)进行预测。误差计算使用的是预测值与真实值之间的平方差。为了平衡不同尺寸物体的影响,对宽度w和高度h的预测使用了平方根,因为较大物体的尺寸误差对损失的贡献应小于较小物体的尺寸误差。这样整个损失函数不会被大物体所操纵。若不采用根号计算,那么大物体的损失要比小物体损失大很多,那么这个损失函数会对大物体比较准确而忽略了小物体。这部分的损失函数可以表达为:
λ coord ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 + ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ \left( x_i - \hat{x}_i \right)^2 + \left( y_i - \hat{y}_i \right)^2 + \left( \sqrt{w_i} - \sqrt{\hat{w}_i} \right)^2 + \left( \sqrt{h_i} - \sqrt{\hat{h}_i} \right)^2 \right] λcoordi=0∑S2j=0∑B1ijobj[(xi−x^i

最低0.47元/天 解锁文章
421

被折叠的 条评论
为什么被折叠?



