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 系列模型的发展奠定了基础。

相关推荐
2501_9011478326 分钟前
学习笔记:单调递增数字求解的迭代优化与工程实践
linux·服务器·笔记·学习·算法
Katecat996631 小时前
目标检测咖啡果实成熟度检测:RetinaNet-X101模型实现
人工智能·目标检测·目标跟踪
wfeqhfxz25887821 小时前
YOLOv8-BiFPN鸟巢目标检测与识别实战教程
yolo·目标检测·目标跟踪
Katecat996631 小时前
基于YOLOv8和MAFPN的骆驼目标检测系统实现
人工智能·yolo·目标检测
苦逼IT运维1 小时前
从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)
linux·学习·docker·容器·kubernetes
野犬寒鸦2 小时前
从零起步学习并发编程 || 第五章:悲观锁与乐观锁的思想与实现及实战应用与问题
java·服务器·数据库·学习·语言模型
LittroInno2 小时前
TVMS视频管理平台 —— 多种目标跟踪模式
人工智能·计算机视觉·目标跟踪
阿蒙Amon2 小时前
TypeScript学习-第13章:实战与最佳实践
javascript·学习·typescript
云小逸3 小时前
【nmap源码学习】 Nmap 源码深度解析:nmap_main 函数详解与 NSE 脚本引擎原理
网络协议·学习·安全
hssfscv3 小时前
Javaweb学习笔记——后端实战8 springboot原理
笔记·后端·学习