APP下载

基于深度学习的蘑菇种类识别算法研究*

2019-07-04

中国食用菌 2019年6期
关键词:张量梯度灰度

罗 奇

(武汉体育学院 体育工程与信息技术学院,湖北 武汉 430079)

蘑菇含有大量的蛋白质和多种氨基酸,因而味道鲜美深受人们喜爱[1]。我国的蘑菇种类有400多种,70% 左右的蘑菇是可以食用的,但也有近100种蘑菇是有毒的,误食会危及身体健康乃至生命。因此,十分有必要进行蘑菇种类的识别,人工识别受经验限制,许多蘑菇的外观非常类似,如可致病的亮黄蘑菇在外观上和可食用的蘑菇外观上几乎没有区别。因此,借助计算机图像识别技术来自动识别蘑菇种类在近年来成为了机器学习研究的热点[2]。

在长期的生产生活实践中,人们拍摄了大量的蘑菇照片,这些照片包括野外的蘑菇生长照片,也有蘑菇植物标本照片等,从数以万计的照片中对蘑菇进行分类识别,需要耗费大量的人力资源,也不切实际[3]。因此,使用计算机视觉和机器学习的图像识别方法被应于蘑菇种类的识别中,从海量的蘑菇图片中自动识别蘑菇种类成为了可能[4]。

作为一种重要的深度学习模型,卷积神经网络(CNN)近年在计算机图像识别中都取得很大的成功,其识别效率也不断提高。但传统的卷积神经网络生成的特征图在空间维度上还存在有大量的冗余,图像处理效率上还不算高效[5-7]。文章利用图片的频率分离和压缩中原理,对传统的卷积网络也进行频率压缩,分别处理高低频两个部分的数据,并在二者之间进行信息交换,从而减少传统卷积神经网络运算对存储和计算量的消耗[8],提高图像识别性能。

1 相关原理

将蘑菇图像按照其灰度值变化的速率(即变化快慢程度)分成两部分[9],一部分是颜色变化缓慢的低频部分,那么剩余的就是颜色变化快的部分,即高频部分,高频部分实质上就是图像的边缘,因为只有灰度急剧的变化才能出现边缘的现象,图像才会呈现明显的差别,所以其图像频率都比较高。而图像边缘内的内容就是低频部分,是一张图像的大部分信息,即图像的大致概貌和轮廓,是图像的近似信息。

对于蘑菇图像来说,还有两个图像指标也在高频部分。一个是图像的细节也是属于灰度值急剧变化的区域,正是因为灰度值的急剧变化,才会出现细节;另外一个就是图像噪声(或者噪点),某个像素所在的位置之所以会出现噪点,就是因为它与正常点的颜色出现了明显的差别,也就是说该像素点灰度值明显不同于其它区域,从而产生了灰度上颜色快速改变,因此有噪声一般也都出现在图像的高频部分[10-11]。

对于蘑菇图像来说,如果由于拍摄光线或角度的问题,成像的背景颜色与蘑菇主体颜色差别较小融为一体,那么人眼识别蘑菇体时也会出现问题,其原因就是没有亮度和颜色的变化,整个成像大面积是一片灰度变化缓慢的区域,对应的频率值很低。因此,拍摄成像时必须能够让蘑菇主体的边缘与背景出现高亮或阴影,呈现出边缘的轮廓线条,这些线条就是颜色灰度的分界,就是成像一片灰度变化剧烈的区域,其对应的图像频率值较高,能够呈现出边缘细节,以便更好地勾勒出蘑菇主体轮廓,从而识别出蘑菇主体特征进行分类[12]。

因此,将卷积特征映射分解成不同空间频率的两个组,将蘑菇图像中的低频率部分进行压缩,以减少冗余空间,利用卷积神经网络中卷积层的输出特征映射来模拟拍摄的蘑菇照片,将不同频率信息进行混合处理和信息交换,并分别以相应的频率处理不同的卷积,从而减少卷积运算对存储和计算量的消耗。

2 实现方法

2.1 蘑菇图像的特征表示

