其实继YOLOv3之后, 发表了YOLOv4论文,以及工程化的YOLOv5。 这里做一下简要的介绍,首先先给出论文地址(YOLOv4)以及代码地址(YOLOv5)。
论文地址: YOLOv4: Optimal Speed and Accuracy of Object Detection
代码地址: ultralytics/yolov5
首先说下其实YOLOv4这篇文章将2020年以前的这段时间做的关于目标检测的很多trick以及思想做了大合集实验,并且这些实验都是再单gpu下便可进行很好训练的,所以看了这篇文章对我们有很大的收益,同时YOLOv5的工程化代码写的非常好,也便于我们普通人基于普通机器进行大规模数据训练。
一、 原理介绍
YOLOv4主要从两个方面对其进行了实验改进分别是:Bag of freebies(BOF)
以及Bag of specials(BOS)
。
1.1 Bag of freebies(BOF)
We call these methods that only change the training strategy or only increase the training cost as “bag of freebies.” What is often adopted by object detection methods and meets the definition of bag of freebies is data augmentation
由原文可以得出我们此方法可以增加训练成本,通过该方法可以进一步的提升精度,但是不会影响我们的推理速度。该方法包括如下几个方面如:
① 数据增强
传统的调整亮度,对比度,饱和度,随机缩放,裁剪, 翻转,旋转, 以及该文章突出的一点的Mosaic
方法。
② 正则化方法
: Dropout,以及该文章采用的Dropblock
方法。
③ 类别不平衡以及损失函数的涉及
1.1.1 数据增强
在Mosaic数据增强方面之前, 有好几种数据增强的方式分别是:Mixup
, Cutout
, CutMix
我们先看下他们是如何做到的, 具体的可以参考这篇文章数据增强:Mixup,Cutout,CutMix | Mosaic,并且这边文章还有对应的代码解读。
Mixup
会引入不自然的为像素信息,Cutout
保留了regional dropout
优势能够关注到目标不容易区分的部位。CutMix
种通过要求模型从局部视图识别对象,对cut区域中添加其他样本的信息,能够进一步增强模型的定位能力。而我们的YOLOv4
采用的是Mosaic
的增广方式。相对于之前的两张图片进行的增广,
Mosaic
采用的是4张图片拼接进行增广,相当于增加了batch size
大小。如下图所示:具体步骤如下所示:
当然文章也提到了其他的数据增强的方法如:
Random Erase
, Hide and Seek
, Self-aderarial-training(SAT)
, DropBlock
等方法。Random Erase
用随机值或训练集的平均像素值替换图像的区域Hide and Seek
根据概率设置随机隐藏一些补丁Self-adverial-training(SAT)
通过引入噪音来增加训练难度DropBlock
dropout是随机选点(b), DropBlock
是整个区域(c), 杀死一些部位,也是为了加大训练难度,增大泛化能力,防止过拟合。1.1.2 标签平滑
对于标签我们采用了Label Smoothing
的方法,集我们的label不是给绝对的标签
1.1.3 目标框损失(选用CIOU损失
)
1.1.4 NMS
1.2 Bag of specials(BOS)
For those plugin modules and post-processing methods that only increase the inference cost by a small amount but can significantly improve the accuracy of object detection, we call them “bag of specials”. Generally speaking, these plugin modules are for enhancing certain attributes in a model, such as enlarging receptive field, introducing attention mechanism, or strengthening feature integration capability, etc., and post-processing is a method for screening model prediction results.
通过少许推断代价,但是可以提高模型进度。引入了注意力机制,网络细节涉及,特征金字塔等。
1.2.1 SPPNet(Spatial Pyramid Pooling)
1.2.2 CSPNet(Cross Stage Partial Network)
将输入先切分两块在进行运算,channel同道减少在计算为了加快计算速度。
1.2.3 SAM注意力机制
1.2.4 PAN(Path Aggregation Network)
1.2.5 Mish 激活函数
1.2.6 eliminate grid sensitivity
1.2.7 整体网络架构
二、 代码介绍
这里推荐我同事写的这篇博客, 再分享会上分享的非常详细,目标检测 YOLOv5网络v6 0版本总结
参考文献
[1] 数据增强:Mixup,Cutout,CutMix | Mosaic
[2] 想读懂YOLOV4,你需要先了解下列技术(一)
[3] YoloV4当中的Mosaic数据增强方法(附代码详细讲解)
[4] 唐宇迪 YOLO系列
[5] Soft-NMS