原文链接http://arxiv.org/abs/2004.10934

整体框架

      

Bag of Freebies(BoF) & Bag  of Specials (BoS)

  Bag of Freebies(BoF)  指那些能够提高精度而不增加推断时间的技术。比如数据增广的方法图像几何变换、CutOut、grid mask等,网络正则化的方法DropOut、DropBlock等,类别不平衡的处理方法、难例挖掘方法、损失函数的设计等。

  Bag  of Specials (BoS)是指那些增加稍许推断代价,但可以提高模型精度的方法,比如增大模型感受野的SPP、ASPP、RFB等,引入注意力机制Squeeze-and-Excitation (SE) 、Spatial Attention Module (SAM)等 ,特征集成方法SFAM , ASFF , BiFPN等,改进的激活函数Swish、Mish等,或者是后处理方法如soft NMS、DIoU NMS等。

Backbone: CSPDarknet53

source: CSPNet: A new backbone that can enhance learning capability of cnn论文;

CSPNet提出主要是为了解决三个问题: a.增强CNN的学习能力,能够在轻量化的同时保持准确性。

                  b.降低计算瓶颈。

                  c.降低内存成本。

CSP 在 DenseNet的使用

Neck: SPP(Spatial pyramid pooling) 、PANet(Path Aggregation Network)

source:

    SPP:Spatial pyramid pooling in deep convolutional networks for visual recognition。

       PANet: Path Aggregation Network for Instance Segmentation .(实力分割中提出)

PANet 网络框架

  关键:更好的利用特征融合 1.为了提高低层信息的利用率,加快低层信息的传播效率,提出了Bottom-up Path Augmentation; 2.通常FPN在多层进行选anchors时,根据anchors的大小,将其分配到对应的层上进行分层选取。这样做很高效,但同时也不能充分利用信息了,提出了Adaptive Feature Pooling。 3.为了提高mask的生成质量,将卷积-上采样和全连接层进行融合,提出了Fully-connected Fusion。

CutMix and Mosaic data augmentation, DropBlock regularization, Class label smoothing

source:

    CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features (开源)

Mixup:将随机的两张样本按比例混合,分类的结果按比例分配(个人看法:如果是使用一个随机数来控制权重,可能AP会增);

Cutout:随机的将样本中的部分区域cut掉,并且填充0像素值,分类的结果不变;

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

Mosaic data augmentation:可以见论文给的示例图,提出了一种混合四幅训练图像的数据增强方法。

DropBlock regularization(来自知乎):

                                 各种Dropout 组合

Mish activation, Cross-stage partial connections (CSP), Multi- input weighted residual connections (MiWRC)

source:

    Mish: A Self Regularized Non-Monotonic Neural Activation Function论文(开源)

激活函数公式:Mish=x * tanh(ln(1+e^x))

  描述:x轴无边界(即正值可以达到任何高度)避免了由于封顶而导致的饱和。理论上对负值的轻微允许允许更好的梯度流,而不是像ReLU中那样的硬零边界。最后,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

Mish 激活函数的曲线

CSP、MiWRC 都是一种让网络更好训练的跳接方式。

CIoU-loss, CmBN

发展历程: IoU loss -> Giou loss -> Diou loss & Cious loss

主要依据:geometric factors:overlap area, central point distance and aspect ratio

IOU loss :依据交并比的loss, 不做介绍了。

Giou loss:

                                  GIOU核心算法

Diou loss

切入点:

第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。

第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。

R(B, Bgt)为预测框与真实框的惩罚项。

b, bgt分别为框的中心,P^2即两个点的欧式距离,c^2为包含两个框的最小框的对角线长度。

 Ciou loss 

在Diou loss 的基础上考虑了—— the consistency of aspect ratio   即公式中的 ν参数,α 为权衡参数。

CmBN

CMBN示意图

Self-Adversarial Training (SAT)

  SAT 为一种新型数据增强方式。在第一阶段,神经网络改变原始图像而不是网络权值。通过这种方式,神经网络对其自身进行一种对抗式的攻击,改变原始图像,制造图像上没有目标的假象。在第二阶段,训练神经网络对修改后的图像进行正常的目标检测。

注意力机制——SAM、PAN

所做改进: 将SAM从空间注意力机制修改为点上的注意力机制,并将PAN的相加模块改为级联。

读完结论

一系列堆料,结果建立在好的backbone 上面,好的backbone 再加入一系列训练提高方式, 必然长点。