对于传统的卷积神经网络来说,我们使用傅立叶变换将蘑菇图像从空间域转换到频率域,也就是说将蘑菇图像的灰度分布函数变换为图像的频率分布函数[13]。所有输入和输出特征映射都具有相同的空间分辨率,我们用X和Y分别表示输入和输出张量。

式中:h,ω表示卷积层的空间,c表示特征图或频率通道的数量

我们明确地将输入张量沿频率通道维数分解为:X={X H,X L}。其中为高频特性为低频特征,注意在这里α的取值范围为[0,1],α 表示的是分配给低频部分的信道比率,低频特征图定义为比高频特征图的梯度要低。

2.2 降梯度卷积的设计

由于蘑菇图像的特征表示中低频特征图定义为比高频特征图的梯度要低,因此这种表示方法减少了空间冗余,比传统的卷积表示方法更加精简[14]。在降梯度卷积中由于输入特征的空间分辨率不同,普通卷积不能直接在这种表示上操作。一种简单的规避方法是将低频部分采样到原始空间分辨率,将其与高频部分连接,然后进行卷积运算,这将导致额外的计算和内存成本,并减少压缩带来的所有节省。因此,采用了一种精简的多频特征表示,将其称之为降梯度卷积,降梯度卷积可以直接操作,从而使输入输出张量不需要任何额外的计算或内存开销。

传统卷积 (vanilla convolution)

在这里,(p, q)为X张量的位置坐标,(i, j)表示所取的近邻范围,我们可以定义的一个局部邻域为:

针对蘑菇图像的特征表示,我们使用降梯度卷积来处理低频和高频两部分所对应的频率张量,当然,也需要让蘑菇图像特征向量高频和低频分量之间进行有效的通信。

设用X和Y为卷积核的输入和输出张量,为了能够直接计算卷积,我们分割卷积核W,将其分割成W H高频和W L低频2个部分,分别与X H和X L卷积对应:

其输出张量也可表示成:

这里Y H = Y H→H + Y L→H,而Y L = Y L→L + Y H→L其中,Y H→L代表从H到L的特征映射后更新的结果,而Y L→H代表从L到H的特征映射后更新的结果;Y H→H与Y L→L都代表了频率内所更新的信息,而Y L→H与Y H→L代表了频率间的通信,这样实际上就是将分量进一步分解为频率内和频率间分量,即:

蘑菇图像降梯度卷积的具体方法是:对于图像中的高频特征图,使用常规卷积在位置(p, q) 处进行计算,用于频率内更新,对于频率间通信,可以将特征张量X L的采样折叠到卷积中,从而消除了对上采样特征图进行显式计算和存储的需要,如下所示:

对于特征张量X H的采样同样也可以折叠到卷积中:

传统卷积会在位置(p, q) 处进行计算,用于频率内更新,对于频率间通信,可以将特征张量X L在位置(p, q) 进行向下进行2倍采样,并将位置进一步移动半步,以确保向下采样的特征图与输入一致,但由于与X H的索引只能是一个整数,因此我们采用了一种四舍五入的方法,即在( 2 *p+i,2 *q+ j)或近似于( 2*p+ 0.5 +i,2 *q+ 0.5 j)的值,以得到所有4个相邻位置的平均值。

在传统的卷积神经网络分类中,池化层用于对输入的特征图进行压缩[15],一方面使特征图变小,简化网络计算复杂度,另一方面也可以用于特征压缩以便提取主要特征,池化虽然能够增加视野降低特征图分辨率,以此来提升分类效果,但会导致错位,我们使用平均池来估算蘑菇图像降梯度卷积其余部分的这个值,即使用近似于( 2 ×p+ 0.5 +i,2 ×q+ 0.5 j)的值。利用这个平均值将蘑菇图像降梯度卷积的两个输出张量Y ={Y H, Y L}重新表示为:

其中:f(X;W)表示参数W的卷积,pool(X,K)表示一个卷积内核大小为K × K的平均池函数,其步幅为K;

upsample(X;K)是一个通过最近插值的系数K向上采样函数。f(X L;W L→L)

