目录
1. YOLO V3简介
2. YOLO V3网络结构
3. 边界框预测
4. 正负样本的分配
5. YOLO V3损失函数
5.1 置信度损失
5.2 分类损失
5.3 定位损失
6. YOLO V3总结
1. YOLO V3简介
YOLO(You Only Look Once)系列算法是目标检测领域经典的 one‑stage 方法。YOLO V3 在 YOLO V2 基础上做了多项改进,在维持高速推理的同时显著提升检测精度,小目标检测效果提升尤为明显。
2. YOLO V3网络结构
YOLO V3 的骨干网络名为 Darknet‑53(53个卷积层),它由连续的1x1和3x3的卷积层构成,并使用了 ResNet 的残差结构。与 Darknet‑19 相比,Darknet‑53 层数更深,且没有使用池化层,而是通过步长为 2 的卷积来实现特征图尺寸的缩减。Darknet‑53 在 ImageNet 上的分类精度与 ResNet‑152 相当,但计算速度更快。
YOLO V3 使用了类似 FPN(Feature Pyramid Network)的思想进行多尺度预测。它从骨干网络的不同阶段提取三个尺度的特征图(13 × 13、26 × 26、52 × 52),分别负责检测大、中、小物体。较小特征图感受野大,适合检测大物体;较大特征图保留了更丰富的细节信息,有利于检测小物体。每层特征图的每个网格会预测 3 个边界框,因此最终输出的边界框数量大幅增加,提高了密集小物体的召回率。
3. 边界框预测
YOLO V3 继续沿用 YOLO V2 中引入的锚框(Anchor Boxes)机制,使用 9 个不同尺寸的锚框,通过 K‑means 聚类 COCO 数据集的真实目标框得到。9 个锚框分为三组,分配到三个多尺度检测分支,每个尺度分配 3 个锚框。边界框不直接预测图像绝对像素坐标,而是预测相对于网格和锚框的偏移量;其中中心点偏移tx、ty经过 Sigmoid 激活函数限制在 0~1 之间,约束目标中心落在当前网格内,稳定训练梯度,有助于模型更快收敛;宽高偏移tw、th则通过指数函数缩放锚框尺寸。
eg:cx、cy是当前网格左上角的坐标,pw、ph是当前网格分配的锚框宽高。
4. 正负样本的分配
YOLO V3 根据锚框与真实目标框(GT)的 IOU 来划分样本,默认阈值 = 0.5。
- 正样本真实目标中心点落在某个网格内,与该真实框 IOU 最大的锚框为正样本,一个真实框仅匹配一个正样本锚框。
- 忽略样本若锚框和任意真实框 IOU 超过阈值,但不是对应真实框重合程度最高的锚框,则丢弃。
- 负样本锚框与所有真实目标框的 IOU 均小于阈值,判定为负样本。
5. YOLO V3损失函数
损失函数仍由置信度损失、分类损失和定位损失三部分加权组成,但定位部分仍使用均方误差损失,而置信度和分类部分使用交叉熵损失。
5.1 置信度损失
采用二元交叉熵 BCE 损失。正样本置信度标签为 1,负样本标签为 0;IOU≥0.5 的忽略样本不参与置信度损失计算。
5.2 分类损失
采用二元交叉熵BCE损失,仅正样本参与分类损失优化,负样本与忽略样本不计算分类损失。关于为什么采用二元交叉熵BCE损失,作者认为同一目标可属于多类,比如猫可归为猫类以及动物类,这样可以应对更加复杂的场景。
5.3 定位损失
采用均方误差 MSE 损失,仅正样本参与坐标回归计算,负样本、忽略样本不计入定位损失。
6. YOLO V3总结
YOLO V3 在速度和精度之间取得了良好的平衡,通过多尺度预测和更深骨干网络有效提升了小物体检测能力。尽管后续版本(YOLO V4、YOLO V5、YOLO V8 等)在结构和训练技巧上进一步优化,YOLO V3 仍然是一个研究目标检测入门的经典模型,理解它的设计思路对后续版本的学习非常有帮助。