文章目录
前言
YOLO v3 通过多尺度检测(利用 FPN 结构在 13×13、26×26、52×52 三个特征图上分别检测大、中、小目标,每个尺度 3 种锚框共 9 种)、更强的 Darknet-53 骨干网络(53 层卷积 + 残差连接)、多标签分类(二元逻辑回归替代 softmax)、灵活输入尺寸(默认 416×416)以及优化的损失函数(边界框回归用 MSE,类别和置信度用二元交叉熵),显著提升了多尺度目标检测能力,在 COCO 数据集上 mAP@0.5 达 57.9%,兼顾精度与实时性(22ms / 帧,30 FPS 以上),成为当时主流的实时目标检测算法。
一、yolo-v3与其他网络的对比
二、yolo-v3核心机制
1、v3先验框的改进
yolo-v3最大的改进就是网络结构,使其更适合小目标检测特征做的更细致,融入多持续特征图信息来预测不同规格物体与yolo-v2不同的是先验框更加丰富了,同样基于k-means聚类,但针对不同尺度的特征图(13×13、26×26、52×52)分配不同尺寸的锚框,每个尺度分配3种锚框,分别对应大、中、小目标的检测需求,yolo-v2有5个先验框,yolo-v3有9个先验框。
小的scale感受野更大,所以小scale对应大的特征图,大的scale对应小的特征图,中等的就对应中等的特征图。
从上图中网格的密集程度就可以观察出谁的感受野更大。
2、scale变换经典方法
图像金字塔;右图是单一的输入
为了应对不同尺寸的网络输入,把图像进行resize,改变分辨率后送入网络,这种显然不适合YOLO速度第一,MAP第二的思想
左图是对不同的特征图分别利用;右图是将不同的特征图融合后进行预测。
3、yolo-v3中的残差连接
在 YOLOv3 中,残差连接(Residual Connection)是一个核心设计,它通过跳跃连接(Skip Connection)将网络的输入直接添加到后续层的输出中。这种设计主要解决了深度神经网络中的梯度消失 / 爆炸和退化问题,并显著提升了模型的性能。
-
解决梯度消失 / 爆炸问题在深度神经网络中,梯度在反向传播过程中会逐层传递和累积。当网络层数极深时,梯度可能变得极小(梯度消失)或极大(梯度爆炸),导致模型无法训练。残差连接的作用:通过直接连接输入和输出,梯度可以直接从后向前流动,形成 “短路” 路径,避免梯度在多层传递中衰减或爆炸。
-
缓解退化问题退化问题:实验发现,当网络层数增加时,准确率可能先上升后饱和,甚至急剧下降。这并非由于过拟合,而是因为更深的网络难以学习到恒等映射(即 H(x) = x)。残差连接的优势:残差块可以轻松学习到恒等映射(只需将 F(x) 的权重参数趋近于 0,即 (F(x) 约等于 0),输出 (y近似于 x),从而保证网络性能不会因深度增加而退化。
-
提升特征复用能力YOLOv3 的主要任务是目标检测,需要同时捕获图像的低级特征(如边缘、纹理)和高级语义特征(如物体类别)。残差连接的作用:通过跳跃连接,早期层提取的低级特征可以直接传递到后续层,与高级特征融合,帮助网络更好地定位和识别不同大小的物体。
-
加速模型收敛残差网络通常比传统网络收敛更快,因为残差映射比直接学习完整映射更容易优化。在 YOLO-v3 中,更快的收敛意味着可以在更短的时间内训练出高性能模型。
残差连接是为了找到更好的特征,V3中也使用到了resnet残差的思想,堆叠更多的层进行特征提取。
4、核心网络架构
5、从输入映射到输出
9种尺度的先验框
YOLO3延续了K-means聚类得到先验框的尺寸方法,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框。在COCO数据集这9个先验框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。
分配上,在最小的13x13特征图上(有最大的感受野)应用较大的先验框(116x90),(156x198),(373x326),适合检测较大的对象。中等的2626特征图上(中等感受野)应用中等的先验框(30x61),(62x45),(59x119),适合检测中等大小的对象。较大的5252特征图上(较小的感受野)应用较小的先验框(10x13),(16x30),(33x23),适合检测较小的对象。
6、先验框的设计
YOLO3延续了K-means聚类得到先验框的尺寸方法,为每种下采样尺度设定3种先验框,总共聚类出9种尺寸的先验框。在COCO数据集这9个先验框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。
分配上,在最小的1313特征图上(有最大的感受野)应用较大的先验框(116x90),(156x198),(373x326),适合检测较大的对象。中等的2626特征图上(中等感受野)应用中等的先验框(30x61),(62x45),(59x119),适合检测中等大小的对象。较大的52*52特征图上(较小的感受野)应用较小的先验框(10x13),(16x30),(33x23),适合检测较小的对象。
大的先验框在感受野大的特征图中检测.
COCO数据集的介绍:https://blog.csdn.net/qq_44554428/article/details/122597358
7、Logistic分类器
YOLOv3用多个独立的Logistic分类器替代了传统目标检测模型中常用的Softmax分类层。
Softmax函数将神经网络的输出转换为概率分布,所有类别的概率之和为1。然而,Softmax函数的是每个样本只属于一个类别。但在更复杂的目标检测场景中,一个物体可能同时属于多个类别,例如一个人可能同时被标记为“人”和“行人”。这种情况下,Softmax函数就不再适用,因为它会强制每个样本只属于一个类别。
在Logistic分类器(逻辑回归)中,每个类别的预测是独立进行的。对于输入样本,分类器会为每个类别计算一个概率值,表示该样本属于该类别的可能性。
Logistic分类器通常使用Sigmoid函数(也称为Logistic函数)作为激活函数。Sigmoid函数将神经网络的输出映射到(0, 1)区间,表示样本属于某个类别的概率。Sigmoid函数的数学表达式为如下图,其中,z是神经网络的原始输出。
假设有一个图像分类任务,需要识别图像中是否包含“猫”、“狗”和“鸟”三种动物。使用Logistic分类器时,模型会为每个类别(猫、狗、鸟)分别计算一个概率值。例如:
- 图像A:猫的概率=0.8,狗的概率=0.3,鸟的概率=0.1
- 图像B:猫的概率=0.2,狗的概率=0.7,鸟的概率=0.6
设定阈值为0.5,则: - 图像A会被标记为“猫”(因为猫的概率>0.5),而不会被标记为“狗”或“鸟”(因为它们的概率<0.5)。
- 图像B会被标记为“狗”和“鸟”(因为它们的概率都>0.5),而不会被标记为“猫”(因为猫的概率<0.5)。
总结
YOLOv3通过Darknet-53主干网络、多尺度特征融合和高效的检测头设计,在保持实时性的同时大幅提升了检测精度。其实现流程可概括为:输入处理 → 2. 特征提取 → 3. 多尺度融合 → 4. 预测输出 → 5. 后处理。该架构在目标检测任务中兼顾速度与精度,至今仍是工业界和学术界的经典基准模型。