可以看出,蘑菇图像降梯度卷积处理过程由f(X H;W H→H)和f(X L;W L→L) 来计算图像的高频和低频特征值,同时,通过f(pool(X H,2);W H→L)和upsample(f(X L;W L→L) 2)这来进行高频和低频特征值之间的信息交换。因此,该降梯度卷积的低频特征映射有较大的视野,与传统的卷积神经网络相比,可以获得2倍的感受视野,这就在位置(p, q) 之外的更远的地方可以捕获更多的上下文信息,从而有效提高了蘑菇分类图像的识别性能。

3 实验结果与分析

3.1 蘑菇种类数据集

本次实验所采用的蘑菇数据集是一个包含8123个样本的数据集,有22个特征,主要有菌盖颜色、菌盖形状、菌盖表面形状、条纹、菌褶、菌环、菌柄、菌托、菌丝索、鳞片等蘑菇的主要外部图像特征。整个数据集如图1所示,对于气味等非图像特征不列入本次实验。

图1 蘑菇种类数据集Fig.1 mushroom species data set

由于实际拍照的角度和野外环境的限制,蘑菇图像一般不太可能有全株完整的图像,同时,由于原始的蘑菇数据集中会含有一些干扰背景内容,这些干扰背景不能成为蘑菇分类识别的特征,有些背景会严重影响本分类算法的鲁棒性。为了保证实验方法的有效性,我们在蘑菇分类识别前,先对原始蘑菇图像进行背景去除,形成单一背景的蘑菇图像,选取数据集的5 023张蘑菇图像当作训练集,其余的3 100张图像作为测试集开展实验。

3.2 实验结果与分析

传统神经网络训练模型训练结果如图2所示。可以看出,第1张图片命中类别的准确率为48.7%。图3为降梯度卷积模型的实验结果,第1张图片命中类别的准确率达到了81.7%,训练的损失率0.2%几乎接近于0,而验证的损失率稳定在0.7%左右。可以看出改进的深度学习降梯度卷积模型的泛化能力比较好,而且已经达到较高的识别准确率。

图2 传统卷积神经网络(CNN)训练模型Fig.2 Traditional Convolutional Neural Network (CNN) training model

图3 降梯度卷积训练模型Fig.3 Falling gradient convolution training model

在3 100张测试图像中,对每种蘑菇挑选30张图像作为测试图像,测试降梯度卷积训练模型对每种蘑菇图像中的第1张、第2张和第3张命中准确率和耗费时间,部分蘑菇图像识别的测试示例如表1所示,同时,表1也给出了整个测试的统计结果。

从测试结果可以看出,降梯度卷积训练模型的平均耗费时间为0.985 s,识别第1张的平均准确率达到了91.6%,第2张和第3张的平均准确率都高于95%,说明降梯度卷积训练模型具有较高的准确性,而且在数据量比较大的情况下识别速度也比传统的传统卷积神经网络要快。

表1 部分蘑菇图像识别测试示例及统计结果Tab.1 Part of mushroom image recognition test examples and statistical results

4 结论

本文将深度学习方法应用于蘑菇图像的识别分类中,并针对传统的卷积神经网络在样本训练中存在的空间冗余问题,采用了一种降梯度卷积训练模型,利用图像高频和低频部分不同的特性值分别进行存储和处理,并对不同频率传递的信息给出了信息交互的方法,有效提高了蘑菇分类图像的识别性能。通过对蘑菇种类数据集的实验验证,证明该方法具有较好的识别速度和准确率。

但由于本次实验验证采用了单一背景的蘑菇图像,其实际应用效果还需要研究,后续将研究降梯度卷积训练模型对复杂背景自然环境中蘑菇图像的识别准确率,以期获得更贴近实际应用的蘑菇图像分类识别方法。

猜你喜欢

张量梯度灰度
带非线性梯度项的p-Laplacian抛物方程的临界指标
采用改进导重法的拓扑结构灰度单元过滤技术
一类张量方程的可解性及其最佳逼近问题 ①
严格对角占优张量的子直和
一类张量线性系统的可解性及其应用
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
四元数张量方程A*NX=B 的通解
Arduino小车巡线程序的灰度阈值优化方案
一个具梯度项的p-Laplace 方程弱解的存在性
基于AMR的梯度磁传感器在磁异常检测中的研究