0前言

在YOLOv4论文中,作者其实就是把当年所有的常用技术罗列了一遍,然后做了一堆消融实验。

1.YOLOV4的网络改进部分

1、主干特征提取网络:DarkNet53 => CSPDarkNet53、使用Mish激活函数

2、特征金字塔:SPP结构,PAN结构

1.1 主干特征提取网络CSPDarkNet53

1.1.1 CSP结构

在YOLOv3中使用的是Darknet53,而在YOLOv4中引入了CSP结构

CSP结构的作用:能够增强CNN的学习能力、移除计算瓶颈、降低显存的使用、加快网络的推理速度

CSPnet结构将原来的残差块的堆叠进行了一个拆分,拆成左右两部分:
主干部分继续进行原来的残差块的堆叠;
另一部分则像一个残差边一样,经过少量处理直接连接到最后。

残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。

在YOLOv4中的CSP模块之前对进行下采样,然后将其输出以此通过两个1x1的卷积层进行降维,在Part1分支上再接上一系列的ResBlock、再通过一个1x1卷积层(即Transition),然后通过concat拼接,最后通过1x1卷积层进行升维

1.1.2 Mish激活函数

YOLOv4将DarknetConv2D的激活函数由LeakyReLU修改成了Mish,卷积块由DarknetConv2D_BN_Leaky变成了DarknetConv2D_BN_Mish。

Mish是光滑的非单调激活函数,可定义为:

f(x) = x・tanh(ς(x))其中, ς(x) = ln(1+e^x),是一个softmax激活函数和。

在YOLOv4中使用Mish函数的原因是它的低成本和它的平滑、非单调、上无界、有下界等特点,与其他常用函数如ReLU和Swish相比,提高了它的性能。

1.1.3 CSPDarknet53网络结构

1.2 特征金字塔结构

1.2.1 SPP结构


对于输入的特征层,依次通过5x5、9x9、13x13的最大池化下采样层,将这三个分支的输出和原输入的分支进行concat拼接,组成SPP结构

SPP结构能够极大地增加感受野,分离出最显著的上下文特征。

1.2.1 PAN结构


PANet一种实例分割算法,能够进行特征的反复提取:

最左则部分为网络的backbone,进行提取特征;
中间部分则在提取的特征层上构建特征金字塔结构(FPN模块),将高层的语义信息融合到底层特征层;
最右侧部分则于FPN相反,将底层的语义信息融合到高层。
中间与右侧共同构成了PANet。

在PANet原论文中,特征层与特征层融合部分采用的是add方法
在YOLOv4中采样的是concat方法,将特征层在深度方向进行拼接,主要是在三个有效特征层上使用了PANet结构。

2.YOLOv4的训练技巧

2.1 Mosaic数据增强

mosaic利用四张图片,分别对四张图片进行翻转、缩放、色域变化等,并且按照四个方向位置摆好,进行图片的组合和框的组合。
Mosaic数据增强能够扩充样本多样性,且在BN计算的时候能够同时计算四张图片的数据。

2.2 CIoU

IoU是比值的概念,对目标物体的scale是不敏感的。然而常用的BBox的回归损失优化和IoU优化不是完全等价的,寻常的IoU无法直接优化没有重叠的部分。

CIOU将目标与anchor之间的距离,重叠率、尺度以及惩罚项都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中发散等问题。而惩罚因子把预测框长宽比拟合目标框的长宽比考虑进去。

2.3 学习率余弦退火衰减

余弦退火衰减法,学习率会先上升再下降,这是退火优化法的思想。

上升的时候使用线性上升,下降的时候模拟cos函数下降。执行多次。

3.YOLOv4的网络结构


YOLOv4网络结构可以分为三部分:CSPDarkNet53特征提取网络、SPP和PANet组成的加强特征提取网络、将提取到的特征转化为预测结果的Yolo Head

主干网络对图片进行特征提取:假设特征提取网络的输入为416x416x3,首先进行Darknet卷积,然后进行四个Resblock_body(本质上是由一系列残差网络构成的大卷积块),特征层的高和宽被不断的被压缩、通道数被扩张,最终只使用最后三个shape的特征层进行下一步的操作,因为其具有更高的语义信息;

