针对目前在检测商用砂石骨料的过程中,人工检测的效率低下且受到主观因素的影响较大以及检测的准确率不理想,提出一种基于卷积神经网络(Convolutional Neural Network,CNN)的砂石骨料图像分类模型CNN13,该分类模型参考经典卷积神经网络VGG16(Visual Geometry Group 16)模型进行网络结构的改进和参数优化,利用TensorFlow深度学习框架搭建一个13层的卷积神经网络结构。实验数据集采集于某商用混凝土生产企业日常生产中的砂石骨料,共5000幅数字图像,模型在训练过程中采用GPU进行高速计算。相比于VGG16模型,CNN13模型的卷积层和参数量较少,对GPU内存的要求更低,训练速度更快,分类的准确率更高,每个等级的砂石骨料的分类准确率都达到99%以上。
混凝土是常用的建筑材料之一,主要由水泥和砂石骨料组成,其中砂石骨料是混凝土组成材料中用量最多的材料。目前,在商用混凝土生产企业中对砂石骨料的检测[1]大多采用的是人工检测的方式,然而人工检测不仅会受到人为因素的影响且检测标准不统一,使得检测效率低下。目前,国内的一些研究机构和企业利用数字图像处理技术[2,3]和机器视觉技术对砂石骨料进行检测[4,5,6]。李旭[7]利用图像处理技术对混凝土粗骨料的长宽比系数进行提取,从而达到对混凝土粗骨料检测的目的。刘春等[8]利用数字图像处理技术分割出了岩石颗粒与孔隙,从而提取岩石颗粒的轮廓信息,这对砂石骨料的检测具有借鉴意义。
然而数字图像处理技术对光照环境具有很强的敏感性,实际上混凝土的生产过程和环境比较复杂且光照不稳定,所以单纯的数字图像处理技术并不能很好地直接投入实际生产,仅仅适用于实验环境。卷积神经网络(CNN)[9,10,11,12]因其具有权值共享和局部视野的特点,所以具有很强的鲁棒性,广泛应用于图像识别,特别是在图像分类[13,14]、目标检测[15]和预测结果[16]。Zhang等[17]利用改进的卷积神经网络对汽车软管表面上的缺陷进行分类,分类的准确率达到96%以上。Ye等[18]通过优化VGG16(Visual Geometry Group 16)和VGG19中完整连接层的数量,使得蔬菜害虫图像的识别准确率得到了有效提高。Hsu等[19]提出了一种集成卷积神经网络(ECNN)的框架,该框架对常见的晶圆仓图(WBM)中的缺陷模式可以获得很好的识别效果。Wang等[20]提出了一种深度多尺度卷积神经网络(DMCNN),在检测网络入侵方面相比于传统网络具有较高的检测准确率。程国建等[21]通过卷积神经网络模型实现了岩石薄片图像特征的自动提取,该模型基于岩石薄片图像可以获得高效且可靠的自动分类结果。
本文参考经典的VGG16模型[22]并综合分析砂石骨料的特点,设计和搭建一个全新的由10层卷积层和三层全连接层组成的13层卷积神经网络模型CNN13,通过优化卷积层的数量和参数并以某商用混凝土生产企业的砂石骨料图像为数据集,在GPU上分别对CNN13模型和VGG16模型进行高速训练实验。实验结果表明,相比于VGG16模型,CNN13模型可以减少内存消耗以及加快训练时间,收敛更快也更稳定,同时能够大幅度提高砂石骨料识别的准确率和可靠性。
卷积神经网络是一种可以自动从数据库中学习并更新权重参数的模型,其是深度学习的代表模型之一。卷积神经网络由输入层、隐藏层和输出层组成,而权重参数“隐藏”在隐藏层中,隐藏层的数量越多则表明深度学习的深度越深。卷积神经网络具有局部视野和权值共享的特点,在图像分类中具有很强的鲁棒性,能够对复杂的图像进行分类,而且因其结构简单且应用性强,广泛用于解决图像分类的问题。
卷积神经网络VGGNet由牛津大学的视觉几何组开发,其由多个卷积层和全连接层组成。根据层的深度,VGGNet可以分为VGG16和VGG19。VGGNet具有结构简单、应用性强和识别率高的特点,是一种常用的深度学习经典模型,在比较模型性能的方面具有很好的对比意义。
VGG的卷积层中使用的是3×3的小型滤波器,首先利用连续卷积操作来提取局部特征,然后利用池化操作进行降采样,最后由全连接层输出结果。
对于输入图像数据,卷积运算是指滤波器按一定的步幅滑动进行计算,即滤波器中的各个元素与相对应的输入图像数据中的各个元素(像素值)相乘,然后求和并将结果输出到对应位置。当输入图像数据在所有位置上都完成一次滑动计算时,即完成一次卷积运算。在相同的卷积神经网络中,滤波器越小,则参数量就越少。使用5×5的滤波器进行卷机运算的参数量有5×5=25个,使用3×3的滤波器进行两次卷积运算的参数量有2×3×3=18个,因此在卷积神经网络中尽可能加深卷积层的深度(数量)以及使用小型滤波器。
池化是缩小长、高方向上的空间的运算,从而达到降采样的目的,而池化计算即是在滤波器中选择最大值或者平均值作为输出值。池化对输入图像数据的偏差具有很高的鲁棒性,当输入图像数据发生微小偏差时,池化仍会返回与没有发生偏差的结果相同。最大池化运算过程如图1所示。当在2×2的滤波器(虚线矩形框)中进行池化运算时,该滤波器中的最大值为2,输出即为2,以此类推。
图1 最大池化运算的过程
Fig.1 Process of maximum pooling calculation
每次卷积运算都使用Relu(Rectified Linear Units)函数进行激活,当Relu函数的输入大于0时,直接输出该值,当输入不大于0时,输出为0,可表示为
式中:x表示输入信号;f(x)表示输出信号。
卷积神经网络中使用Softmax函数作为输出函数来解决分类问题,当Softmax函数用于分类时,其输入的种类与对应的标签经过卷积神经网络多次迭代后输出映射到(0,1)区间,可以看作某一种类对应标签的概率,因此整个Softmax层的输出相加结果为1。Softmax函数作为输出函数,则输出信号可表示为
式中:yk表示第k个神经元的输出信号;ak表示第k个神经元的输入信号;ai表示第i个神经元的输入信号;n表示输入神经元的总数量。
本文参考VGG16并对其进行优化,设计一种基于TensorFlow深度学习框架的13层卷积神经网络(CNN13),其由10层卷积层和三层全连接(FC)层组成,该网络的结构设计如图2所示。
图2 CNN13的结构
Fig.2 Structure of CNN13
卷积神经网络CNN13中各层网络层的设计如下。
1)输入图像是经过预处理的单通道灰度图(分辨率为384pixel×275pixel)。
2)卷积层使用3×3的滤波器,步长为1,边界填充的像素值为0。每次卷积运算的输出特征尺寸不变,数量为该层滤波器的数量。
3)池化层采用最大池化法进行处理,使用2×2的滤波器,步长为2,边界填充的像素值为0。每次池化运算的输出特征尺寸为输入特征的1/2,数量不变。
4)全连接层使用1024个参数。
CNN13中各个网络层的参数设置如表1所示。
表1 CNN13中各个网络层的参数设置
Table 1 Parameter settings of each network layer in CNN13
CNN13采用反向传播的方式对权重参数进行更新,每个网络层使用非饱和线性激活函数Relu进行激活,使用神经元随机删除的方法随机删除全连接层的参数以防止网络过拟合,使用自适应矩估计优化器对整个网络进行优化,由Softmax函数输出分类结果。
通过查阅某商用混凝土生产企业的砂石骨料分类标准和具体分类细则,对不同等级的砂石骨料进行随机图像采集以获取数据集。
按照某商用混凝土生产企业的砂石骨料生产标准进行分类,砂石骨料的重要指标为粒径尺寸和粒形组成含量。合格砂石骨料的粒径分布在10~25mm;骨料的粒形以整形(正方体或者圆形)为主,针片状含量越少越好。砂石骨料一共分为5个等级,每个等级具体的分类标准如表2所示。
随机对生产使用中的混凝土骨料进行图像采样,每个等级采集1000幅数字图像,总共采集5000幅数字图像。将每个等级的数字图像分为训练集和测试集,分配比例为8∶2,即使用800幅数字图像作为训练集,200幅数字图像作为测试集。图像数据集包含了不同生产环境中的砂石骨料,包括表面干燥和表面潮湿的砂石骨料,如图3所示,各个等级的砂石骨料如图4所示。
表2 砂石骨料的分类标准
Table 2 Classification standard of sand and gravel aggregate
图3 砂石骨料示意图。(a)表面干燥的砂石骨料;(b)表面湿润的砂石骨料
Fig.3 Schematic of sand and gravel aggregate.(a)Sand and gravel aggregate with dry surface;(b)sand and gravel aggregate with wet surface
图4 各个等级的砂石骨料示意图。(a)第一级;(b)第二级;(c)第三级;(d)第四级;(e)第五级
Fig.4 Schematic of all grades of sand and gravel aggregate.(a)1st level;(b)2nd level;(c)3rd level;(d)4th level;(e)5th level
对采集到的数字图像采用双线性插值的方法进行预处理,将原始图像的宽和高压缩至原图像的10%,处理前与处理后的图像数据如表3所示。
表3 原始图像预处理前后的对比
Table 3 Comparison of original image before and after preprocessing
数字图像同时在宽和高的方向上进行双线性插值运算后,保留了原始数字图像上的特征,同时数字图像所占的内存也有效减少,因此预处理后的卷积计算和处理速度可以得到大幅度提升,并且对显存的需求也降低了。
实验过程中所采用的硬件平台参数:CPU为Inter Corei5-9400;GPU为NVIDIA GeForce GTX1660Ti,内存为6G。在计算过程中使用GPU硬件并调用深度神经网络库(cuDNN)进行深度学习计算,极大地提高了计算速度。
本文使用CNN13和VGG16两种卷积神经网络进行对比实验,训练过程中多次设置不同的超参数进行训练。
其他超参数设置:训练步幅设为10000,全部图像参与65轮训练;每25步保存一次损失函数值、准确率和步幅。
CNN13模型和VGG16模型的损失函数变化曲线如图5所示。从图5可以看到,两种模型的损失函数曲线都在训练几百步之后快速收敛至一点几,但是CNN13模型的损失函数曲线的下降梯度比VGG16模型大很多。
图5 CNN13模型和VGG16模型的损失函数对比曲线
Fig.5 Comparison curves of loss function between CNN13model and VGG16model
CNN13模型的损失函数曲线的收敛速度较快且波动范围较小,在训练初期极速下降,然后在小范围内波动,最后逐渐收敛至0。在训练4000步即数据集迭代26轮后,损失函数值收敛至0。模型继续训练,即使损失函数曲线出现较小范围的波动,但损失函数值最终收敛于0。
VGG16模型的损失函数曲线的收敛速度较慢且波动范围较大,在训练6000步即数据集迭代39轮后,损失函数值才逐渐收敛至0。模型继续训练,损失函数曲线出现小范围的波动,损失函数值最终收敛于0。