Focus层
操作类似于空洞卷积,将w-h平面上的信息转换到通道维度,再通过卷积的方式提取不同特征。采用Focus层的目的应该是下采样(下采样在神经网络中主要是为了减少参数量达到降维的作用,同时还能增加局部感受野),但是相比于使用使用步长为2的卷积层或者池化层,Focus层能够有效减少下采样带来的信息损失,同时减少计算量
空洞卷积
空洞卷积在标准卷积中注入了空洞,增加了感受野,空洞卷积比普通卷积多了个超参数称为dilation rate,指的是kernel的间隔数量。普通卷积的dilation rate为1。
普通卷积
空洞卷积
空洞卷积在不做池化损失信息的情况下,加大了感受野,使得内部数据结构得到保留。
SPP结构
1.为什么要引入SPP?
因为卷积层和池化层是滑动窗操作,可以接受任意大小的图片输入,而全连接层是向量与矩阵乘积操作,需要固定大小的输入(参数的个数固定),因此需要固定全连接层的前一层的尺寸,若无SPP则需要固定输入图片的大小来保证全连接层的参数固定,为了适应输入任意尺寸的图片所以引入SPP。
2.SPP的构成
SPP层分为1x1,2x2,4x4三个pooling结构,对每个输入都作max pooling操作
3.SPP说明
SPP是接在最后一层卷积层之后,替换原来的池化层,以便输入给全连接层的特征个数保持固定。SPP是对最后一层卷积层的特征图做不同的分割操作。
SPPF结构
SPPF结构说明
SPPF是在SPP结构基础之上稍加改进的,它每个池化层都对上一个操作完成的max pooling进行计算,所以它的计算量相比较与SPP小了很多,模型速度得到提升。
C3结构
在新版yolov5中,作者将BottleneckCSP(瓶颈层)模块转变为了C3模块,其结构作用基本相同均为CSP架构。 C3相对于BottleneckCSP模块不同的是,经历过残差输出后的Conv模块被去掉了,concat后的标准卷积模块中的激活函数也由LeakyRelu变为了SiLU。
SiLU是Sigmoid和ReLU的改进版。SiLU具备无上界有下界、平滑、非单调的特性。SiLU在深层模型上的效果优于 ReLU。可以看做是平滑的ReLU激活函数。
Bottleneck模块
一个1×1的卷积后接一个3×3的卷积,其中1×1的卷积将通道数减半,3×3的卷积将通道数加倍,然后加上输入(注意这里是add操作,不是concat操作)。所以经过Bottleneck模块之后输入大小是不会发生改变的。
BottleneckCSP模块
CSP将输入数据分为两个部分,一个部分正常通过网络,另一个直接concat到block的输出
C2f结构
C2f模块参考了C3模块以及ELAN的思想进行的设计,让YOLOv8可以在保证轻量化的同时获得更加丰富的梯度流信息。
ELAN
ELAN模块是一个高效的网络结构,它通过控制最短和最长的梯度路径,使网络能够学习到更多的特征,并且具有更强的鲁棒性。