1. 引言
在谷类中,稻米是世界大部分人口的主要食物,是一种富含碳水化合物和淀粉的谷物。根据联合国农业组织提供的数据,水稻每年的产量位于主要谷类前列 [1]。稻种质量的好坏直接影响人的身体健康,确保同一批次的稻种纯度是有必要的。由于市场上出现了品种越来越多的种子,受过训练的专业人员也很难识别;另外,人工识别数量较多的稻种时,也会花费较长时间并且容易出错。机器视觉、近红外光谱、高光谱技术凭借快速、准确、无损检测等优点目前已广泛应用于农作物识别。运用机器视觉和图像处理技术可以对稻种外形、颜色、纹理等物理特征进行提取实现分类。
国内外在稻种识别方面的研究现状:Zhengjun Qiu [2] 利用两种不同光谱范围的高光谱成像技术对水稻种子品种进行鉴定,分类准确率达到87%;Fabiyi [3] 选取90种稻种利用高分辨率图像的空间特征,将其与高光谱数据的光谱特征融合,分类准确率达到78%;Castillo [4] 基于树莓派开发了一个便携式稻种识别系统,采用基于监督学习的卷积神经网络来实时识别稻种,准确率达到90%;Jin [5] 把近红外光谱与深度学习结合,使用ResNet对十种稻种进行分类,准确率达到86.08%;Huang [6] 根据三种稻种的形态特征,建立反向传播神经网络(BPNN),分类准确率达到95.56%;Kuo [7] 利用光学显微镜对30种稻种,采用图像处理和基于稀疏表示的分类(SRC)进行识别,准确率达到89.1%;Sethy & Chatterjee [8] 依据水稻几何纹理特征,采用多类支持向量机进行分类,准确率达到92%;Kantip [9] 分别采用支持向量机(SVM)和InceptionResNetV2的深度学习模型,对14种5000个样本的水稻进行分类,准确率达到95.14%。
本文提出一种使用CNN提取图像深度特征并将原来线性不可分的数据变得线性可分后,再使用对线性数据分类效果优秀的SVM进行分类的方法,最后与传统的图像识别方法灰度共生矩阵(Gray Level Concurrence Matrix, GLCM)、局部二值模式(Local Binary Patterns, LBP)、方向梯度直方图(Histogram of Oriented Gradients, HOG)进行对比,结果表明EfficientNet_b0 + SVM模型对稻种的分类在精度和速度上都有比较优秀的效果。
2. 理论方法
2.1. 卷积神经网络
CNN凭借权值共享大大降低了CNN系统的复杂性,减少了需要计算的参数量。卷积是对图像进行过滤直到遍历整个图像的过程 [10],其卷积公式可以描述为:
(1)
(2)
是
层第
个输入特征,
是
层第
个输出特征,
是
层的特征集合,
是介于在输入特征
第
层和输出特征
第
层之间的卷积核,
是输出特征
在
层的偏差。
为线性激活函数。
CNN主要包含卷积层、池化层和全连接层 [11]。在卷积层中输入图像有高度
、深度
、宽度
,在经过卷积层后宽度为:
(3)
其中
为卷积核的尺寸大小,
为需要补零的数目,
为步长。在经过卷积层后高度为:
(4)
为扩张的通道数。新的图像输出大小为
。通常会在连续的卷积层中加入池化层,其中池化层的作用是缩小前一层图像的尺寸,从而减少计算量、内存使用量、参数个数。池化层有最大池化和平均池化两种方式,本研究采用了平均池化的方式。在池化层中输入图像高度
、深度
、宽度
,在经过池化层后宽度为:
(5)
高度为:
(6)
深度
保持不变。最后经过全连接层整合图像的特征,采用softmax进行分类。
在训练一个大型的卷积神经网络时,训练数据不够多时易发生过拟合现象。所以本研究在代价函数方面上引入L2正则化防止模型过拟合,降低泛化误差,提高泛化能力。在梯度下降法中,用于迭代计算参数
的迭代式为:
(7)
其中
是学习率,上式是没有添加L2正则化项的迭代公式。在原代价函数之后添加L2正则化,则迭代公式为:
(8)
其中
是正则化参数。从公式得知每次迭代
都会乘上一个小于1的因子,使得
不断减小。较大的
将约束模型的复杂度,通过减小权重消除部分隐藏单元的影响,降低发生过拟合的可能性。
从修改神经网络结构上引入dropout提升网络的泛化能力。训练过程中设置dropout_rate = 0.2,即每一个输出节点以20%概率不工作。因为dropout的随机性,每次dropout后,网络模型都可以看成是一个不同结构的神经网络,所以将多个不同神经网络的预测结果取平均得到输出结果。由于随机地让一些节点不工作,因此可以避免某些特征只在固定组合下生效,可以有意识地让网络去学习一些普遍的共性从而提高模型泛化能力。
实验采用VGG、GoogLeNet、ResNet、EfficientNet、DenseNet、MobileNet、ShuffleNet网络进行测试。VGG网络通过堆叠多个3 × 3的卷积层替代大尺寸的卷积层,在拥有相同感受野的情况下能够减少所需参数 [12]。GoogLeNet引入Inception结构来融合不同尺寸的特征信息 [13]。ResNet该网络提出超深的网络概念,引入残差模块,使用Batch Normalization (BN)加速训练 [14]。EfficientNet_b0网络提出同时增加网络的宽度、深度以及输入网络的分辨率来提升网络的性能 [15]。DenseNet121设计的是一种稠密卷积神经网络,让每一层都接受它前面所有层的输出。具有缓解梯度消失问题,加强特征传播,鼓励特征复用,减少计算量的优点 [16]。
由于传统的神经网络内存需求大、运算量大导致无法在移动设备以及嵌入式设备上运行。轻量级CNN例如MobileNet_v2和ShuffleNet_v2被应用于移动端。MobileNet_v2提出Depthwise Convolution大大减少运算量和参数数量 [17]。ShuffleNet_v2提出影响模型性能的不仅是FLOPS,内存的使用量不能忽略。提出同等通道大小可以最小化内存访问量,过量使用组卷积会增加内存消耗,网络碎片化会降低并行度,不能忽略元素级操作。实验发现如果将ResNet中残差单元中的ReLU和shortcut移除的话,速度有20%的提升 [18]。
2.2. 支持向量机
支持向量机是在分类与回归分析中分析数据的监督式学习模型。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。线性分类可以理解为在2维空间中,可以通过一条直线来分类。在p维空间中,可以通过一个p-1维的超平面来分类。SVM线性可分的示意图如图1所示。

