YOLOv4 :兼顾速度与精度!
YOLOv4 是一款在目标检测领域兼顾 “实时速度” 与 “检测精度” 的经典模型,虽更换了作者,但延续了 YOLO 系列的核心优势,尤其在细节优化和训练门槛降低上表现突出 —— 单 GPU 即可完成高质量训练,无需依赖复杂的多设备环境。
一、YOLOv4 核心贡献
YOLOv4 的成功并非依赖单一创新,而是通过 “全面优化 + 门槛降低” 实现突破,核心贡献可概括为三点:
- 亲民易训练:打破多 GPU 训练的依赖,单 GPU 就能训练出优异效果,大幅降低设备门槛,让更多开发者可复用。
- 双维度改进:从 “数据层面”(如数据增强)和 “网络设计层面”(如特征融合)同步优化,覆盖训练到推理的全流程。
- 消融实验充分:几乎验证了所有可行的改进模块,通过大量实验确保每个技术点的有效性,结论可信度高。
二、核心优化策略一:Bag of Freebies(BOF)
BOF 是 “只增加训练成本、不影响推理速度” 的优化策略,重点解决 “精度提升” 和 “过拟合” 问题,核心技术如下:
1. 数据增强:让训练数据更丰富
通过多样化数据场景,提升模型泛化能力,避免 “认熟不认生”。
- Mosaic:将 4 张不同图像拼接成 1 张图训练,一次可学习多场景特征(如同时包含 “猫、车、行人”),还能丰富背景和目标位置,训练效率更高。
- Random Erase:随机选择图像中的一块区域,用随机值或训练集平均像素值替换,模拟 “目标被遮挡” 的场景(如猫被桌子挡住一半)。
- Hide and Seek:按概率隐藏图像中的小补丁,强迫模型关注非补丁区域的细节,避免依赖局部特征。
- SAT(自对抗训练):给图像添加轻微 “噪音”(如微调部分像素),增加训练难度,让模型在面对干扰时更鲁棒(如模糊图像也能检测目标)。
2. 网络正则化:防止模型 “过度自信”
解决过拟合问题(模型只适配训练数据,对新数据检测不准)。
- DropBlock:区别于传统 Dropout “随机删单个像素”,DropBlock 直接 “删除一整块区域”,避免模型依赖局部特征(如不会只靠 “猫的耳朵” 就判断是猫)。
- Label Smoothing:软化标签值,比如将 “是猫 = 1、不是猫 = 0” 改为 “是猫 = 0.95、不是猫 = 0.05”,不让模型对结果 100% 自信,最终让同类特征更集中、不同类特征更分离。
3. 损失函数改进:让目标框更精准
解决 “预测框与真实框匹配不准” 的问题,从 IOU 逐步升级到 CIoU:
- 原始 IOU:通过 “重叠面积 / 总面积” 计算,但两框不重叠时 IOU=0,无法计算梯度(模型没法学习);且相同 IOU 下,无法区分框的位置好坏。
- GIoU:加入 “最小封闭框”(能装下预测框和真实框的最小框),即使两框不重叠,也能通过封闭框的面积差引导模型学习,让预测框向真实框靠近。
- DIoU:在 GIoU 基础上,额外考虑 “两框中心点的距离”,直接优化距离,定位速度更快、更准。
- CIoU:进一步加入 “框的长宽比”,同时兼顾 “重叠面积、中心点距离、长宽比” 三个几何因素,是 YOLOv4 最终采用的损失函数,目标框预测精度最高。
三、核心优化策略二:Bag of Specials(BOS)
BOS 是 “增加少量推理成本、显著提升精度” 的策略,核心是 “优化特征提取与融合”,整合了多个领域的优秀技术:
1. 特征处理:让网络更高效地提特征
- SPPNet(空间金字塔池化):解决 YOLOv3 “需固定输入图像大小” 的问题,通过 “多尺度最大池化”,无论输入图像尺寸如何,都能输出一致大小的特征,灵活适配不同场景。
- CSPNet(跨阶段部分网络):将每个网络块的特征图按通道分成两部分,一部分正常走卷积 / 残差块,另一部分直接 “抄近路” 拼到输出端,既减少计算量,又保留更多原始特征。
2. 注意力机制:让模型 “聚焦重点”
让模型忽略无关背景,专注于目标相关特征:
- SAM(空间注意力模块):关注 “哪里有目标”,比如聚焦目标的轮廓、纹理区域,过滤掉空白背景。
- CBAM(卷积块注意力模块):比 SAM 更全面,既关注 “目标位置”(空间维度),又关注 “重要特征”(通道维度),比如优先利用 “猫的毛发特征” 而非 “背景的草地特征”。
3. 特征融合:让不同层特征互补
- PAN(路径聚合网络):改进传统 FPN “仅自顶向下传特征”(高层抽象特征传给低层)的局限,新增 “自底向上传递”(低层细节特征传给高层),实现双向特征融合。比如高层能知道 “这是车”,低层能提供 “车轮的细节位置”,结合后定位更精准。
4. 其他细节优化
- Mish 激活函数:比 ReLU 更柔和(ReLU 会直接丢弃负数值,Mish 保留部分负值),更符合实际数据分布,检测效果更好,仅计算量略有增加。
- 消除网格敏感:目标在图像网格边界时,原预测值只能在 0-1 之间,难以表示边界位置。通过在激活函数前加 “大于 1 的系数”,扩大预测范围,解决边界定位难题。
四、YOLOv4 整体网络架构与总结
1. 整体架构逻辑
YOLOv4 并非创造新方法,而是 “集大成者”—— 以 “高效特征提取 + 精准特征融合 + 鲁棒训练策略” 为核心,整合了上述 BOF 和 BOS 模块:
- 基础特征提取:用 CSPNet 减少计算、保留特征;
- 多尺度处理:用 SPPNet 适配不同输入尺寸;
- 特征融合:用 PAN 实现双向特征传递,结合 SAM/CBAM 聚焦重点;
- 训练优化:用 Mosaic、Label Smoothing、CIoU 损失提升泛化能力和精度。
2. 核心优势总结
- 速度与精度平衡:在保证实时检测(高 FPS)的同时,精度优于 YOLOv3、EfficientDet 等模型;
- 训练门槛低:单 GPU 即可训练,无需复杂硬件;
- 实用性强:适配多种场景(如自动驾驶、监控、工业检测),泛化能力好。