基于深度学习的小龙虾分级算法

2020-11-02 07:49高竟博李晔杜闯
现代计算机 2020年26期
关键词:小龙虾卷积噪声

高竟博,李晔,杜闯

(南京邮电大学自动化学院,南京210046)

0 引言

随着人工智能技术的发展,模式识别、深度学习等技术日益成熟,在《美国国家科学院院刊》报道了基于深度学习的动物识别计数,能够进行自主地识别,并且识别率高达99.3%,而人类志愿者的识别率为96.3%[1]。目前,深度学习广泛应用于各个领域,例如对不同种类鱼的分类、指纹识别、车牌识别、人脸识别,以及医学图片的分析等,但对于龙虾的图像分级处理却未有研究。我国有近3 万亿的餐饮市场,小龙虾占据了7%~8%的份额[2],而且呈逐年增长的趋势。从养殖厂到餐桌的过程中,分级是小龙虾加工前处理的重要工序之一。目前小龙虾分级多采用人工方式进行,工作量大,工作效率低。依靠人工计数会消耗很大的人力、物力和财力,如果小龙虾的数目较为庞大,还会因为人工计数的不确定性出现较大误差。如果将深度学习于小龙虾的分级分类,则会事半功倍。深度学习通过对外部环境提供的信息加工为有效信息,并且转化为知识储存在知识库中,能够在学习过程中不断地修正和完善下一步的学习,最终经过不断地转化、学习,系统能够根据已有的知识储备正确处理外部环境中的新信息,具有很强的目的性。模式识别从十九世纪五十年代兴起,主要在图像识别、语音识别、图像分类等方面应用深度学习的研究给模式识别提供了新的方向,有别于模式识别的将特征描述供给机器,深度学习是根据已知的数据集,通过特定的算法训练学习模型规律,从而能够判断未知的事物。因此,在本文中将深度学习应用于图像分类能够很好解决小龙虾分级过程中的实质性问题。

传统分类方法中,特征值识别算法操作简单,但是正确率较低。支持向量机算法灵活,但是需要手动选择特征值。相关系数识别算法识别率高,但是适用范围小。而深度学习技术的发展已经比较成熟,并且在图像识别分类这一领域中被广泛应用,尤其是卷积神经网络(Convolutional Neural Networks,CNNs)能够对特定的特征进行学习,并且有较强的适应能力[3],相较于传统方法依赖人工提取图像特征,深度学习具有更加出众的灵活度和精度。深度学习通过对数据集的计算能够提取出数据集的图像特征,而优质的特征提取会对整个分级系统起到决定性的影响,所以卷积神经网络的选取对于分级系统的设计起着至关重要的作用。1985 年,反向传播(BP)算法[4]被首次提出,大大提高了神经网络的训练效率,随着研究的深入,慢慢演变出了大量的经典卷积神经网络,例如ResNet[5]、VGG[6]以及EfficientNet[7]。VGG 是在AlexNet 的基础上发展而来的,相较于传统的卷积神经网络模型,其数据增强和Dropout(随机失活)在防止过拟合方面都有很突出的表现,并且其ReLU 函数能够很好地解决模型发散等问题;ResNet 的残差网络是其主要创新,解决了梯度消失的问题,在残差结构中,增加一个恒等映射将一个问题分解为多个尺度的残差问题,效果显著。在网络调参过程中,调节深度、宽度和分辨率三个维度的平衡是至关重要的,EfficientNet 的提出,将不像传统实践中任意缩放这三个因子,而是用一组固定的缩放系数来进行缩放,大大提升了网络的计算效率。本文通过迁移学习的方法运用EfficientNet 训练模型,大大缩短了训练时间,提高了训练效率,实现了特征图的跨通道聚合,增强了模型的鲁棒性,为工厂批量分拣龙虾提供了技术支持。

