YOLOv4网络详解
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网络详解相关推荐
- 【YOLO系列】YOLOv5超详细解读(网络详解)
前言 吼吼!终于来到了YOLOv5啦! 首先,一个热知识:YOLOv5没有发表正式论文哦~ 为什么呢?可能YOLOv5项目的作者Glenn Jocher还在吃帽子吧,hh 目录 前言 一.YOLOv5 ...
- YOLOv4算法详解
YOLOv4: Optimal Speed and Accuracy of Object Detection-论文链接-代码链接 目录 1.需求解读 2.YOLOv4算法简介 3.YOLOv4算法详解 ...
- ResNet网络详解与keras实现
ResNet网络详解与keras实现 ResNet网络详解与keras实现 Resnet网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 梯度退化 Residual Lear ...
- GoogleNet网络详解与keras实现
GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现 GoogleNet系列网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 Incepti ...
- Linux系统下ifconfig和route配置网络详解
Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...
- EfficientNetV2网络详解
原论文名称:EfficientNetV2: Smaller Models and Faster Training 论文下载地址:https://arxiv.org/abs/2104.00298 原论文 ...
- 深度学习之图像分类(二十五)-- S2MLPv2 网络详解
深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...
- ResNet、ResNeXt网络详解及复现
网络详解: ResNet网络详解 ResNeXt网络详解 torch复现: import torch.nn as nn import torch''' 对应着18层和34层的残差结构 既要拥有实现部分 ...
- MGN网络详解以及代码分析
MGN网络详解以及代码分析 最近阅读了云从科技最新的关于REID的论文以及相关的博客和代码,算法是基于MGN,关于网络的部分,这里记录一些自己的学习笔记. 以下是我参考的博客和代码的网址 博客: ht ...
最新文章
- linux系统时间相关
- linux写文件优化,Linux文件系统性能优化
- window 日志清除
- 进程间通信(6) 邮槽
- php isset缺陷 用array_key_exists
- Linux内核中读写文件数据的方法
- PHP Mysql-创建数据表
- 初识jQuery(适合初学者哟.........)
- ClickHouse的特性及读写
- ASP.NET MVC Pager Helper Extensions
- mysql配置主从时报错及处理
- live2d动态壁纸android,Live2DViewerEX动态壁纸
- 【LED灯屏控制器】国产FPGA之 AG10KSDE176 初探(1)
- 5套精美的石器时代游戏官方网页源码
- DWM 层 -- 访客 UV 计算
- UML用例图中三种关系详解
- 【AIOT】3-1 物联网项目必备功能模块
- 一些自身工作经历和感悟,随手写的,很乱
- 设置CPU频率和CPU运行核心数
- Spring IOC refresh()方法——告诉子类刷新内部bean工厂