文章目录
YOLOv2(You Only Look Once version 2)是一种用于目标检测的深度学习模型,它在YOLOv1的基础上进行了多项改进,提高了检测速度和精度。
一、核心原理
YOLOv2将目标检测问题视为一个单个的回归问题,通过在图像上划分网格并在每个网格上预测边界框和类别概率来实现目标检测。具体来说,它将输入图像划分为S×S个网格,每个网格负责预测中心点落在该网格内的目标。对于每个网格,它预测B个边界框、每个边界框的置信度以及C个类别概率。
二、网络结构
YOLOv2采用了一个新的基础模型(特征提取器),称为Darknet。Darknet包括19个卷积层和5个最大池化层(其中1*1的卷积层主要是为了节省参数),主要用于提取图像特征。
三、关键改进
在YOLOv1的基础上一步一步通过实验改进最终得到YOLOv2,实验结果如下:
1.Batch Normalization
在最初的YOLOv1网络中,每一层卷积的结构都是线性卷积和激活函数,到了YOLOv2去除原有的dropout,在每个卷积层后面都添加了Batch Normalization层,以加快收敛速度,降低模型过拟合。它可以正则化模型,即使去除原有的dropout也不会造成过拟合。这一改进使得YOLOv2的mAP(mean Average Precision)提升了2.4%。
2.高分辨率分类器
YOLOv1是用224x224大小的输入训练分类网络,而用448x448大小的输入训练检测网络,这就导致分类网络和检测网络输入分辨率不匹配;YOLOv2的分类网络使用ImageNet预训练模型,并将输入图像的分辨率从224×224提高到448×448进行微调。让网络有时间调整它的参数,好让其能更好的运行在新分辨率上,最终给模型带来了4%mAP的提升。
3.Anchor机制
YOLOv2借鉴了Faster R-CNN中的Anchor机制,使用先验框来预测边界框的偏移。但与Faster R-CNN不同的是先验框并不是根据长宽固定比给定,这一改进提高了模型的召回率,由81%升至88%。
YOLOv2也使用k-means聚类方法在训练集上对先验框进行聚类,以产生更合适的先验框。
流程:在模型训练之前,提前把训练集的标签值提取出来,通过k-means聚类的方法,聚类出5个类别。结果当作是先验框。最后在进行模型训练。
4.直接坐标预测
Directed Location Prediction是一种方法,其目的是进行位置微调,预测偏移量。它用于限制偏移量,以防止在训练时出现发散。这种方法预测的是相对位置,即相对于网格的偏移量。
当YOLO使用anchor boxes进行训练时,在迭代初期会出现训练不稳定问题,大部分的不稳定性来自于对矩形框的(x,y)坐标位置预测。基于anchor boxes直接预测(x,y)坐标的公式如下:
如果tx的预测值为1,x的预测结果将是向右偏移该anchor box的宽度,相反,如果tx为-1,x的预测结果将向左偏移同样的量。会导致收敛问题,模型不稳定。所以在最开始训练时,v2选择相对gral cell的偏移量。如下图:
这里为大家例举一个示例,如上图预测值和上一个预选框的
p
w
p_w
pw与
p
h
p_h
ph都已经给定,通过计算公式我们可以得到在特征图上的位置与在原图的位置。
5.多尺度训练
YOLOv2支持多尺度训练,即在训练过程中随机调整输入图片的大小。这一机制迫使神经网络学会在各种输入维度上进行良好的预测,从而提高了模型的泛化能力。
多尺度训练的好处就在于可以改变数据集中各类物体的大小占比。
多尺度训练就是在训练网络时,每训练迭代10次,就从{320、…、608}选择一个新的图像尺寸用作后续10次训练的图像尺寸。注意,这些尺寸都是32的整数倍,因为网络的最大降采样倍数就是32。
四、总结
YOLOv2是一种高效、准确的目标检测模型。它通过改进网络结构、引入Anchor机制、使用高分辨率分类器和多尺度训练等策略提高了模型的检测速度和精度。同时它还具有较好的泛化能力和实时性能,已被广泛应用于多个领域。
标签:系列,YOLOv2,训练,卷积,模型,Yolo,网格,v2,预测 From: https://blog.csdn.net/2301_77698138/article/details/143179090