YOLOv1与YOLOv2:目标检测的快速进化之路
YOLO(You Only Look Once)是一种经典的单阶段(one-stage)目标检测方法,其核心思想是将检测问题转化为回归问题,仅通过一个卷积神经网络(CNN)即可完成目标定位与分类。YOLO系列因其速度快、结构简单、适用于实时检测而广受欢迎。本文将重点介绍YOLOv1和YOLOv2的核心思想、网络结构、改进点及其技术细节。
一、YOLOv1:开山之作
核心思想
YOLOv1将输入图像划分为 S×SS×S 的网格,每个网格负责预测 BB 个边界框(bounding box)及其置信度(confidence),同时预测 CC 个类别的概率。其输出张量维度为:
S×S×(B×5+C)S×S×(B×5+C)
其中每个边界框包含5个值:(x,y,w,h,confidence)(x,y,w,h,confidence),分别表示中心坐标、宽度、高度和置信度。
网络架构
YOLOv1使用一个统一的CNN结构,包含24个卷积层和2个全连接层,最终输出为 7×7×307×7×30 的张量(以PASCAL VOC数据集为例,C=20,B=2C=20,B=2)。
损失函数
YOLOv1的损失函数综合了坐标误差、置信度误差和分类误差,使用加权求和的方式进行优化。
NMS(非极大值抑制)
为去除重叠的检测框,YOLOv1使用NMS算法,保留置信度最高的框,抑制其他重叠度高的框。
优点与缺点
优点:速度快,可实现实时检测;结构简单,端到端训练。
缺点:
每个网格只能预测一个类别,难以处理重叠目标;
对小目标检测效果较差;
边界框的长宽比选择较为单一。
二、YOLOv2:更快、更强
YOLOv2在YOLOv1的基础上进行了多项改进,显著提升了检测精度和速度。
1. Batch Normalization
在所有卷积层后加入Batch Normalization,取代Dropout;
使得网络更容易收敛,mAP提升约2%。
2. 高分辨率分类器
YOLOv1使用224×224训练,448×448测试,存在分辨率不一致问题;
YOLOv2在训练后期使用448×448进行微调,mAP提升约4%。
3. 网络结构:DarkNet-19
使用DarkNet-19作为主干网络,输入为416×416;
无全连接层,进行5次下采样,最终特征图大小为13×13;
引入1×1卷积减少参数量。
4. 聚类提取先验框(Anchor Box)
使用K-means聚类从数据集中提取先验框尺寸,更贴合实际数据分布;
引入Anchor Box机制,每个网格预测多个边界框,提升召回率。
5. 定位预测优化(Directed Location Prediction)
不再直接预测边界框的偏移量,而是预测相对于网格单元的偏移量;
使用sigmoid函数将偏移量约束在0~1之间,避免训练不稳定。
6. 细粒度特征融合(Fine-Grained Features)
通过特征拼接(passthrough layer)将浅层特征与深层特征融合,提升小目标检测能力。
7. 多尺度训练(Multi-Scale Training)
每训练一定迭代次数后随机改变输入图像尺寸(如320×320至608×608),增强模型鲁棒性。
三、感受野与卷积设计
YOLOv2中也深入探讨了感受野的概念:
堆叠多个小卷积核(如3×3)可以替代大卷积核(如7×7),在保持相同感受野的同时:
减少参数量;
增加非线性表达能力;
提升特征提取的细腻度。
这正是VGG网络的设计思想,也被YOLOv2所借鉴。
总结
YOLOv1以其“只看一次”的极简思想开创了单阶段目标检测的先河,而YOLOv2则通过Batch Normalization、Anchor Box、多尺度训练等一系列技术大幅提升了模型性能。YOLO系列的演进不仅推动了目标检测技术的发展,也为后续的YOLOv3、v4乃至v5奠定了坚实基础。