SPPF 在yolov4的spp结构上新增加了csp结构,实现进一步的特征融合。 classSPPF(nn.Module):def__init__(self,in_channels:int,out_channels:int,k:Tuple[int,int,int]=(5,9,13)):""":param in_channels::param out_channels::param k:"""super(SPPF,self).__init__()c_=in_channels//2self.cv...
用cat连接这些采样图,生成通道数为12的特征图# return self.conv(self.contract(x)) 1.4 CSP结构 yolo v4 与yolov4不同点在于,yolov4中只有主干网络使用CSP结构,而在yolov5中设计了两种CSP结构,CSP1_X应用于主干网络,CSP2_X结构应用于Neck中。 yolo v5 在neck部分,v4和v5中一样都采用FPN+PAN结构,v4的neck...
如上图,CSP1_X应用于backbone主干网络部分,输入输出的特征图shape不变;backbone是较深的网络,增加残差结构可以增加层与层之间反向传播的梯度值,避免因为加深而带来的梯度消失,从而可以提取到更细粒度的特征并且不用担心网络退化。 图3 CSP2_X主要应用在Neck部分,因为网络没那么深,去掉残差可以减少计算量。 最原始的...
在Backbone部分,YOLOv5采用了新的CSPDarknet53结构,它基于Darknet53构建,添加了Cross-Stage Partial(CSP)策略。YOLOv5的Neck设计采用了CSP-PAN和较快的SPP块(SPPF)。输出是通过使用YOLOv3的Head结构生成的。 YOLOv5l的结构如图2所示,其中CSPDarknet53包含C3块,这是CSP融合模块。CSP策略将基础层的特征图分成两部分...
YOLOv5s的CSP结构是将原输入分成两个分支,分别进行卷积操作使得通道数减半,然后一个分支进行Bottleneck * N操作,然后concat两个分支,使得BottlenneckCSP的输入与输出是一样的大小,这样是为了让模型学习到更多的特征。 YOLOv5中的CSP有两种设计,分别为CSP1_X结构和CSP2_X结构。
yolov5主要分为输入端,backbone,Neck,和head(prediction)。backbone是New CSP-Darknet53。Neck层为SPFF和New CSP-PAN。Head层为Yolov3 head。 yolov5 6.0版本的主要架构如下图所示: 从整体结构图中,我们可以看到Backbone,neck和head由不同的blocks构成,下面是对于这三个部分,逐一介绍各个blocks。
总结构框架: 下面逐一解析: 1)Backbone 先代码,有个大概脉络: # YOLOv5 backbone backbone: # [from, number, module, args] [[-1, 1, Focus, [64, 3]], # 0-P1/2 [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 [-1, 3, BottleneckCSP, [128]], ...
YOLOv5网络结构 部分二:Backbone骨干网络 Backbone骨干网络主要作用是提取图片的特征,并不断缩小特征图,Backbone包含了CBL模块、Focus模块、CSP模块和SPP模块。 (1)CBL模块 CBL为标准卷积模块,包括普通卷积层Conv、批量归一化层BN和LeakyReLU激活函数层,如下图所示: ...
YOLOv5l的结构如图2所示,其中CSPDarknet53包含C3块,这是CSP融合模块。CSP策略将基础层的特征图分成两部分,然后通过Cross-Stage层次结构合并它们。因此,C3模块可以有效地处理冗余的梯度,同时提高残差和稠密块之间信息传递的效率。C3是BottleNeckCSP的简化版本,目前用于最新的YOLOv5变体。