YOLOv4简单基础学习

一、YOLOv4 整体概况

YOLOv4 在目标检测领域兼顾速度与精度,核心优势是支持单 GPU 训练,降低了设备门槛。其核心改进思路围绕两大层面展开,分别是数据层面的优化和网络设计层面的升级,同时通过全面的消融实验验证了各模块效果。

从性能表现来看,在 FPS(帧率)与精度的权衡上,YOLOv4 表现出色。例如在 V100 显卡上,其精度优于 YOLOv3、ASFF 等模型,同时能保持较好的实时检测能力(real-time),在同类目标检测模型中处于领先梯队。

二、核心改进:Bag of Freebies(BOF)

BOF 类方法仅增加训练成本,不影响推理速度,却能显著提升模型精度,主要涵盖数据增强、网络正则化和损失函数优化三大方向。

(一)数据增强

  1. 基础增强手段:通过调整图像亮度、对比度、色调,以及随机缩放、剪切、翻转、旋转等操作,扩大训练数据的多样性。
  2. Mosaic 数据增强:参考 CutMix 思路,将 4 张图像拼接成 1 张进行训练,丰富了图像背景和目标分布,提升模型对复杂场景的适应能力。
  3. 其他增强方式
    • Random Erase:用随机值或训练集平均像素值替换图像的部分区域。
    • Hide and Seek:按概率随机隐藏图像中的一些补丁,迫使模型关注更多关键特征。
    • Self-adversarial-training(SAT):通过引入噪音点增加训练难度,提升模型的鲁棒性。

(二)网络正则化

  1. DropBlock:区别于传统 Dropout 随机丢弃单个点,DropBlock 会丢弃图像中的一个区域,能更有效地防止模型过拟合,保留特征的空间关联性。
  2. 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 类方法会增加少量推断代价,但能显著提升模型精度,主要聚焦于网络结构的细节优化,包括特征提取、注意力机制和特征融合等方向。

(一)特征提取优化

  1. SPPNet(Spatial Pyramid Pooling):通过多尺度最大池化,使不同输入大小的图像能输出一致的特征,无需在训练时调整输入数据大小,提升模型适应性。
  2. CSPNet(Cross Stage Partial Network):将每个 block 的特征图按 channel 维度拆分为两部分,一部分正常通过网络,另一部分直接拼接至 block 输出,减少计算量的同时保留关键特征。

(二)注意力机制

  1. SAM(Spatial Attention Module):空间注意力机制,通过对特征图的通道进行最大池化和平均池化,聚焦图像中的关键空间区域,提升目标区域的特征权重。
  2. CBAM(Convolutional Block Attention Module):结合通道注意力和空间注意力,先对通道维度筛选重要特征,再对空间维度聚焦关键区域,进一步增强有效特征的表达。
  3. YOLOv4 专属空间注意力模块:简化了传统注意力机制的结构,在保证精度提升的同时,降低计算复杂度,加快推理速度。

(三)特征融合优化

PAN(Path Aggregation Network):在 FPN(自顶向下特征融合)的基础上,增加自底向上的路径,使底层细节特征更容易传递到顶层,同时通过拼接(而非加法)的方式融合特征,保留更丰富的特征信息,提升小目标检测能力。

(四)激活函数与坐标回归优化

  1. Mish 激活函数:公式为\(f(\alpha)=\alpha \cdot \tanh(\ln(1+e^\alpha))\),相比 ReLU 更符合实际数据分布,能提升模型效果,但会增加少量计算量。
  2. 消除网格敏感性:在坐标回归预测值的激活函数前添加一个大于 1 的系数,解决目标处于 grid 边界时,需要极大数值才能表示边界的问题,提升坐标回归精度。

四、学习总结

YOLOv4 的核心价值在于 "集大成" 与 "实用性":它整合了近年来目标检测领域的诸多优秀技术,同时通过单 GPU 训练的设计降低了使用门槛。其改进逻辑清晰,从数据层面提升模型泛化能力,从网络层面优化特征提取与融合,最终实现了速度与精度的平衡,成为目标检测领域的经典模型之一,也为后续 YOLO 系列模型的发展奠定了基础。

相关推荐
Pluchon3 小时前
硅基计划5.0 MySQL 叁 E-R关系图&联合/多表查询&三大连接&子查询&合并查询
开发语言·数据库·学习·mysql
学工科的皮皮志^_^3 小时前
网口学习理解
经验分享·笔记·嵌入式硬件·学习·fpga开发·以太网
我叫侯小科4 小时前
YOLOv4:目标检测界的 “集大成者”
人工智能·yolo·目标检测
麒羽7605 小时前
YOLOv4:目标检测领域的 “速度与精度平衡大师”
yolo·目标检测·目标跟踪
后端小张5 小时前
【鸿蒙开发手册】重生之我要学习鸿蒙HarmonyOS开发
开发语言·学习·华为·架构·harmonyos·鸿蒙·鸿蒙系统
.NET修仙日记6 小时前
.NET WinForms + WPF 综合学习路线:从传统到现代的.NET桌面开发
学习·c#·.net·wpf·.net core·winforms
crary,记忆7 小时前
MFE: React + Angular 混合demo
前端·javascript·学习·react.js·angular·angular.js
前网易架构师-高司机7 小时前
鸡蛋质量识别数据集,可识别染血的鸡蛋,棕色鸡蛋,钙沉积鸡蛋,污垢染色的鸡蛋,白鸡蛋,平均正确识别率可达89%,支持yolo, json, xml格式的标注
yolo·分类·数据集·缺陷·鸡蛋
Yupureki7 小时前
从零开始的C++学习生活 11:二叉搜索树全面解析
c语言·数据结构·c++·学习·visual studio