哈喽,大家好,今天我们一起学习一下CV(Computer Vision)领域中,最牛目标检测与识别算法之一:YOLO_v4论文中的精髓部分,论文名称:《YOLOv4: Optimal Speed and Accuracy of Object Detection》,感兴趣的同学可以自行下载阅读,文末会贴上下载链接。
咱们先看一下YOLO v4算法的Demo (注:视频来源于YouTuBe)
接下来,我将拆解论文中的每一部分,把最精华的部分提取出来与大家分享。相信各位同学读完后,基本上明白YOLO v4干了什么活儿。闲言少叙,我们进入主题:
第一部分:Abstract
首先,我们先看一下在Abstract部分,作者主要概述了YOLO v4算法中的创新点,主要有以下八点:
① Weighted-Residual-Connections (WRC), 加权残差连接
② Cross-Stage-Partial-connections (CSP), 跨阶段局部连接
③ Cross mini-Batch Normalization (CmBN), 跨小批量归一化
④ Self-adversarial-training (SAT), 自对抗训练
⑤ Mish-activation. Mish激活函数
⑥ Mosaic data augmentation, Mosaic数据增强
⑦ DropBlock regularization, DropBlock正则化
⑧ CIoU loss CIoU损失
基于GPU Tesla V100,作者在COCO数据集上,实现了实时检测速度高达65FPS,AP达到43.5%,AP50达到65.7%。不同算法的对比结果,如图所示:
【个人观点:目前YOLO算法系列包含v1 - v5,不过,只有v1 - v4有对应的论文,v5目前还没有正式的论文发表。其实,CV界对v5还是抱有很大的质疑声。等v5算法出了论文,咱们再继续解读。】
第二部分:Introduction
作者总结了YOLO v4算法做出的主要贡献,主要是两个方面:
第一:在检测器训练阶段,引入了目标检测方法:Bag-of-Freebies (BoF) 和 Bag-of-Specials (BoS);
第二:针对单个GPU训练,对一些最优算法进行修改,比如:CBN, PAN, SAM等;
第三部分:Related work
这一大段内容,作者主要讲了三个方面的内容,即:目前目标检测领域,主流的一些方法:
第一. 目标检测模型
我们直接用论文中的总结,通用的检测模型基本上包含如下几个主要模块。
第二. 在训练(training)阶段,Bag-of-Freebies (BoF)的应用;
在这部分,作者主要讲了三件事情,分别是:
① 数据增强 data augmentation;
② 语义分布 sementic distribution;
③ 目标函数 objective function;
如图所示(这是我做的思维导图,部分截图):
第三. 在推理(inference)阶段,Bag-of-Specials (BoS)的应用;
在这部分,作者指出通过 plugin modules(插件模型) 和 post-processing methods (后处理方法)能够以很少的推理代价获得目标检测极大的准确性。
如图所示(这是我做的思维导图,部分截图):
第四部分:Methodology
这是论文中最精华的部分,主要包含四部分:1. 网络结构的选择;2. BoF和BoS的选择;3. 额外的提升;4. YOLO v4的构成;
我们一一来看一下每部分:
第一:网络结构的选择,这里用论文中的示例图:
作者通过实验对比,得出两个结论:
1. 在ImageNet的目标分类上,CSPResNext50网络结构优于CSPDarknet53;
2. 在COCO目标检测上,CSPDarknet53网络结构优于CSPResNext50;
最终,作者在YOLO v4中选用了以下几个组件:
① CSPDarknet53作为backbone;
② SPP模块;
③ PANet路径聚合neck;
④ YOLO v3 作为YOLO v4的head;
第二:BoF和BoS的选择
其实,BoF和BoS都是一些tricks,用来改进模型,提升检测或分类的准确性。
在论文中,作者选取了这些tricks,如下图所示:
第三:额外的提升
在论文中,作者为了使设计的检测器适用于单个GPU,做了如下一些修改:
① 修改1:数据增强 Data augmentation
4张不同的图片混合在一起
② 修改2:自对抗训练 self-adversarial training
③ 修改3:CmBN替换了CBN
④ 修改4:修改SAM的spatial-wise attention为point-wise attention,同时,替换PAN的快捷连接为拼接
第四:YOLO v4的构成
① YOLO v4 由以下三部分构成:
Backbone : CSPDarkent53
Nect : SPP, PAN
Head : YOLOv3
② BoF,BoS 与 backbone,detector 的组合
【备注:这是我根据论文总结的图表】
第五部分:Experiments
该阶段,主要是作者做了很多对比实验,来筛选出最优的组件。
第一:实验过程中的超参数设置(自己看论文吧,比较多);
第二:在分类训练上,不同特征的影响
测试内容主要包含三个部分,分别是:
① class label smoothing
② data augmentation, bilateral blurring, MixUp, CutMix and Mosaic
③ activations : Leaky-ReLu, Swish, Mish
第三:在检测训练上,不同特征的影响
这部分主要是BoF和BoS在检测器训练过程中的影响。【这部分内容非常详细,建议看论文】
下图是Bag-of-Specials的消融研究对比结果:
第四:在检测训练上,不同backbones和预训练权重的影响
下图,对比实验结果:
第五:在检测训练上,不同min-batch的影响
作者通过实验发现,如果训练策略中加入了BoF和BoS,那么,mini-batch对检测器的性能没有任何影响。
下图,对比实验结果:
下图,这是我关于Experiments的思维导图(部分截图):
论文中最后的Results和Conclusions这两部分,就是对YOLO v4算法的一个总结。反正,就是说YOLO v4算法非常非常的牛 ~
以下是我详细阅读论文过程中做的思维导图截图(注:暂不公开该思维导图,后续YOLO专题课程中会公开。)
论文下载链接:
https://arxiv.org/pdf/2004.10934.pdf