YOLO-v5¶
input¶
- AutoAnchor:每次新建训练任务,会根据当前的训练数据,重新计算anchor
- 自适应图片缩放:按照输入图片的比例缩放到指定尺寸,不足的地方用纯色(114)补充
backone¶
- CSP结构
- Focus结构,对输入图片进行切片,切片后的数据叠加得到新的输入数据,切片规则:在行列上每隔N个像素进行一次采样,将采样后的结果进行拼接得到一张 (W/N,H/N,3)的图片。
-
The main purpose of the Focus layer is to reduce layers, reduce parameters, reduce FLOPS, reduce CUDA memory, increase forward and backward speed while minimally impacting mAP.
- FLOPs衡量模型的复杂度
import torch.nn as nn from models.common import Focus, Conv, Bottleneck from utils.torch_utils import profile # c1, c2, k=1, s=1 m1 = Focus(3, 64, 3) # YOLOv5 single layer m2 = nn.Sequential(Conv(c1=3, c2=32, k=3, s=1), Conv(32, 64, 3, 2), Bottleneck(64, 64)) # YOLOv3 equivalent layers # Bottleneck : shorcut模块 profile(x=torch.randn(16, 3, 640, 640), ops=[m1, m2], n=100) # profile both 100 times at batch-size 16
1.8.1+cu101 cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16160MB, multi_processor_count=80) Params GFLOPS forward (ms) backward (ms) input output 7040 23.07 4.958 12.76 (16, 3, 640, 640) (16, 64, 320, 320) # Focus() 40160 140.7 26.15 125 (16, 3, 640, 640) (16, 64, 320, 320) # YOLOv3 layers
- CBM结构,M为Mish,是一种更加平滑的激活函数
- FLOPs衡量模型的复杂度
neck¶
- FPN
- 特征上采样,得到的结果与浅层同尺寸大小的feature进行融合
- PAN
- 特征上采样之后,再进行下采样,在FPN的基础上再进行一次反向操作,深层特征下采样,与浅层同尺寸的特征进行融合。
- SPP
- Spatial Pyramid Pooling(空间金字塔池化),用多个不同尺寸的核,对特征进行池化,并将池化后的后果进行拼接,得到固定长度的特征表达,用于后续的分类(优势:降低目标大小对分类的影响)
- 在实际的工程中,针对不同大小的kernel,采用不同的padding长度,使得多个kernel输出feature尺寸一致,方便后续直接叠加。
loss¶
- smooth l1 loss
- 自变量在0附近为二次函数,远离0是一次函数,好处是:训练初期,loss较大,可以提高模型拟合的稳定性,训练后期,损失值很小,梯度也会减小(在不调节学习率的情况下,相比于一次函数),可防止模型在局部震荡。
- IoU loss
- 解决了训练过程与预测过程度量指标不一致的问题(原先采用目标boxe的偏移作为回归目标,预测过程采用目标重叠面积的交并比作为评价指标)
- GIoU loss
- 解决了IoU loss在目标框与预测框没有重叠面积时,梯度为0的情况
- 引入了最小外包围面积的概念,通过计算两个box在最小外包围面积中的占比来表述损失
- DIoU loss
- 引入目标框中心距离的概念,反映了预测框目标框完全包围情况下,回归目标的好坏程度
- 为了加速收敛,引入了中心距离的损失项
- 两个box的中心距离+最小外包围矩形的对角线距离做归一化
- CIoU loss
- 引入了box长宽比的概念,希望预测目标的长宽比例更倾向于标注目标。
- 计算时需要用到标注框的宽与高,因此在推理的过程中无法使用CIoU NMS,转而使用DIoU NMS。
- 正负样本的选择
- IoU作为分类的target
NMS¶
- DIoU NMS
- IoU-x,小于阈值则保留,大于阈值则过滤;x表示box的中心距与最小外包围对角线距离的比值
- x越大(beta越小),越容易保留更多的目标框,通过调节beta值,可缓解遮挡物体的检测效果。
数据增强¶
- mosaic
- 随机筛选四张图进行拼接
- MixUp
- 两张图片以一定的比例进行图片叠加,标签按数量增加
- CutMix
- 把一张图抠出来,粘到另外一张图上去