YOLOV4所用到的一些tricks的更多相关文章

  1. YOLOv3和YOLOv4长篇核心综述(下)

    YOLOv3和YOLOv4长篇核心综述(下) 4.3.3 Neck创新 在目标检测领域,为了更好的提取融合特征,通常在Backbone和输出层,会插入一些层,这个部分称为Neck.相当于目标检测网络的 ...

  2. YOLOv3和YOLOv4长篇核心综述(上)

    YOLOv3和YOLOv4长篇核心综述(上) 对目标检测算法会经常使用和关注,比如Yolov3.Yolov4算法. 实际项目进行目标检测任务,比如人脸识别.多目标追踪.REID.客流统计等项目.因此目 ...

  3. Yolov3&Yolov4网络结构与源码分析

    Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 1. 论 ...

  4. YOLO-v4 口罩识别

    YOLO-v4 口罩识别 一.YOLO-v4概念 如果想要了解和认识yolo-v4的基本概念,首先要提的就是它的基础版本yolo-v1,对于yolo来说,最经典的算是yolo-v3.如果想要了解它的由 ...

  5. YOLO-V4 实现口罩识别(附加数据、数据批量处理程序)

    一.YOLO-v4概念 如果想要了解和认识yolo-v4的基本概念,首先要提的就是它的基础版本yolo-v1,对于yolo来说,最经典的算是yolo-v3.如果想要了解它的由来和历史的话,可以自行搜索 ...

  6. 如何使用 Yolov4 训练人脸口罩检测模型

    前言 疫情当下,出入医院等公共场所都被要求佩戴口罩.这篇博客将会介绍如何使用 Yolov4,训练一个人脸口罩检测模型(使用 Yolov4 的原因是目前只复现到了 v4 ),代码地址为 https:// ...

  7. testng 教程之使用参数的一些tricks配合使用reportng

    前两次的总结:testng annotation生命周期 http://www.cnblogs.com/tobecrazy/p/4579414.html testng.xml的使用和基本配置http: ...

  8. (转) How to Train a GAN? Tips and tricks to make GANs work

    How to Train a GAN? Tips and tricks to make GANs work 转自:https://github.com/soumith/ganhacks While r ...

  9. 《所用到的AJAX技术基础》

    来自百度网页,w3cshool网页:AJAX = Asychronous JavaScript and XML,翻译成中文为:异步的JavaScript XML. 异步的意思就是不重新加载整个页面,后 ...

随机推荐

  1. stand up meeting 12-7

    weekend updates: 1.答题界面和结果界面的跳转和数据传输已全部完成. 2.答题界面完成简单的getRankingData API结果展示,答题时间,错误数目和错题题目的展示,点击题目可 ...

  2. Some Modern Softwares' drawbacks: User experience 12/29/2015

    In the nowadays, there are many APP in the PC or smart Phone. Some of them can't meet the customers' ...

  3. Personal Photo Experience Proposal

      Background:             Our smart phones are the most widely-used cameras now, more and more photo ...

  4. A Bug's Life POJ - 2492 (种类或带权并查集)

    这个题目的写法有很多,用二分图染色也可以写,思路很好想,这里我们用关于并查集的两种写法来做. 题目大意:输入x,y表示x和y交配,然后判断是否有同性恋. 1 带权并查集: 我们可以用边的权值来表示一种 ...

  5. python爬虫实例,一小时上手爬取淘宝评论(附代码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 1 明确目的 通过访问天猫的网站,先搜索对应的商品,然后爬取它的评论数据. ...

  6. 处理数字的类 —— Math类 、 Random类 、 BigDecimal类 与 BigInteger类

    在我们学习C语言时,我们处理数据时要调用很多函数,那么,Java也有很多的方法可以来处理数值的类. 那么,在本篇博文中,本人就来讲解三个用于处理数值的类 -- Math类 . Random类 与 Bi ...

  7. 【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection

    论文地址:https://arxiv.org/abs/2004.10934v1 github地址:https://github.com/AlexeyAB/darknet 摘要: 有很多特征可以提高卷积 ...

  8. JDBC中的时间处理

    MySQL中常用的时间类有: java.sql.Date, Time, Timestamp 用的比较多的是ava.sql.Date和TimeStamp: 先看表结构 CREATE TABLE `t_u ...

  9. Java IO 流 -- 随机读取和写入流 RandomAccessFile (文件分割和合并)

    RandomAccessFile 相对其它流多了一个seek() 方法指定指针的偏移量. 1.指定起始位置读取剩余内容 public static void test01() throws IOExc ...

  10. PHP中的11个魔术方法

    1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property )       当调用一个未定义的属性时访问此方法__set( $property ...