Figure 1. Linear separable diagram of SVM
图1. SVM线性可分示意图
SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
2.3. SVM代替Softmax分类器
通常softmax用作神经网络的最后一个激活函数,以将网络的输出标准化为预测输出类的概率分布。Softmax是CNN方法中用于分类的逻辑回归层,它是基于回归的原则,LR的损失函数也是得自于一个考虑了全局数据的自概率模型。逻辑回归的损失函数为:
(9)
为批次大小,
为在批次中第
次的预测标签,
为在批次中第
次的实际标签。
SVM的分类精度都主要依赖于数据中位于分割平面的一部分支持向量。支持向量机的损失函数为:
(10)
为欧几里得范数,C是惩罚参数,
是实际标签,
是决策边界。
从损失函数得知SVM与LR很大的一个区别是:SVM性能主要受支持向量的影响,而LR考虑全局数据的同时分类超平面也会受到每一个样本的干扰。所以可以认为当数据的特征处于一个线性不可分的状态的时候,SVM与LR是从两个不同的角度去解决了同一个分类问题。
CNN所连接的LR与单纯的LR的区别在于CNN在训练的同时就会趋于提取样本中feature的signature特征,也就是说CNN的卷积过程在训练的过程中就是对一个线性不可分的数据增加其线性可分程度的过程 [19]。当CNN的feature提取生效之后,原本线性不可分的分类样本趋于线性可分的时候,SVM只利用部分支持向量样本的分类原则的优势就能够得到进一步体现。将CNN的softmax分类器换成SVM分类器的示意图如图2所示:

Figure 2. Schematic diagram of replacing the softmax classifier of CNN with SVM classifier
图2. CNN的softmax分类器换成SVM分类器的示意图
3. 数据集和实验流程
3.1. 数据集
样本数据集有6个类别:郑旱10号、丹旱稻53、绿旱1号、绿银占、强两优698、扬籼优918。6个类别中包含了粳型常规稻、籼型常规稻和籼型杂交稻等主要栽培类型。
采用一种改进的Canny边缘检测算法 [20],使用自适应平滑滤波代替高斯滤波,在平滑图像的同时锐化了边缘。使用水平垂直、45˚和135˚四个方向梯度模板计算图像梯度,改善了传统Canny算法在计算梯度时对噪声的敏感性。对稻种数据集进行边缘检测,图像分割,使单个稻种成为一个样本。经过图像分割后得到6307个稻种样本。
根据数据增强的原理,对训练集样本进行旋转、翻转来扩大训练集的样本量。通过数据增加,数据集样本增加了一倍。对于每次训练和验证选择的样本都保证是随机的。样本数据集随机80%作为训练集和验证集,20%为测试集。
表1列举了实验稻种的名称与数量。

