Fig. 1 YOLOv5 stucture diagram
上图为 YOLOv5 算法的框架图,将整个网络依据功能划分,可以分为四个部分:
1) 输入端:为图中左上角红绿蓝三色方块,主要负责输入图像的预处理,如将图像
的尺寸压缩为网络接受的输入尺寸,并进行归一化等,YOLOv5 在输入端采用了
Mosaic 数据增强、自适应锚框计算和自适应图片缩放;
2) Backbone:为图中左边第一列,主要负责图像的特征提取,指代已经在大型数据
集(如 ImageNet)上完成预训练,拥有预训练参数的卷积神经网络,YOLOv5 在
Backbone 采用了 Focus 结构和 CSP 结构,来减少反向梯度传播时的计算量,提高
学习能力;
3) Neck:为图中中间两列,主要负责图像的特征提取,指代已经在大型数据集(如
ImageNet)上完成预训练,拥有预训练参数的卷积神经网络,YOLOv5 在 Neck 采用
了 PAN 结构来融合不同的维度特征;
4) 预测段:为图中最后一列,主要负责预测目标的分类和位置,输出目标检测的结
果。
图中包含 Focus、CBL、C3、SPP 等基本模块,其作用如下所述:Focus 模块的作用是
对图片进行切片操作,将其切成四份后拼接,目的是为了获取完整的下采样信息;CBL 模
块包含卷积(Conv)、批归一化(BN)和 Leaky ReLU 激活函数,主要作用是完成对网络的下采
样;C3 模块的结构如下图,它借鉴了 CSPnet
[2]
的思想,将网络的输入分成两部分计算,目
的是增强网络的学习能力、降低计算量和内存成本;SPP 模块中采用 1×1、5×5、9×9 和
13×13 的最大池化,目的是进行多尺度融合,提高鲁棒性。
图 2 C3 模块结构图
Fig. 2 C3 module structure diagram
此外,对于预测端的损失函数,YOLOv5 采用二分类交叉熵损失函数(BCELoss)来
计算分类损失函数和置信度损失函数,采用 CIOU_Loss 来计算位置损失函数。BCELoss 的
计算公式为:
(1)
其中
是标签,取值为 0 或 1,
是网络预测分类
的概率。当
时,单项损失为
;当
时,单项损失为
。即当标签为 1 时,预测
的概率越大损失
越小;当标签为 0 时,预测
的概率越大损失越大。
CIOU_Loss 的计算公式为:
(2)
其中 Distance_O 为预测框与真实框中心点的距离,Distance_C 为预测框与真实框的最小外
接矩形的对角线距离,ϑ 为衡量预测框与真实框的长宽比一致的参数。同时,YOLOv5 还
采用 NMS 处理来筛选多余的预测框。