由于深度学习能够通过训练掌握图像的特征,并且完成训练的网络能够达到很高的准确率,所以在龙虾分级系统的设计中的应用有很显著的效果。,本文利用预训练的EfficientNet 参数并通过迁移学习。卷积神经网路的训练需要大量的人工标注的数据集,采用迁移学习能够大大减少人工标注的数据量,实现较少的数据集便可实现较好的实验效果,节省实际工厂应用的成本。为了能够有效地实现迁移学习,本文采用了2层全连接层来实现EfficientNetB0 特征的迁移。相关实验表明,通过对EfficientNetB0 的迁移学习能够有效地训练小龙虾分级网络,并且对清晰图像的准确率高达99.7%,并且由于参数量较少,训练时间较其他网络大大减小。本文通过TensorFlow 框架训练神经网络对图像采集器传回的图像数据,后端服务器通过智能图像处理提取出小龙虾的标志性区域,并通过一系列的图像预处理和模式识别技术对其进行计数,然后通过小龙虾的标志性区域的大小将其进行分级。同时,本网络能够对实际工厂生产过程中产生的噪声进行很好地处理,有良好的稳定性。

1 网络结构

1.1 卷积神经网络基本知识

2006 年,深度学习的概念首次被Geoffrey Hinton[8]提出,2012 年,AlexNet[9]发布,其具有8 层的深层神经网络,在图片识别竞赛中性能取得了巨大的性能提升,此后成百上千层的神经网络模型的提出,展现出了深层神经网络学习能力的强大,并被广泛应用。在图像识别领域内,卷积神经网络拥有巨大的优势,其通过卷积核提取图片的特征,大量的卷积运算可以提取到深层次的图像特征[10]。卷积神经网络能够局部连接和参数共享,比其他一般的神经网络有着更少的参数。此外,神经元间的稀疏链接使得其具有良好的泛化能力。

图1 基本卷积神经网络模型结构

图1 是一个基本的CNN 模型,包括输入层、卷积层、ReLU(线性整流函数)激励层、池化层以及全连接层。输入层是图像处理的一个过程,被处理后的图像会经过几层卷积层对图像特征进行提取学习,例如输入是一个二维的3×4 的矩阵,并且卷积核是2×2 的矩阵,那么卷积的顺序会按照先对输入的左上角的2×2 矩阵进行卷积,然后向右平移一个单位,对下一个2×2 的矩阵进行卷积计算,之后转到下一行进行相同的卷积操作。ReLU 激励层将非线性函数作为激励函数,增加神经网络各层之间的非线性关系。池化层是对各个矩阵的一个压缩,会将所压缩的矩阵按照压缩标准变为一个元素,最后通过全连接层得到输出向量。

1.2 EfficientNet网络模型

本文通过对EfficientNet 的迁移学习[11],来实现分类模型的搭建。EfficientNet 是由谷歌提出的新型卷积网络,比其他模型小巧快速,准确率高。之前通用的几种方法是单独放大卷积神经网络的深度、宽度和分辨率,并且三维的调节是随机的,任意缩放需要繁琐的人工调节,这样造成了不同精度以及效率。而Efficient⁃Net 验证了网络深度、宽度和分辨率之间的平衡对于图像识别的性能是至关重要的,并且这种平衡可以通过简单地以恒定比率缩放每个维度来实现。与传统的任意缩放三个因子不同,EfficientNet 使用一组固定的缩放系数均匀地对网络的宽度、深度和分辨率,实现了利用简单高效的复合系数完成了对三个参数所有维度的统一缩放。

模型压缩是一种通过提高效率的方法,广泛地调整网络宽度、深度和卷积核的类型和大小,实现了比卷积神经网络更好的效率。缩放网络深度是许多卷积神经网络最常用的方法,因为更深层的网络可以捕获更丰富、更复杂的特征,但是由于梯度消失的原因,更深层的网络也更难训练;缩放网络宽度通常运用于小型模型,更广泛的网络往往能够捕获更细小的特征,但是宽度很高而很浅的网络往往难以获得更高层的特征;对于使用更高分辨率的输入图像,卷积神经网络能够捕获潜在的细小特征,但对于极高的分辨率,其精度又有所减少。因此三者需要一个平衡来时模型达到最优状态。EfficientNet 提出了一种新的复合标度的方法利用复合系数的原则上统一标度网络的深度、宽度和分辨率:

