王 玉, 王梦佳, 张伟红
(吉林大学 应用技术学院, 长春 130012)
随着社会的发展与进步, 人们对垃圾分类的重视程度也在不断的提高。垃圾处理是目前环境保护工作中的重要环节, 而垃圾分类回收是垃圾处理的前提, 通过分类投放、 收集、 运输以及处理的方式处理回收垃圾。图像分类技术是通过传统机器视觉算法实现的, 需要对每张图片的重要特征进行提取, 但随着图片数量、 类别的大幅增加, 传统方法的特征提取变得困难, 尤其依赖于人工对数据的判断和试错。
国内外对垃圾回收分类问题的研究已经成为热门方向, 很多国家还设有专门的政府部门和公司实施垃圾分类。在发达国家, 垃圾回收分类在日常生活中非常普遍, 回收分类的概念也非常清晰。在生活垃圾回收分类方面, 有些发达国家经过半个多世纪的研究和经验积累, 形成了自己完整的分类体系, 取得了显著的成果, 对我国的生活垃圾分类具有重要的参考意义。我国对生活垃圾管理的研究和技术应用始于20世纪80年代末, 生活垃圾分类的概念在20世纪90年代末进入我国, 但实施效果并不明显。
为有效解决智能垃圾分类问题, 笔者提出了一种基于CNN[1]和Group Normalization的垃圾图像分类方法。该方法无需对输入的图像进行预处理, 网络模型通过算法提取图像特征, 通过加入群组归一化(Group Normalization)和网络模型各层之间的协作, 克服传统分类算法的缺点, 实现对垃圾图像的分类。相关实验表明, 笔者提出的方法可以较好地识别不可回收及可回收垃圾。
深度学习在图像处理领域的主要网络结构包括以下几种: 深度神经网络(DNN: Deep Neural Networks)、 深度信念网络(DBN: Deep Belief Nets)、 循环神经网络(RNN: Recurrent Neural Network)、 生成式对抗网络(GAN: Generative Adversarial Networks)和卷积神经网络(CNN: Convolutional Neural Networks)。在公共安全、 军事、 农业和日常生活等领域有很多应用, 卷积神经网络在机器视觉领域有着十分优秀的表现, 所以被应用于各种解决方案中[2]。以垃圾图像分类为例, 输入阶段, 由硬件设备将垃圾图像的光学信息通过摄像系统采集, 然后经过预处理(归一化)、 特征提取和特征分析, 将格式化的数据输入到算法中计算并输出。
1982年, Fukushima等[3]首次提出了深度学习模型但并未引起人们足够的重视, 直到2012年, Krizhevsky等[4]提出Alexnet引入了全新的深层结构和Dropout方法, 成功在计算机视觉ImageNet LSVRC 比赛中夺冠, CNN正式走近人们的视线。利用CNN技术, AlphaGo横扫围棋界, AI成为当下热门话题, 同时图像识别, 人脸识别等也需要依靠深度学习, CNN的发展尤为重要。批量归一化(BN: Batch Normalization)算法由SerGey[5]在2015年首次提出, 目的是加快神经网络的收敛速度和稳定性, 但为解除BN只能在小批次使用的限制, Wu等[6]提出用GN(Group Normalization)替代BN。
卷积神经网络(CNN)是一类含有卷积计算且结构具有深度的前馈神经网络, 是深度学习中具有代表性的算法之一, 是多层感知机(MLP: Multilayer Perceptron)的一个变种模型。时间延迟神经网络和LeNet-5是最早出现的卷积神经网络。卷积神经网络依旧是层级网络, 只是层的功能和形式有了变化, 可以说是传统神经网络的一个改进。卷积神经网络为判别架构模型[7], 典型的卷积神经网络主要由输入层、 卷积层(特征提取层)、 池化层(下采样层)、 全连接层和输出层组成。
卷积网络的核心思想是将局部感受野、 权值共享以及时间或空间亚采样这3种结构思想结合获得了某种程度的位移、 尺度、 形变不变性。卷积网络在本质上是一种输入到输出的映射, 能学习大量的输入与输出之间的映射关系, 而不需要任何输入和输出之间精确的数学表达式, 只要用已知的模式对卷积网络加以训练, 网络就具有输入输出对之间的映射能力[8]。
由于当前的卷积神经网络都是偏向于更深层次的结构, 因此卷积的层数在不断增加, 更深层次的结构有着更高的准确性, 但是也使用了更多的资源, 产生了更多的训练参数。深层的神经网络训练时, 后层的训练参数输入会受到前一层训练参数更新的影响。网络模型的参数是在不断更新和变化并向前传播, 所以也就导致了各层的输入在不断变化。研究人员把这个训练过程的参数变化称为内部协方差变化。即在神经网络训练过程中, 神经网络的输入所服从的概率分布发生变化的现象被称为中间协变量迁移。针对这一现象的解决办法是对每层的输入进行归一化处理, 即批量归一化(BN)。然而, BN在批量尺寸变小时, 误差会迅速增加, 从而限制了BN用于训练更大的模型。
为解决这一问题, 有学者提出了群组归一化(GN)[9]。如图1所示, GN将信道分成若干组, 并在每个组内计算归一化的平均值和方差。GN的计算与批量大小无关, 在大批量范围内精度稳定。GN本质上仍是归一化, 但它灵活地避开了BN的问题, 同时又不同于层归一化、 实例归一化。GN对输入大小为[N,C,H,W]的图像, 首先将通道设定成若干组, 在每个组内计算方差和平均值, 对各层的输入进行白化运算, 让每层的输入服从均值为0, 方差为1的正态分布, 很好地解决了中间协变量迁移的问题, 加快了网络的收敛速度, 每个子图表示特征图张量,N作为批次轴,C作为通道轴,H,W作为空间轴。用相同的均值和方差对蓝色像素进行标准化, 通过聚集这些像素的值计算均值和方差。GN在很大的批量范围内表现得非常稳定。当批量大小为2个样本时, 对ImageNet中的ResNet-50, GN的误差比BN的误差低10.6%。
图1 规范化方法
笔者提出一种基于卷积神经网络和归一化技术的垃圾图像分类方法。卷积神经网络(CNN)是一类含有卷积计算且结构具有深度的前馈神经网络, 是深度学习中具有代表性的算法之一。传统卷积神经网络算法主要由卷积层、 池化层和全连接层组成。笔者使用ResNet模型, 相比传统模型引入了残差函数的概念, 同时为解决过拟合问题引入Dropout算法。为增加神经网络的非线性, 引入激活函数: 整流线形单元(ReLU: Rectified Linear Unit)。ReLU函数相对简单, 但其计算和收敛速度非常快, 有利于减少训练量和训练时间。使用Softmax预测输出类别的概率, 从而实现图像分类。传统卷积神经网络算法主要由卷积层、 池化层和全连接层组成。在此基础上, 笔者所提出的方法加入Group Normalization, 既可解决中间协变量偏移问题, 又可加快网络收敛速度, 算法流程如图2所示。
图2 笔者算法流程图
笔者采用ResNet模型, 引入残差单元, 增加了恒等映射, 通过直接将输入信息绕到输出, 以此减少信息丢失、 损耗较大的问题[10]。在ResNet模型结构中, 输入图像由卷积层提取特征, 再被送入池化层和分类层。假设残差网络输入x, 期望输出H(x), 得到H(x)=F(x)+x, 当F(x)=0时, 得到恒等映射H(x)=x。与其他网路模型相比, 引入残差F(x)的概念, 即F(x)=H(x)-x, 随着训练层数的增加, 残差F(x)无限接近于0。整个网络只需学习输入、 输出残差部分, 降低学习难度, 简化学习过程, 且训练误差随着层数的增加而减小, ResNet更适合训练更深层的卷积神经网络。由于层数的增加、 训练样本偏小, 就会产生过拟合的问题, 为解决这一问题, 笔者引入Dropout丢弃算法。
由于ResNet可以训练更深层的卷积神经网络, 且保持较低的误差, 但随着卷积层数的增加, 不可避免地产生过拟合问题。过拟合具体表现在: 模型在训练数据上损失函数值较小, 预测准确率较高; 但在测试数据上损失函数值较大, 预测准确率较低。为减少过拟合现象, 笔者引入BN的同时也引入了Dropout, 在一定程度上达到正则化的效果, 同时增加了迭代次数。Dropout即丢弃算法, 属于提高模型泛化性方法, 对神经网络单元, 按照一定的概率将其暂时从网络中丢弃。运行原理是以一定概率随机让某些神经元输出设置为0, 既不参与前向传播也不参与反向传播[11]。
卷积神经网络特征提取是通过使用卷积核实现的(如3×3,5×5,7×7), 卷积核对图像进行卷积运算得到特征图。卷积核的大小与计算量成正比, 所以卷积核应选择小而深, 以便减少网络中的计算量(如3×3,1×1), 堆叠很小的卷积核, 模型的性能才会提升。卷积神经网络的卷积核对应一个感受野, 这使每个神经元不需要对全局图像做感受, 每个神经元只感受局部的图像区域, 然后在更高层, 将这些感受不同局部的神经元综合起来就可以得到全局信息。
卷积核的大小通常为奇数, 因为奇数卷积核方便确认中心像素位置进而移动卷积核, 而偶数卷积核计算时, 会覆盖之前的值, 造成计算浪费[12]。两个3×3的堆叠卷积层的有限感受野是5×5, 3个3×3的堆叠卷积层的感受野是7×7, 故可以通过小尺寸卷积层的堆叠替代大尺寸卷积层, 并感受野大小不变, 这里所选卷积核大小为3×3。
图像经过卷积处理后, 加入GN, 新提出的GN解决了BN式归一化对批量大小依赖的影响。BN有很多优点, 例如加速训练速度、 缓解梯度弥散等, 但BN层与批量大小关系密切, 如果批量过小, 会受到过多干扰。因为每次计算均值和方差是在一个批量上, 所以如果批量太小, 则计算的均值、 方差不足以代表整个数据分布, 虽然有不错的效果, 但会超过内存容量, 需扫描更多次的数据集, 导致总训练时间变长, 而且会直接固定梯度下降的方向, 导致很难更新。由此可见BN对批量大小有很强的依赖性, 而LN(Layer Normalization)、 IN(Instance Normalization)、 GN能摆脱这种依赖, 其中GN效果最好。
常见的激活函数有sigmoid函数、 tanh函数、 ReLU函数[13]。早期研究神经网络主要采用sigmoid函数或tanh函数, 输出有界, 很容易充当下一层的输入。相对sigmoid函数和tanh函数, ReLU函数其实就是一个取最大值函数。ReLU的设计参照了神经学科的单侧抑制的特点, 所有反方向的梯度都为0, 正方向不受抑制, 梯度为输入本身。虽然ReLU函数输出不是zero-centered, 但其计算速度非常快, 只需判断输入是否大于0。收敛速度也远大于sigmoid函数以及tanh函数。
Softmax函数, 又称归一化指数函数[14]。它是二分类函数sigmoid在多分类上的推广, 目的是将多分类的结果以概率的形式展现。Softmax用于多分类过程, 它将多个神经元的输出映射到[0,1]区间内, 从而进行多分类。Softmax回归同线性回归一样, 也是一个单层神经网络, 输出层相当于一个全连接层。在训练好回归模型后, 输入任意样本特征的图像, Softmax就可以预测输出类别的概率, 将预测概率最大的类别作为最后神经网络的输出类别, 从而实现了图像分类。
笔者选用的图像数据集为garbage图片集, 分为可回收和不可回收垃圾两大类。每类总计2 164张训练图片, 其中219张用于测试, 1 945张用于训练。图像分为灰度图像与彩色图像。灰度图像的灰度值为[0,1], 彩色图像由三维张量表示, 格式为M×N×3的矩阵,M,N为图像长宽的像素点个数。garbage图片数据集规模如表1和表2所示。
表1 可回收垃圾数据集
表2 不可回收垃圾数据集
该数据库中的可回收垃圾图像如图3所示, 这里采用32×32像素的3通道RGB彩色图片。在训练前, 先将图片预处理。
1) 图片尺寸归一化, 即统一将图片尺寸改为32×32×3的三维张量;
2) 增加图片差异性与多样性, 将图片做随机调整, 如平移、 旋转。
图3 Garbage数据库中可回收垃圾图像示例
将大小为32×32×3的三维张量输入网络, 经过2个2×2池化层的特征提取得到4×4×32的特征图, 最后通过4×4×120的卷积核得到120的一个向量输入到全连接层。利用梯度下降法训练网络, 优化参数。
实验使用残差网络共计迭代数据集50次, 每批次随机选取100张图片进行训练, 初始学习率为0.01, batch_size为5, 学习率衰减系数为5×10-3且随迭代次数逐渐下降。GN可以通过PyTorch和TensorFlow中支持自动区分的代码实现。神经网络中使用激活函数加入非线性因素, 提高模型的表达能力。
该实验先行选取可回收垃圾图像进行分类, 实验结果如图4所示, 训练次数为50次, 训练集和测试集的准确度随次数的增加而更加精准, 训练集最高识别率为1.0, 测试集最高识别率为0.96。cost损失函数不断减小, 训练集最小为0.11, 测试集最小为1.2。最后准确率随训练次数增加和图片数量成正相关, cost损失函数成反相关, 结果符合预期。
图4 训练中迭代次数与损失函数值的学习曲线与准确率的验证曲线
笔者对基于卷积神经网络和群组归一化对垃圾图像分类进行了研究。卷积神经网络在深度学习的图像处理方面经过长时期发展, 技术相对成熟且经过多次创新演变有很强的优势。根据算法提取图像特征, 无需对输入的图像进行预处理, Dropout、 权值共享、 池化等技术减少了图像过拟合, 降低算法复杂度, 增加网络的鲁棒性。同时, 笔者采用CNN经典模型中的ResNet模型, 相比传统CNN模型增加了残差学习, 以解决退化问题。相比传统卷积神经网络的批量归一化, 群组归一化是近年提出的新方法, 提出的GN解决了BN式归一化对batch size依赖的影响, 可在快速训练神经网络的同时降低对于硬件的需求。