Table 1. Name and quantity of experimental rice varieties
表1. 实验稻种的名称与数量
3.2. 稻种识别流程
选择SVM对稻种进行分类,SVM目的是最小化经验风险和置信风险,以获得良好的样本统计规则,提高机器学习的泛化能力。激活CNN的GPU批量大小为32,且GPU有足够内存空间来容纳图像数据集。SVM使用one-vs-all编码设计。从CNN全连接层或平均池化层提取深度特征输入到SVM进行训练,流程如图3所示。

Figure 3. Flow chart of rice seed identification
图3. 稻种识别流程图
4. 实验结果
4.1. 实验环境与参数配置
研究的实验环境为Window10 64位系统,采用Pytorch深度学习开源框架,选用Python作为编程语言。CPU为Intel@Core-i7-9750H,并采用英伟达RTX2060显卡加速图像处理。
采用10种卷积神经网络对稻种特征进行提取。根据网络将图像尺寸调整为224 × 224像素,网络优化器采用随机梯度下降SGD,动量设置为0.9,学习率为0.001,权值衰减设为0.0001,训练50个epoch。对每个epoch中每个图像随机进行裁剪、缩放、旋转、归一化操作,这样使神经网络可以更准确提取图像特征 [21] 从准确性、敏感性、特异性、假阳性率(FPR)、F1 Score和训练时间等方面衡量各分类器的性能。
本实验采用One-Vs-all方法和线性核函数作为SVM分类器参数,用网格搜索和交叉验证的方法确定参数C。混淆矩阵参数表示为:
(11)
(12)
(13)
(14)
(15)
(16)
为真阳性,
为假阳性,
为真阴性,
为假阴性,
为测试集所有样本数量。
4.2. 使用预训练的CNN模型对稻种进行识别
从头开始训练深度学习网络需要大量的数据集并且也是一个耗时的过程。在本次研究中使用了迁移学习技术,初始化的权重来自预训练的模型,该模型已经在著名的ImageNet数据集上训练过。用自己的目标数据集重新训练预训练的权重,根据要分类的类型更新权重,同时调整学习参数以适应研究目的并减少训练时间。
使用Vgg16、Vgg19、GoogLeNet、Resnet18、Resnet50、Resnet101、Densenet121、EfficientNet_b0、Mobilenet_v2、Shufflenet_v2 10种常用的卷积模型。
只使用预训练的CNN对稻种进行识别,识别准确率如表2所示。

Table 2. Identifying rice seeds by the pre-trained CNN model
表2. 使用预训练CNN模型对稻种进行识别
4.3. 使用预训练的CNN模型对稻种进行识别
CNN + SVM在训练集上的性能如表3所示。通过对比表2和表3的结果,可以得知利用CNN提取特征后用SVM进行分类可以提升对稻种识别的准确率。
表3列举了各个CNN + SVM模型的测试性能。从表3中得知EfficientNet_b0和Densenet121准确率最高,性能最好。Resnet和GoogLeNet网络性能较好,Vgg网络和轻量级网络Mobilenet_v2和Shufflenet_v2性能比较一般。EfficientNet_b0凭借比Densenet121有着更短的测试时间,作为本研究最终使用模型,该模型在测试集的识别结果如表4所示。

Table 3. Depth features of various CNN models were used for system analysis based on SVM
表3. 利用各种CNN模型的深度特征基于SVM进行系统分析

Table 4. Identification results based on EfficientNet_b0+SVM model on the test set
表4. 基于EfficientNet_b0+SVM模型在测试集上的识别结果
在传统的图像处理和机器学习的方法中,采用GLCM + SVM、LBP + SVM、HOG + SVM进行图像分类。这些方法的F1 Score如表5所示。

Table 5. F1 Score for traditional image recognition method
表5. 传统图像识别方法的F1 Score
从图4 EfficientNet_b0 + SVM在测试集上的混淆矩阵中可以看出,模型对丹旱稻53和强两优698识别效果较为一般,绿旱1号和扬籼优918识别效果良好,绿银占和郑旱10号识别效果很好达到100%。

Figure 4. EfficientNet_B0 + SVM Confusion matrix on test set
图4. EfficientNet_b0 + SVM在测试集上的混淆矩阵

Figure 5. F1 score for all test models
图5. 所有测试模型的F1 score
5. 结论
本文提出了一种使用卷积神经网络提取图像深度特征并将原来线性不可分的数据变得线性可分后,再使用对线性数据分类效果优秀的支持向量机进行分类的方法。通过实验数据得知EfficientNet_b0 + SVM对稻种识别效果最好,识别准确率达到99.8%,每张图片识别速度为0.07 s,可在保持高识别准确率的条件下保持较快的识别速度。根据图5可以发现,在CNN的基础上加上SVM可以不同程度地提高模型识别性能,CNN+SVM相比传统图像识别准确率有着明显的提高。