式(1)中,α,β,γ是通过很小范围搜索的方法决定的常量。∅是由用户指定的系数(控制用于模型缩放的额外资源的数量),α,β,γ则能够决定额外资源到网络的宽度、深度和分辨率上的分配。在实际的深度学习的应用中,EfficientNet 充分体现了其高效性和准确性。

2 提出的算法

本文设计的基于卷积神经网络小龙虾分级算法的总体结构图如图2 所示,主要包括三个部分:①卷积神经网络结构;②数据集准备;③训练和识别。

图2 小龙虾分级算法框图

2.1 卷积神经网络结构

对于一般的神经网络的训练会采用随机初始化,然后通过特征学习接近目标参数,相较于这种从零开始训练模型的神经网络,迁移学习能够利用提前在大型数据集上训练的权重参数,然后根据目标数据集对模型参数进行微调,从而提高网络的效率。除此之外,这些预训练的参数还能够将目标数据集中的低层次的特征进行学习,例如点、斑等,提高训练的准确率,并且加速模型的收敛。本文采用以ImageNet 数据集训练好的EfficientNet-B0 模型进行迁移学习,构成预训练模型。模型采用全局平均池化,对于输出的图像特征进行相加求平均,减少卷积的运算次数的同时保留住了重要的特征信息,很大程度上避免了模型的过拟合,提高了模型的泛化能力。然后对EfficientNet-B0 得到的权重参数进行冻结处理,在之后的训练过程中不对其进行计算,大大缩减了模型的训练时间。

在预训练模型的基础上,采用Sequential 顺序结构由一个特征提却层、2 个全连接层和1 个线性分类层组成。特征提取层将训练样本输入预训练的Efficient⁃Net-B0 网络。全连接层将预训练的EfficientNet-B0 特征迁移到小龙虾样本空间。全连接对应矩阵乘积,在实际使用中,全连接层可由卷积操作实现。输出的特征维度分别为512 和128,使用ReLU 激活函数[12];一个Softmax 分类层将一阶张量变为三分类概率分布,从而构成训练模型。其中使用的ReLU 函数是非饱和非线性激活函数。由于卷积运算是线性的,ReLU 函数能够提高网络的表达,削弱网络参数之间的联合性,从而使网络具有稀疏性,能够更好地学习数据特征,加速收敛。其中Softmax 激活函数:

Softmax 函数[13]常用于多分类的逻辑回归模型,每个输出映射到了区间[0,1],并且所有值加起来的和为1。式中为多个输入,训练为了逼近最佳的θT,实现归一化处理。

2.2 数据集构建

实验所用小龙虾全部采购自南京某海鲜市场,考虑到小龙虾自动分级过程中,在分级的同时,死虾和空壳虾也会被单独分拣出来。先人工挑选合格小龙虾样品,剔除不合格小龙虾避免影响实验效果,选择大中小规格不同的合格小龙虾试验样本各一斤作为实验样品,规格小为234 钱,规格中为456 钱,规格大为789 钱。

