yolov4论文及技术点总结

YOLOv4: Optimal Speed and Accuracy of Object Detection

 

作者是来自俄罗斯的Alexey大神

论文连接:https://arxiv.org/pdf/2004.10934.pdf

源码:https://github.com/AlexeyAB/darknet

摘要

本文假设通用特征包括:加权残差连接(WRC),跨阶段部分连接(CSP),跨小批量规范化(CmBN),自对抗训练(SAT)和Mish激活。本文使用了新功能:WRC,CSP,CmBN,SAT,误激活,马赛克数据增强,CmBN,DropBlock正则化和CIoU loss。对其中部分功能的结合是在coco数据集上的准确率达到43.5的AP(65.7%的AP50),V100速度65FPS。

 

1. 介绍

本文贡献:

a. 本文算法可以在1080ti或者2080ti的GPU上训练一个超快和超准的目标检测器。

b. 在检测训练期间,验证了最先进的bag-of-freebies和bag-of-specials方法。

c. 本文修改了最先进的方法,使其更加适合单GPU训练,包括:CBN,PAN,SAM等等。

 

2. 相关工作

2.1 目标检测模型

input:Image,Patches,Image Pyramid

backbone:

GPU:vgg,resnet,resnext,densenet,SpineNet,EfficientNet-B0/B7,CSPResNeXt50,CSPDarknet53

CPU:squeezenet,mobilenet,shufflenet等。

neck

additional blocks:SPP,ASPP,RFB,SAM

path-aggregation blocks:FPN,PAN,BiFPN,Nas-FPN,fully-connect FPN,ASFF,SFAM

head

Sparse Prediction(两阶段)

                anchor based:r-cnn,fast-rcnn,faster-rcnn,mask-rcnn,r-fcn,Libra r-cnn。

                anchor free:RepPoints

Dense Prediction(一阶段)

                anchor based:rpn,yolo,ssd,RetinaNet

                anchor free:CenterNet,CornerNet,FCOS,ExtremeNet,MatrixNet。

 

2.2 Bag of freebies

bag of freebias模块主要目的是通过提高训练成本,不增加推理成本的条件下提高检测的鲁棒性和准确率。

传统的图像数据增强有:亮度,对比度,分辨率,饱和度,噪声,图像形变,翻转,剪切,旋转,缩放等等。

 

图像数据增强和特征图数据增强

图像数据增强

        cutout,mixup,cutmix,Mosaic

特征图数据增强

        dropout,dropblock,dropconnect等等,以及使用GAN对图像增强。

 

样本不均衡问题

两阶段:多使用难例挖掘的方法解决样本不平衡的问题

一阶段:多使用focal loss的方法解决样本不平衡的问题

 

目标框检测中常用的loss函数

L1 loss,L2 loss,MSE,RMSE,Smooth L1 loss,IoU Loss,GIoU Loss,DIoU Loss,CIoU Loss。

 

2.3 Bag of specials

bag of specials模块主要目的增加少量的推理成本,但是能够显著提高目标检测的准确度。主要包括插件模块和后处理方法。

 

插件模块:主要增强模型中的某些属性

扩大接收域,引入注意力机制,增强特征集成能力等等。

 

扩大接收域方法:

SPP,ASPP,RFB

引入注意力机制:

channel-wise attention(代表SENet),point-wise attention(代表SAM)

特征集成:使用Skip-connect,hyper-column去融合低维物理特征和高维语义特征。

FPN,SFAM,ASFF,BiFPN,PANet,fully-connect FPN,Nas-FPN等

激活函数:

tanh函数,sigmod函数,ReLU函数,LReLU,PReLU,ReLU6,SELU,Swish,hard-Swish,Mish等

post-processing mothed:

NMS,Soft-NMS,DIoU NMS

 

3. Methodology

两个实时的神经网络:

GPU:CSPResNeXt50,CSPDarknet53

VPU:使用组卷积,EfficientNet-lite ,MixNet,GhostNet,MobileNetV3

 

3.1 selection of architecture

本文目的是找到一个网络分辨率,卷积层数量,参数量之间的平衡。

对比两个backbone:CSDResNeXt50,CSPDarknet53

对比多个block用以增加感受野:FPN,PAN,ASFF,BiFPN

 

不同的模型,分类效果好,检测效果不一定好,检测器需满足一下要求:

1. 更大的输入网络尺寸,能够检测小尺寸目标

2. 更多的网络层数,能够以更高的感受野覆盖输入网络的尺寸

3. 更多的参数,能够有更大的能力在单幅图像上检测不同尺寸的多个目标

 

感受野对于不同尺寸的影响,总结为如下方面:

1. Up to the object size,允许视角覆盖整个目标

2. Up to network size,允许覆盖目标周边的上下文信息

3. Exceeding the network size,增加图像点和最终激活之间的连接数量

 

本文使用了SPP,PANet,BOF等结合yolov3,形成了本文yolov4。

 

3.2 selection of BoF and BoS

为了改进目标检测的训练,CNN通常使用一下技巧:

Activations

ReLU,Leaky-ReLU,parametric-ReLU,ReLU6,SELU,Swish,Mish

Bounding box regression loss

MSE, IoU, GIoU, DIoU, CIoU,

Data augmentation

CutOut, MixUp, CutMix

Regularization method

Dropout, DropPath, Spatial DropOut, DropBlock

Skip-connections

Residual connections, Weighted residual connections, Multi-input weighted residual connections, Cross stage partial connections(CSP)

 

 

PReLU和SELU比较难训练,ReLU6又是针对量化网络设计,所以被舍弃,本文使用了dropBlock。

 

3.3 Additional improvements

为了使得设计的检测器能够适应单GPU训练,进行了额外的设计和提高。

1. 新的数据增强算法,Self-Adversarial Training(SAT)

2. 选择最佳超参数,genetic algorithms(遗传算法)

3. 修改已存在的方法,使其更加有效地满足训练和检测,修改了SAM,PAN,CmBN

 

 

 

3.4 YOLOV4

YOLOV4组成如下:

backbone:CSPDarknet53

Neck:SPP,PAN

Head:YOLOv3

 

YOLOV4使用了:

BOF for backbone:CutMix,Mosaic data augmentation,DropBlock regularization,Class label smoothing

BOS for backbone:Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)

BOF for detector:CIoU-loss, CmBN, DropBlock regularization, Mosaic data augmentation, Self-Adversarial Training, Eliminate grid sensitivity, Using multiple anchors for a single ground truth, Cosine annealing scheduler , Optimal hyperparameters, Random training shapes

BOS for detector:Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS

 

4. Experiment

测试分类数据集:mageNet (ILSVRC 2012 val) dataset

测试检测数据集:MS COCO (test-dev 2017) dataset

 

4.1 Experimental setup

 

4.2 Influence of different features on Classifier training

 

从实验中可以发现单纯分类来说,CSPResNeXt-50效果好于CSPDarknet-53。

 

4.3 Influence of different features on Detector training

 

注:具体表中第一行代表什么可从原论文中查看。

 

 

4.4 Influence of different backbones and pretrained weightings on Detector training

 

从实验中可以发现检测角度来说,CSPDarknet-53的效果好于CSPResNeXt-50。

 

4.5 Influence of different mini-batch size on Detector training

 

从表中发现,大的mini-batch对最终结果有一定的益处。

 

 

Figure 8: Comparison of the speed and accuracy of different object detectors. (Some articles stated the FPS of their detectors for only one of the GPUs: Maxwell/Pascal/Volta)

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值