YOLOv4简单基础学习
一、YOLOv4 整体概况
YOLOv4 在目标检测领域兼顾速度与精度,核心优势是支持单 GPU 训练,降低了设备门槛。其核心改进思路围绕两大层面展开,分别是数据层面的优化和网络设计层面的升级,同时通过全面的消融实验验证了各模块效果。
从性能表现来看,在 FPS(帧率)与精度的权衡上,YOLOv4 表现出色。例如在 V100 显卡上,其精度优于 YOLOv3、ASFF 等模型,同时能保持较好的实时检测能力(real-time),在同类目标检测模型中处于领先梯队。
二、核心改进:Bag of Freebies(BOF)
BOF 类方法仅增加训练成本,不影响推理速度,却能显著提升模型精度,主要涵盖数据增强、网络正则化和损失函数优化三大方向。
(一)数据增强
- 基础增强手段:通过调整图像亮度、对比度、色调,以及随机缩放、剪切、翻转、旋转等操作,扩大训练数据的多样性。
- Mosaic 数据增强:参考 CutMix 思路,将 4 张图像拼接成 1 张进行训练,丰富了图像背景和目标分布,提升模型对复杂场景的适应能力。
- 其他增强方式
- Random Erase:用随机值或训练集平均像素值替换图像的部分区域。
- Hide and Seek:按概率随机隐藏图像中的一些补丁,迫使模型关注更多关键特征。
- Self-adversarial-training(SAT):通过引入噪音点增加训练难度,提升模型的鲁棒性。
(二)网络正则化
- DropBlock:区别于传统 Dropout 随机丢弃单个点,DropBlock 会丢弃图像中的一个区域,能更有效地防止模型过拟合,保留特征的空间关联性。
- Label Smoothing:缓解模型过拟合问题。例如将原本(0,1)的标签调整为(0.05, 0.95),避免模型对预测结果过度自信,使类别簇内更紧密、簇间更分离。
(三)损失函数优化
YOLOv4 针对传统 IOU 损失的缺陷,逐步优化损失函数,具体演进如下:
损失函数 | 核心改进 | 解决的问题 |
---|---|---|
IOU 损失 | 以预测框与真实框的交并比为核心计算损失 | 无相交时 IOU=0,无法进行梯度计算;相同 IOU 值无法反映预测框与真实框的实际位置差异 |
GIOU 损失 | 引入能包含预测框与真实框的最小封闭形状 C | 在预测框与真实框无重叠时,仍能引导预测框向真实框移动 |
DIOU 损失 | 计算预测框与真实框中心点的欧式距离 d,并结合最小封闭形状对角线长度 c | 直接优化中心点距离,加快收敛速度,解决 GIOU 在某些场景下优化效果不佳的问题 |
CIOU 损失 | 同时考虑重叠面积、中心点距离和长宽比三个几何因素 | 进一步提升边界框回归精度,更贴合目标检测的实际需求 |
此外,在目标框筛选阶段,YOLOv4 还改进了 NMS(非极大值抑制):
- DIOU-NMS:不仅考虑 IOU 值,还结合两个框中心点的距离,能更合理地剔除冗余框。
- Soft-NMS:不直接剔除低置信度框,而是降低其置信分数,避免误删重叠的目标框,更 “柔和” 地筛选目标。
三、核心改进:Bag of Specials(BOS)
BOS 类方法会增加少量推断代价,但能显著提升模型精度,主要聚焦于网络结构的细节优化,包括特征提取、注意力机制和特征融合等方向。
(一)特征提取优化
- SPPNet(Spatial Pyramid Pooling):通过多尺度最大池化,使不同输入大小的图像能输出一致的特征,无需在训练时调整输入数据大小,提升模型适应性。
- CSPNet(Cross Stage Partial Network):将每个 block 的特征图按 channel 维度拆分为两部分,一部分正常通过网络,另一部分直接拼接至 block 输出,减少计算量的同时保留关键特征。
(二)注意力机制
- SAM(Spatial Attention Module):空间注意力机制,通过对特征图的通道进行最大池化和平均池化,聚焦图像中的关键空间区域,提升目标区域的特征权重。
- CBAM(Convolutional Block Attention Module):结合通道注意力和空间注意力,先对通道维度筛选重要特征,再对空间维度聚焦关键区域,进一步增强有效特征的表达。
- YOLOv4 专属空间注意力模块:简化了传统注意力机制的结构,在保证精度提升的同时,降低计算复杂度,加快推理速度。
(三)特征融合优化
PAN(Path Aggregation Network):在 FPN(自顶向下特征融合)的基础上,增加自底向上的路径,使底层细节特征更容易传递到顶层,同时通过拼接(而非加法)的方式融合特征,保留更丰富的特征信息,提升小目标检测能力。
(四)激活函数与坐标回归优化
- Mish 激活函数:公式为\(f(\alpha)=\alpha \cdot \tanh(\ln(1+e^\alpha))\),相比 ReLU 更符合实际数据分布,能提升模型效果,但会增加少量计算量。
- 消除网格敏感性:在坐标回归预测值的激活函数前添加一个大于 1 的系数,解决目标处于 grid 边界时,需要极大数值才能表示边界的问题,提升坐标回归精度。
四、学习总结
YOLOv4 的核心价值在于 “集大成” 与 “实用性”:它整合了近年来目标检测领域的诸多优秀技术,同时通过单 GPU 训练的设计降低了使用门槛。其改进逻辑清晰,从数据层面提升模型泛化能力,从网络层面优化特征提取与融合,最终实现了速度与精度的平衡,成为目标检测领域的经典模型之一,也为后续 YOLO 系列模型的发展奠定了基础。