拍摄小龙虾,建立训练数据拍摄要求相机距离地面30cm,构建原始干净图像数据集并进行人工标注等级,在原始干净图像数据集基础上分别合成高斯噪声图像数据集和椒盐噪声图像数据集,并对构建的3 个数据集分别进行训练集/验证集/测试集的随机划分,数据集划分的比率为训练集:验证集:测试集=6:2:2。训练数据是等级为“大”、“中”和“小”的小龙虾,每类采集565 个样本,共565×3=1695(个)样本,并把每一类的样本按照比例6:2:2 随机划分成训练集、验证集和测试集,即339:113:113 个样本。椒盐噪声是数字图像中的常见噪声,一般是由图像传感器、传输信道及解码处理等产生的黑白相见的亮暗点噪声,常由图像切割产生。它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值,通过MATLAB加入方差为0.4 的椒盐噪声以验证噪声对于实验结果的影响程度。高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声,在数字图像中的高斯噪声的主要来源出现在采集期间。由于不良照明或高温引起的传感器噪声。在数字图像处理中,可以使用空间滤波器来降低高斯噪声,但是当对图像进行平滑时,结果可能导致精细缩放的图像边缘和细节的模糊,因为它们也对应于被阻挡的高频。通过MATLAB随机加入方差为0.1 的高斯噪声以模拟数字采集时图像可能存在的高斯噪声对于实验结果的影响,清晰图像,加入高斯噪声、椒盐噪声图像如图3。

表1 训练集、验证集、测试集数量分布表

图3 样本示意图

2.3 训练与识别

本文算法采用两个全连接层实现对预训练的Effi⁃cientNet-B0 特征的迁移,因此主要对两个全连接层和线性分类层进行训练。采用交叉熵损失函数:

其中y为真实值,̂为模型的输出。

采用Adam 优化器[14]对参数进行优化。Adam 优化器是计算每个参数自适应学习率的算法,其每一次迭代中学习率都有一个明确的范围,使得参数变化平稳,有很高的计算效率以及较低的内存需求,并且具有梯度对角缩放不变性。其Adam 超参数的设定值为学习率0.001。

3 实验结果与分析

3.1 训练参数设置

在训练模型前设置好超参数,即要输入的数据集图片尺寸大小、一次训练所选取的样本数、训练轮次、分类数目。设置图片缩放大小即输入尺寸为(224,224,3),设定单次训练用的样本数为8,分类数目为大中小3 类,设定训练轮次为40。

3.2 数据增强处理

因数据集较小,因此训练前对数据集做数据增强处理:归一化、旋转、平移、剪切、缩放,具体结束如下:

(1)归一化

归一化处理能有效加快模型的收敛速度,本文采用的归一化方法为:

其中Xmax表示样本数据最大值,Xmin表示样本数据最小值。在本文中Xmax=255,Xmin=0,即将每一个像素点都除以255,使像素值归一化到[0,1]。

(2)旋转

旋转操作是图像像素坐标和笛卡尔坐标系之间的2 次转换,图像的旋转可以用矩阵变换来表示。设(X0,Y0)、(X1,Y1)分别为旋转前后的坐标,(W,H)、(W',H')为旋转前后的宽和高,θ为旋转的角度:

(3)平移

设(X1,Y1)是平移后的坐标,(X0,Y0)是平移前的坐标,∆x,∆y为偏移量:

(4)剪切

设(X1,Y1)是剪切后的坐标,(X0,Y0)是剪切前的坐标,∆x,∆y为剪切因子:

(5)缩放

设(X1,Y1)是缩放后的坐标,(X0,Y0)是缩放前的坐标,∆x,∆y为缩放因子:

3.3 实验对比分析

绘制训练集和验证集准确率和loss 的变化曲线。通过观察两种曲线的上升和下降趋势选择出泛化能力最优的模型,利用验证集loss 曲线判断模型是否过拟合。

为了验证在实际生产中本文模型的泛用性,将干净图像数据集训练结果与椒盐噪声、高斯噪声处理后数据集训练结果作对比,图4 给出了三种数据集的学习曲线。通过对比可以发现,干净数据集的学习曲线收敛速度最快,准确率也是最高,随着噪声的增大,模型的收敛速度逐渐降低,泛化能力也逐渐变差。但是准确率依然在可接受范围内。

图4 训练accuracy曲线和loss曲线

为了评估本文算法的有效性,本文采用ResNet50[4]、VGG16[5]和VGG19[5]三个常用网络进行对比实验,相关实验设置于本文算法实验设置相同。在实验设置相同的情况下,这些模型的学习曲线要比Ef⁃ficientNet 模型要差一点,有的模型验证集loss 波动较大,不能很好地拟合。