SPP和PANet组成的加强特征提取网络:对13x13x1024的特征层进行三次卷积操作,然后接SPP结构(SPP有四个分支,利用不同大小的最大池化核对输入进来的特征层进行最大池化,池化后的结果进行堆叠),再进行三次卷积;

PANet:对三次卷积后的特征层进行上采样(2倍上采样),将上采样后的26x26特征层与在主干网络获取的26x26x512的特征层进行堆叠,然后再进行上采样与52x52x256的特征层进行堆叠,即完成特征金字塔的结构;后面操作与前同理;完成PANet结构后就提取到了很多有效的特征信息。

Yolo Head利用提取到的特征进行结果预测(与yolov3相同)。

参考文献
YOLOv4网络详解
Pytorch搭建YoloV4目标检测平台

YOLOv4网络详解相关推荐

  1. 【YOLO系列】YOLOv5超详细解读(网络详解)

    前言 吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 目录 前言 一.YOLOv5 ...

  2. YOLOv4算法详解

    YOLOv4: Optimal Speed and Accuracy of Object Detection-论文链接-代码链接 目录 1.需求解读 2.YOLOv4算法简介 3.YOLOv4算法详解 ...

  3. ResNet网络详解与keras实现

    ResNet网络详解与keras实现 ResNet网络详解与keras实现 Resnet网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 梯度退化 Residual Lear ...

  4. GoogleNet网络详解与keras实现

    GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现 GoogleNet系列网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 Incepti ...

  5. Linux系统下ifconfig和route配置网络详解

    Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...

  6. EfficientNetV2网络详解

    原论文名称:EfficientNetV2: Smaller Models and Faster Training 论文下载地址:https://arxiv.org/abs/2104.00298 原论文 ...

  7. 深度学习之图像分类(二十五)-- S2MLPv2 网络详解

    深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...

  8. ResNet、ResNeXt网络详解及复现

    网络详解: ResNet网络详解 ResNeXt网络详解 torch复现: import torch.nn as nn import torch''' 对应着18层和34层的残差结构 既要拥有实现部分 ...

  9. MGN网络详解以及代码分析

    MGN网络详解以及代码分析 最近阅读了云从科技最新的关于REID的论文以及相关的博客和代码,算法是基于MGN,关于网络的部分,这里记录一些自己的学习笔记. 以下是我参考的博客和代码的网址 博客: ht ...

最新文章

  1. linux系统时间相关
  2. linux写文件优化,Linux文件系统性能优化
  3. window 日志清除
  4. 进程间通信(6) 邮槽
  5. php isset缺陷 用array_key_exists
  6. Linux内核中读写文件数据的方法
  7. PHP Mysql-创建数据表
  8. 初识jQuery(适合初学者哟.........)
  9. ClickHouse的特性及读写
  10. ASP.NET MVC Pager Helper Extensions
  11. mysql配置主从时报错及处理
  12. live2d动态壁纸android,Live2DViewerEX动态壁纸
  13. 【LED灯屏控制器】国产FPGA之 AG10KSDE176 初探(1)
  14. 5套精美的石器时代游戏官方网页源码
  15. DWM 层 -- 访客 UV 计算
  16. UML用例图中三种关系详解
  17. 【AIOT】3-1 物联网项目必备功能模块
  18. 一些自身工作经历和感悟,随手写的,很乱
  19. 设置CPU频率和CPU运行核心数
  20. Spring IOC refresh()方法——告诉子类刷新内部bean工厂

热门文章

  1. shell统计网卡流量
  2. 可行性研究、需求分析
  3. Android软键盘的全面解析,让你不再怕控件被遮盖
  4. 百度奖学金获得者徐立恒:执着创造价值
  5. 高通Sensor校准
  6. 输入某年某月某日,判断这一天是这一年的第几天?考虑闰年的情况
  7. (翻译)活动日历(Event Calendar)
  8. 已知三角形三边,如何使用Python计算三角形的面积
  9. 执行命令hadoop version出现错误
  10. 联合线程(案例顾客买蛋糕 :使用join()方法)