YOLOv4 核心内容笔记
一、Bag of Specials(BOS)深化:PAN 网络与结构优化
作为 BOS(轻微增加推理成本、显著提升精度)的核心模块,PAN(Path Aggregation Network)是对传统 FPN 的关键改进,重点解决 “底层特征向上传递不充分” 的问题,是 YOLOv4 特征融合的核心架构。
1. 从 FPN 到 PAN 的演进逻辑
对比维度 | FPN(Feature Pyramid Network) | PAN(Path Aggregation Network) |
---|---|---|
特征传递方向 | 仅自顶向下(高层特征向低层传递,补充语义信息) | 双向传递(自顶向下 + 自底向上) |
底层信息利用 | 底层细节特征(如小目标边缘、纹理)传递到高层时损耗大 | 新增自底向上路径,底层信息直达高层,减少损耗 |
路径设计 | 单一长路径(如 ResNet 的 100 层级路径) | “主路径 + 捷径”:红色长路径(如 ResNet 多层)保障语义提取,绿色短路径(仅几层)加速底层信息传递 |
特征融合方式 | 以 “加法(addition)” 为主,易丢失细节特征 | YOLOv4 中改为 “拼接(concatenation)”,完整保留不同层级特征的通道信息,融合效果更优 |
2. PAN 的核心价值
解决小目标检测痛点:底层特征(含小目标关键细节)能高效传递到高层网络,避免因路径过长导致的特征衰减。
平衡语义与细节:自顶向下传递高层 “语义信息”(判断 “是什么”),自底向上传递低层 “细节信息”(定位 “在哪里”),二者结合提升定位精度。
二、激活函数创新:Mish
YOLOv4 引入 Mish 激活函数,替代传统 ReLU,核心目标是提升特征表达的 “平滑性” 与 “丰富性”,尤其适配目标检测中复杂场景的特征提取。
1. Mish 的核心特性
公式定义:f(x)=x⋅tanh(ln(1+ex))
与 ReLU 的关键差异:
ReLU:硬截断(x<0时输出 0),易丢失负区间特征信息,导致梯度断层。
Mish:连续光滑(无硬截断),负区间输出非零值(如x=−2时f(x)≈−0.5),能保留更多边缘、纹理等弱特征,更贴合自然图像的特征分布规律。
性能权衡:计算量略高于 ReLU,但实验显示能带来精度提升(尤其在复杂场景下),属于 “轻微成本换显著收益” 的 BOS 优化。
三、定位精度优化:消除网格敏感性(Eliminate Grid Sensitivity)
针对 YOLO 系列 “网格边界处目标定位难” 的固有问题,YOLOv4 提出针对性解决方案,核心是突破坐标回归的 “0-1 数值限制”。
1. 问题根源
YOLO 模型通过网格划分图像,目标中心坐标回归值默认限制在[0,1](表示目标中心在所属网格内的相对位置)。但当目标中心靠近网格边界(如相邻网格的交界处)时,需预测接近 1 或 0 的极端值,易导致梯度更新缓慢,定位精度下降。
2. 解决方案
在坐标回归的激活函数前,引入一个大于 1 的系数(如 1.5),公式调整为:g(z)=1.5⋅z(z为回归原始输出)
效果:将坐标预测范围从[0,1]扩展到[0,1.5],覆盖网格边界外的邻近区域,无需预测极端值即可精准定位边界处目标,显著缓解网格敏感性问题。
四、YOLOv4 整体网络架构(前 25 页核心模块整合)
PPT 15-25 页明确了 YOLOv4 的 “分层架构” 逻辑,各层均整合前文提到的 BOF/BOS 优化模块,形成 “高效特征提取 - 精准特征融合 - 稳健目标检测” 的完整链路。
1. 架构分层与核心模块对应
架构层级 | 核心功能 | 所用关键模块 |
---|---|---|
Backbone(骨干网络) | 提取图像多尺度基础特征(从低层细节到高层语义) | - CSPResNet/CSPDarknet:通过特征分路 + 拼接,减少计算量、保留关键特征- Mish 激活函数:提升特征表达平滑性- DropBlock:区域化正则化,缓解过拟合 |
Neck(颈部特征融合) | 融合不同层级特征,平衡语义与细节 | - SPPNet:多尺度池化,统一特征尺寸,增强全局特征提取- PAN:双向特征传递,底层细节 + 高层语义高效融合(拼接方式) |
Head(检测头) | 输出目标类别、置信度、坐标 | - 改进型坐标回归:消除网格敏感性(系数调整)- CIOU 损失:结合重叠面积、中心点距离、长宽比,优化定位损失- DIOU-NMS/Soft-NMS:减少误删、漏检,优化目标筛选 |
2. 架构设计核心思路
模块化整合:将 BOF(如 Mosaic、Label Smoothing、CIOU)与 BOS(如 PAN、Mish、SPP)模块拆解到架构各层,确保每个环节都有针对性优化。
单 GPU 适配:所有模块设计均考虑计算效率,避免过度复杂的结构(如未用多分支大模型),确保单 GPU 可训练且推理速度达标。