YOLOv4-学习笔记

1.论文

YOLOv4: 目标检测最优速度和精度

2.源码

AB大神源码

3.内容

在这里插入图片描述

3.1介绍

相比于Joe Redmon的最终作品YOLOv3,Alexey Bochkovskiy为一作的YOLOv4确实取得了非常明显的速度和准确率的提升。有人认为YOLOv4的提升更多的还是一些工程上的奇技淫巧,将最近几年内提出的用于其他模型的方法结合YOLO进行融汇贯通(单这份工作就很值得敬佩)。从数据增强,模型结构和训练方法等都进行了大量的改进,通过本文也可以了解到最近一些年提出的工程上的最佳实践(论文读下来收货颇丰)。

3.2 论文内容

3.2.1一般目标检测结构

在这里插入图片描述
在这里插入图片描述

3.2.2 BOF

We call these methods that only change the training strategy or only increase the training cost as “bag of freebies.
1.数据增强

 1. 像素级调整:调整样本的光线、亮度、饱和度、对比度等,随机加入噪声,也会进行缩放,裁剪、旋转和翻转等操作。
 2. 逻辑性调整:模拟现实中的遮挡等,采用随机擦除(random erase)和CutOut等方法,比如随机选择图片的一个举行区域,全部置白或者置黑等(表现在模型的卷积层中,即针对feature map则体现为DropOut(失活一部分神经元)、DropConnect(失活一部分连接)和DropBlock(失活一整块神经元区域))。
 3. 结合多张图片:一种是融合(MixUp),例如两张图片各占比%50融合为一张,再通过比例去确定训练样本的标签;另一种是剪切合并(CutMix),将一个图像的部分剪切下来覆盖到另一张图像上。
 4. 图像风格迁移:风格迁移GAN(Style transfer GAN),通过生成对抗网络训练,能够将训练样本之间进行不同风格迁移,生成多样的训练数据。
2.解决样本分布失衡
调整不平衡的数据分布:
难负样本挖掘(hard negative example mining)和在线困难负样本挖掘(online hard negative example mining),
即把错误分类的负样本再次送入分类器进行训练(就像学生做错题集,错的题目多学才能提高能力),
上述两方法只对两阶段目标检测算法有效,因此YOLO不适用。
适用于一阶段目标检测平衡样本分布的方法是使用focal loss来平衡样本数量,该损失函数是对二分类交叉熵损失函数的改进。
3.标签改进
使用软标签代替硬标签(one-hot):
标签平滑(label smoothing)即用“概率”替换“是非”。
4.新的BBox检测目标函数
CIoU损失函数:传统的IoU损失函数可能会由于预测区域和实际区域之间没有交集而产生梯度消失问题,
通过在传统的IoU损失函数基础上做一些改进来避免梯度消失问题。

3.2.3 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”.
 1. 匹配多尺度图像输入:提出了SPP,ASPP,RFP等分割特征图的方法提升模型精度(不适用于全连接层的模型),SPP在YOLOv3-608中被使用,RFB在SSD中被使用。
 2. 注意力机制:又被分为channel-wise attention(代表为Squeeze-and-Excitation(SE))和point-wise attention(代表为Spatial Attention Module (SAM)),YOLOv4选择了后者,因为其开销更小。
 3. 特征整合:最初的特征整合技术包括跨层连接(skip connection)和hyper-column,将底层的物理特征整合为高层的语义特征。因为FPN的流行,更多整合特征金字塔的轻量级模型被提出,例如SFAM,ASFF,BiFPN,最终目标还是实现多尺度的检测任务。 
 4. 激活函数改进:ReLU有效改善了tanh和sigmoid的梯度消失问题,还有很多变种LReLU,PReLU,ReLU6,SELU,Swish,hard-sWish和Mish。其中Swish和Mish都是连续可微的激活函数。
 5. 后处理方法:NMS能够减少BBox对同一目标物体不好的预测框。使用DIoU-NMS通过计算预测的置信度得分和概率,对同一目标物体的预测框进行排序输出最好的一个。

3.2.4 一般卷积网络的选择

在这里插入图片描述

3.2.5 YOLOv4的选择

  1. YOLOv4的模型结构:
Backbone:CSPDarknet53
Neck:SPP,PAN
Head:YOLOv3
  1. 使用的BoF和BoS:

 1. 对于backbone使用的BoF:

CutMix
Mosaic data augmentation
DropBlock regularization
Class label smoothing

 2. 对于backbone使用的BoS:

Mish activation
Cross-stage partial connections (CSP)
Multiinput weighted residual connections (MiWRC)

 1. 对于detector使用的BoF:

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 hyper-parameters
Random taining Shapes

 2. 对于detector使用的BoS:

Mish activation
SPP-block
SAM-block
PAN path-aggregation block
DIoU-NMS。

3.2.6 注释

  1. CSPDarknet53即是对Darknet53应用跨阶段局部连接技术进行的模型改进;

  2. SPP:(Spatial Pyramid Pooling)空间金字塔池化
    SPP详解

  3. PAN:path-aggregation block
    (PANet,旨在提升基于候选区域的实例分割框架内的信息流传播,具体来说,通过自上而下的路径增强在较低层中的定位信息流,缩短底层特征和高层特征之间的信息路径,从而增强整个特征层次)
    Path Aggregation Network 论文解析

  4. CutMix:就是将一部分区域cut掉但不填充0像素而是随机填充训练集中的其他数据的区域像素值,分类结果按一定的比例分配;

  5. Mosaic data augmentation:马赛克图像增强

  6. DropBlock regularization块正则

  7. Class label smoothing标签平滑

  8. Mish activation:Mish=x * tanh(ln(1+e^x))

  9. Cross-stage partial connections (CSP)跨阶段部分连接在这里插入图片描述

  10. Multiinput weighted residual connections (MiWRC)多输入加权残差连接

  11. CIoU-loss:进一步增加预测box和标注box之间的重叠区域,然后最小化他们之间的中心点距离,保持box的长宽比一致

  12. CmBN:只在单个batch中的小mini-batch之间统计信息,CBN属于利用不同的iter数据来变相扩大batchsize从而改进模型的效果

  13. Mosaic data augmentation:同上

  14. self-Adversarial Training:SAT,有针对性的数据增强。

  15. Eliminate grid sensitivity在这里插入图片描述

坐标预测x,y值会经过一个逻辑回归,将预测值拉倒0-1范围,所以当预测的坐标值在每一个grid的边界的时候,需要预测一个非常大的值,为了缓解这种情况,需要在激活函数前面乘上一个大于1的系数。
  1. Using multiple anchors for a single ground truth:单格多锚

  2. Cosine annealing scheduler:余弦退火模拟学习率余弦退火CosineAnnealing

  3. Optimal hyper-parameters:借助遗传算法选择最优超参数

  4. Random taining Shapes

  5. Mish activation:同上

  6. SPP-block:同上

  7. SAM-block在这里插入图片描述

  8. PAN path-aggregation block:同上

  9. DIoU-NMS:包含了两个box之间中心点之间的距离,在最后做NMS的时候,也可以将box之间的中心点距离加入到计算中。实验结果显示对于遮挡情况鲁棒性非常强

4.refer 文章

yoloV4文章精读
YOLOv4论文中文翻译

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:原理与源码解析》 【为什么要学习这门课】 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的源码程序文件。【相关课程】 除本课程《Windows版YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《Windows版YOLOv4目标检测实战:训练自己的数据集》《Windows版YOLOv4-Tiny目标检测实战:训练自己的数据集》《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》《Windows版YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值