system: [SYSTEM]

user: 3. 杂草幼苗识别模型 3.1. AlexNet AlexNet [ 13 ] 是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后，更多的更深的神经网络被提出，比如优秀的vgg， GoogLeNet。 AlexNet [ 11 ] 成功使用ReLU作为CNN的激活函数，并验证其效果在较深的网络超过了Sigmoid，成功解决了Sigmoid在网络较深时的梯度弥散问题。训练时使用Dropout随机忽略一部分神经元，以避免模型过拟合。Dropout虽有单独的论文论述，但是AlexNet将其实用化，通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout [ 13 ]。在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化，AlexNet全部使用最大池化，避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小，这样池化层的输出之间会有重叠和覆盖，提升了特征的丰富性。除此之外，提出了LRN层，对局部神经元的活动创建竞争机制，使得其中响应比较大的值变得相对更大，并抑制其他反馈较小的神经元，增强了模型的泛化能力。 AlexNet [ 11 ] 主要由5个卷积层和三个全连接层组成，其中3个卷积层进行了最大池化。其概述图见图2。 图2. AlexNet概述图 3.2. 多尺度并行融合 在传统的CNN网络结构中，通常是由卷积层和池化层交替依次连接构成，对图像逐层进行特征提取和降维，这种结构特征提取比较单一，如果想要提升性能，只能通过改变卷积核大小或者提高网络层数，这会消耗大量的计算资源和造成过拟合等问题。在一系列Inception [ 14 ] 中都表明引入最大池化表现效果比较好，且不会增加额外的参数量。因此，该文采用一个最大池化和两个不同尺度的卷积核构成并行结构对上层特征图进行特征特提取，之后将三个通道输出的特征信息进行融合。 如图3和图4所示，在图3中，上层输入只经过一层卷积层，比较单一，不易进行修改，而在图4中，上层输入经过不同大小的卷积核，不仅能够提取不同的特征，而且能够根据需求对卷积核进行不同的组合，更加灵活，使用较小的卷积核也不会增加额外的参数量。 图3. 传统卷积 图4. 多尺度融合卷积 3.3. 深度可分离卷积 深度可分离卷积 [ 15 ] 分为逐通道卷积和逐点卷积两个部分。逐通道卷积即一个卷积核负责一个通道，一个通道只被一个卷积核卷积。而逐点卷积的运算与常规卷积非常相似，它的卷积核为 1 × 1 × M ，M为上一层通道数。所以这里的卷积运算会将上一步的map在深度方向上进行加权组合，生成新的Feature map。 对于一个尺寸为 N × N × 3 × M 的常规卷积，在深度可分离卷积中的参数量为 N × N × 3 + 1 × 1 × 3 × M ，那么它与常规卷积的参数量之比为 1 / M + 1 / N × N 。由此可见，深度可分离卷积可有效的减少参数量，对于模型的轻量化有着较大的帮助。 3.4. SE (Squeeze-and-Excitation)模块 该模块的主要功能是对各个通道进行权重的分配，帮助网络把重要的信息学习到。该模块主要分为Squeeze、Excitation、融合三个操作 [ 9 ]。基本框架图见图5。 图5. SE模块 Squeeze [ 16 ] 操作是利用全局的池化，将大小为 C × H × W 的输入特征综合为 C × 1 × 1 的特征描述(description)，对于一张特征图来说，计算如下： z c = F s q ( u c ) 1 H × W ∑ i = 1 H ∑ j = 1 W u c ( i ， j ) (1) 经过上述的Squeeze操作后，网络仅仅得到了一个全局描述，这个描述并不能作为该通道的权重。因此Excitation操作主要的目的是比较全面的获取到通道级别的依赖。同时应该满足灵活和能够学习非互斥强调的能力。基于上述目的和要求，该操作包含了两个全连接层和Sigmoid激活函数。全连接层能够很好的融合全部的输入特征信息，而Sigmoid函数也能够很好的将输入映射到0~1区间。计算如下： s = F e x ( z ， W ) = σ ( g ( z ， W ) ) = σ ( W 2 δ ( W 1 ) ) (2) 经过上述的Exacitation [ 16 ] 操作之后，就获得了特征图U各个通道的权重，最后就是将权重和原始的特征融合，就是简单的乘法运算： x ˜ = F s c a l e ( u c ， S c ) = S c ∗ U c (3) 3.5. 线性瓶颈 在常规的深度学习中，一般使用Relu作为中间隐藏神经元的激活函数，AlexNet中提出的用Relu替代传统激活函数是深度学习的一大进步。相较于传统激活函数，Relu函数计算简单，具有加快网络训练速度、增加网络的非线性、防止梯度消失等优点。Relu的定义所示： f ( x ) = max ( 0 ， x ) = { x ， x > 0 0 ， x ≤ 0 (4) 虽然Relu函数有诸多优点，但是Relu也有缺点。从以上定义可以看出，由于ReLU在x < 0时梯度为0，这样就导致负的梯度在这个ReLU被置零，而且这个神经元有可能再也不会被任何数据激活。如果这个情况发生了，那么这个神经元之后的梯度就永远是0了，也就是ReLU神经元坏死了，不再对任何数据有所响应。为了避免这种问题的发生，该文提出了在深度卷积中去掉Relu函数而采用线性输出，这样可以在保证计算量不增大的同时保留各个通道的信息。 如图6所示，这是一个深度可分离结构，本文在第一个DW操作后使用Linear替换掉了Relu激活函数以避免在训练过程中神经元坏死造成梯度消失。 图6. 线性瓶颈 3.6. 全局池化 对于传统的神经网络，往往会出现一两层全连接层，全连接一般会把卷积输出的二维特征图通过flatten转化成一个一维的向量，全连接层的每一个节点都与上一层每个节点连接，是把前一层的输出特征都综合起来，所以该层的权值参数是最多的，可能会造成过拟合，而全局池化常见的做法是把每个通道feature map输出一个神经元，大幅度减少了参数量，同时可以看到全局池化 [ 17 ] 会根据需要产生神经元，神经元个数可控，可调。而flatten方式就是一个硬链接，无法在flatten的时候调整链接数目。全连接结构图见图7，全局池化结构图见图8。 3.7. 多尺度并行轻量级模块 该文中为了得到更多的图像特征，提高识别准确率，使用了不同尺度的卷积核，同时对每个分支引入深度可分离卷积用于减少参数量，并且之后串联了一个SE模块，得到了一个新的结构，本文称之为PL-SE-Module。 图7. 全连接 图8. 全局池化 如图9所示，上层特征图首先经过三个分支，采用3 × 3和5 × 5两种不同尺度的卷积核分别进行深度可分离卷积操作和一个3 × 3最大池化，然后将三个分支的输出特征在通道上进行融合 [ 18 ]。为了方便对输出特征进行升维或者降维，之后再进行了一轮1 × 1卷积，让三条支路的信息更好的融合在一起，接着为了进一步提高识别率，串联了一个SE-Module，最后将输出信息与原始特征图进行一个残差学习，防止过拟合。 图9. PL-SE-Module结构 除此之外，该文还提出了一个SR-SE-Module对图像进行下采样。 如图10所示，该模块首先采用了一个大小为3 × 3，步长为2的深度可分离卷积和一个3 × 3的池化操作并行提取特征和降维，最后使得融合后的特征信息通过一个SE模块。 3.8. 模型设置 本文的模型设计以AlexNet为基础，使用PL-SE-module替换掉AlexNet中的卷积操作，同时为了保证有更多的信息传入下一层，使用SR-SE-Module替换掉池化层，以达到降维的同时进行特征提取的目的，除此之外，为了更多的减少参数，AlexNet的全连接层使用全局池化进行替代，并且在最后加入Dropout [ 11 ] 以防止过拟合。模型结构见表1。 图10. SR-SE-Module结构 Table 1 Model structur Global-Avg-Pool − 1 × 1 × 128 BN − 1 × 1 × 128 Dropout − 1 × 1 × 128 Softmax − 1 × 1 × 25 Type Filter shape/Stride Output Size Input − 224 × 224 × 3 PL-SE-Module [ 3 × 3 d w / 4 ， 1 × 1 / 1 5 × 5 d w / 4 ， 1 × 1 / 1 3 × 3 m a x p o o l / 4 ] ， 1 × 1 / 1 56 × 56 × 96 3×PL-SE-Module [ 3 × 3 d w / 1 ， 1 × 1 / 1 5 × 5 d w / 1 ， 1 × 1 / 1 3 × 3 m a x p o o l / 1 ] ， 1 × 1 / 1 56 × 56 × 96 SR-SE-Module [ 3 × 3 d w / 2 ， 1 × 1 / 1 3 × 3 m a x p o o l / 2 ] 28 × 28 × 96 PL-SE-Module [ 3 × 3 d w / 1 ， 1 × 1 / 1 5 × 5 d w / 1 ， 1 × 1 / 1 3 × 3 m a x p o o l / 1 ] ， 1 × 1 / 1 28 × 28 × 128 SR-SE-Module [ 3 × 3 d w / 2 ， 1 × 1 / 1 3 × 3 m a x p o o l / 2 ] 14 × 14 × 128 Inception-SE-Module [ 3 × 3 m a x p o o l / 1 ， 1 × 1 / 1 1 × 1 / 1 ， 3 × 3 / 1 1 × 1 / 1 ， 3 × 3 / 1 ， 3 × 3 / 1 1 × 1 / 1 ] 14 × 14 × 128 2×PL-SE-Module [ 3 × 3 d w / 1 ， 1 × 1 / 1 5 × 5 d w / 1 ， 1 × 1 / 1 3 × 3 m a x p o o l / 1 ] ， 1 × 1 / 1 14 × 14 × 192 SR-SE-Module [ 3 × 3 d w / 2 ， 1 × 1 / 1 3 × 3 m a x p o o l / 2 ] 7 × 7 × 192 PL-SE-Module [ 3 × 3 d w / 1 ， 1 × 1 / 1 5 × 5 d w / 1 ， 1 × 1 / 1 3 × 3 m a x p o o l / 1 ] ， 1 × 1 / 1 7 × 7 × 128 表1. 模型结构