YOLOV4-整体理论知识-pytorch

本文详细介绍了YOLOv4的网络架构,包括backbone的CBM和CSPX子模块,neck的CBL、SPP和上采样层,以及head的conv层和yolo-decode过程。特别地,CBM由conv、BN和Mish激活函数构成,CSPX结合了CBM和Res units。SPP层应用了最大池化和拼接操作。最后,yolo-decode计算预测框的中心点、宽高及概率。
摘要由CSDN通过智能技术生成

1.Yolov4整体网络架构

在这里插入图片描述
网络整体由三部分组成backbone、neck、head部分,注意蓝色卷积是属于head部分(但在网络实现时往往和neck一起定义,简便起见)。

1.1backbone模块

backbone部分包含CBM、CSP两个子模块。CBM表示Conv+Normalization+Mish结构,CSP表示CBM+ResUnit+concat组成,输入(608,608,3),输出(76,76,256)、(38,38,512)、(19,19,1024),具体如下:

1.1.1CBM子模块

在这里插入图片描述
CBM是backbone中的基础模块,由基本的单层卷积层conv、单层BatchNormalization和一个Mish激活函数层组成。Mish激活函数公式如下:
f ( x ) = x tanh ⁡ ( log ⁡ ( 1 + e x ) ) (1) \bm{f(x)=x\tanh(\log(1+e^{x}))\tag{1}} f(x)=xtanh(log(1+ex))(1)

注意: pytorch并未实现Mish激活函数的API调用,因此需要自己定义使用,代码如下:

class Mish(nn.Module):
    def __init__(self):
        super(Mish, self).__init__()

    def forward(self, x):
        return x * torch.tanh(F.softplus(x))

1.1.2CSPX子模块

在这里插入图片描述
注意:CSPX其中的X表示下分路两个CBM中间残差单元(Res unit)的个数
in : 表示上一个网络子模块的输出,该输出走向两个分路:

  • 下分路为CBM、Res unit、CBM
  • 上分路为一个CBM子模块
  • 上下分路输出进行concat

concat: 上下分路采用concat堆叠到一起,例如上路输出 ( 152 , 152 , 282 ) (152,152,282) (152,152,282)、下路输出 ( 152 , 152 , 318 ) (152,152,318) (152,152,318)concat后变为 ( 152 , 152 , 600 ) (152,152,600) (152,152,600)
CBM: 同上1.1.1
Res unit:
在这里插入图片描述
Res unit由两个CBL组成的上分路和作为下分路的原输入进行add操作,例如上路输出 ( 152 , 152 , 282 ) (152,152,282) (152,152,282)、下路输出 ( 152 , 152 , 318 ) (152,152,318) (152,152,318),各通道对应位置元素直接相加(add),维度还是 ( 152 , 152 , 318 ) (152,152,318) (152,152,318)
CBL:由基本的单层卷积层conv、单层BatchNormalization和一个Leakyrelu激活函数层组成。Leakyrelu激活函数公式如下:
f ( x ) = { z , i f ( z > 0 ) a z , i f ( z ≦ 0 ) (2) \bm{f(x)=\left\{\begin{aligned}&z, &if(z>0)\\ &az, &if(z\leqq0)\end{aligned}\right.\tag{2}} f(x)={ z,az,if(z>0)if(z0)(2)
在这里插入图片描述

1.2neck模块

neck部分包含CBL、SPP以及上采样三个子模块。CBL表示Conv+BatchNormalization+LeakyRelu结构
SPP表示一个特征图经过3个最大池化+一个直连,最后通过拼接得到输出。
上采样层输入(608,608,3),输出(76,76,256)、(38,38,512)、(19,19,1024),具体如下:

1.2.1CBL层

CBL是由基本的单层卷积层conv、单层BatchNormalization和一个Leakyrelu激活函数层组成。Leakyrelu激活函数公式如下:
f ( x ) = { z , i f ( z > 0 ) a z , i f ( z ≦ 0 ) (2) \bm{f(x)=\left\{\begin{aligned}&z, &if(z>0)\\ &az, &if(z\leqq0)\end{aligned}\right.\tag{2}} f(x)={

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值