表2、表3 和表4 分别是迁移不同类型网络的预训练模型在干净图像数据集、高斯噪声图像数据集、椒盐噪声图像数据集上的识别效果。通过训练发现,以上三个网络的训练时长均大于EfficientNet-B0 的时长,并且结果曲线会有波动的现象。

表2 迁移不同网络模型在干净图像数据集上的识别效果

表3 迁移不同网络模型在高斯噪声数据集上的识别效果

表4 迁移不同网络模型在椒盐噪声数据集上的识别效果

EfficientNet 预训练模型在利用测试集339 个图像样本进行测试时,干净图像数据集把338 张小龙虾图像成功分类,而把1 张图像错误分类,测得准确率为99.70%,损失值loss 值为1.70%。高斯噪声数据集把317 张小龙虾图像成功分类,而把22 张图像错误分类,实验测得准确率为93.75%,损失值loss 值为17.42%。椒盐噪声数据集把300 张小龙虾图像成功分类,而把39 张图像错误分类,实验测得准确率为88.41%,损失值loss 值为39.59%。对于干净图像数据集,在评估模型时发现有两幅图像的判断不准确,如图5 所示,总是将在小龙虾类别中的这两张图像判断为中等大小的龙虾,根据猜测,有可能是数据集划分的问题,这两幅图像中龙虾的大小更接近于中等大小的龙虾,而不是小龙虾。高斯噪声数据集相对干净图像数据集识别准确率降低了5.95%,损失值上升了15.72%,所以在实际生产环境中,采集图像时由于不良照明或高温会引起高斯噪声掺入图像,进而对图像识别分级产生一定影响。椒盐噪声数据集相对于干净图像数据集识别准确率降低了11.29%,损失值上升了37.89%,所以椒盐噪声对图像识别的影响程度高于高斯噪声,对图像识别造成的影响较大。

通过对比可知,三个网络的训练效果均不及Effi⁃cientNet-B0,对于ResNet50、VGG16 和VGG19 这三个网络来说,所需要的数据集不能太小,而我们实验过程中的数据集大小是1695,所以实验曲线会呈现波动的现象,并且很容易发生过拟合现象,鲁棒性较差,即使使用Dropout 层,有时也会出现过拟合现象。然而,Ef⁃ficientNet-B0 对于数据集数量的要求就要低很多,并且不会轻易出现过拟合的现象。

图5 判断有误龙虾原始图像

相较于EfficientNet-B0,VGG 网络在训练的过程中会消耗更多的计算资源[11],并且在第一层全连接层产生了很多的参数,使得训练耗时过长。VGG19 的训练结果虽然比VGG16 的结果要好,但是仍存在此问题。

综上,在本文的情境下EfficientNet-B0 无论是在运算速度还是在鲁棒性上,都是最适合用作分级系统设计的网络,并且能够为其他工业生产领域提供借鉴的经验。

4 结语

本文针对小龙虾分级工业化问题,提出了基于深度学习的小龙虾分级系统。通过对EfficientNet-B0 的迁移学习搭建模型,并且证明了卷积神经网络在处理图像分类,模糊图像时的学习能力。通过添加ReLU激活函数和Softmax 激活函数能够有效地解决非线性问题,在编译模型时,采用的采用交叉熵损失函数和Adam 优化器大大提高了模型训练的效率。最终,对于清晰图像、高斯噪声图像和椒盐噪声图像的准确率分别为99.70%、93.75%和88.41%。通过对比可得出,该模型对噪声图像有很高的学习和适应的能力。

猜你喜欢
小龙虾卷积噪声
基于全卷积神经网络的猪背膘厚快速准确测定
今晚,给你一个吃小龙虾的理由
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
基于声类比的仿生圆柱壳流噪声特性研究
汽车制造企业噪声综合治理实践
小龙虾
要减少暴露在噪声中吗?
小龙虾