基于轻量级卷积神经网络的植物叶片病害识别方法

2021-07-02 08:55贾鹤鸣郎春博姜子超
计算机应用 2021年6期
关键词:池化全局卷积

贾鹤鸣,郎春博,姜子超

(1.三明学院信息工程学院,福建三明 365004;2.福建省农业物联网应用重点实验室(三明学院),福建三明 365004;3.西北工业大学自动化学院,西安 710129;4.东北林业大学机电工程学院,哈尔滨 150040)

(∗通信作者电子邮箱lang_chunbo@163.com)

0 引言

植物病害的产生对农业生产有一定负面影响。如果不及时发现植物病害,就会增加粮食的风险[1],特别是对一些主要的粮食作物,如玉米、水稻、小麦等,它们是满足人民生活需要、推进生产力发展的关键。因此,探求一种智能化、低成本、高准确的方法来实施植物病害检测有着重要的现实意义。机器学习中的特征提取和模式识别有助于识别植物病害的类型和严重程度。通过植物叶片图像的颜色、形状和大小等特征对植物健康状况进行自动质量分析,是提高生产力的一种准确可靠的方法[2-3]。

以往的许多研究工作都考虑了图像的识别问题,并采用一种特殊的分类器将图像分为健康图像和病变图像。一般来说,植物叶片是植物病害识别的第一手资料,因为大部分病害的症状最先出现在叶片上。在过去的几十年里,主要病害的识别和分类技术在植物中得到了广泛的应用,包括K近邻(K-Nearest Neighbor,KNN)[4]、支持向量机(Support Vector Machine,SVM)[5]、Fisher线性判别(Fisher Linear Discriminant,FLD)[6]、人工神经网络(Artificial Neural Network,ANN)[7]、随机森林(Random Forest,RF)[8]等。众所周知,经典方法的疾病识别率很大程度上取决于各种算法的病变分割和手工设计的特征,如七不变矩、尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)、Gabor 变换、全局-局部奇异值和稀疏表示[9-11]等。然而,人工设计的特征需要昂贵的资源条件和专业的知识,同时具有一定的主观性。况且从被提取的目标上很难确定哪些特征是最优的、鲁棒的疾病识别特征。此外,在复杂的背景条件下大多数方法都不能有效地将叶子和相应的病变图像从背景中分割出来,导致实验得到的结果不能有效地用于预测疾病的发生。因此,由于病害叶片图像的复杂性,植物病害图像的自动识别仍然是一项具有挑战性的工作。

近年的深度学习技术,特别是卷积神经网络(Convolutional Neural Network,CNN),正在迅速成为克服上述挑战的首选方法。由于卷积神经网络的尺度不变性,使得它解决的图像问题不受尺度限制,进而在识别和分类方面表现出突出的能力。例如,Mohanty等[12]训练了一个深度学习模型来识别14 种作物和26 种作物病害。Ma 等[13]利用深度CNN对黄瓜霜霉病、炭疽病、白粉病和目标叶斑病这4 种病害的症状进行识别,识别准确率达到了93.4%。Kawasaki 等[14]提出了一种基于CNN 的黄瓜叶病识别方法,达到了94.9%的准确率。同样,本文也利用CNN 对植物叶片病害特征进行提取,提出了一种基于VGG-16(Visual Geometry Group-16)的轻量级卷积网络。首先,在原有网络中引入深度可分离卷积(Depthwise Separable Convolution,DSC)[15]和全局平均池化(Global Average Pooling,GAP)[16],代替标准卷积运算操作并对网络末端的全连接层部分进行替换。同时,批归一化的技术也被运用到训练网络的过程,以改善中间层数据分布并提高收敛速度[17]。改进后网络在植物叶片病害数据集PlantVillage 上的实验结果表明,所提出的轻量级卷积网络在识别精度与效率方面有了明显的提高,适用于植物叶片病害识别的任务,具有较强的工程实用性以及较高的研究价值。

1 卷积神经网络

1.1 卷积神经网络基本理论

卷积神经网络是一种通过多层网络互联并相互传递数据信息的常见深度学习模型。每一层都具有独特的特征来处理输入数据并将其发送到下一层。卷积神经网络从输入待处理图像到输出分类结果的过程,包括:用于获取数据并进行预处理的输入层、提取图像高级特征的卷积层、降采样的池化层、提高模型非线性的ReLU 激活层、整合卷积层提取的高级图像特征的全连接层、在模型最后部分输出各类别预测概率的Softmax层。

1.1.1 输入层

图像输入层是CNN 体系结构中的重要组成部分,其将2-D 和3-D图像作为主要处理对象。

其中:Input代表图像输入层,该层对给定图像I进行预处理操作,进而得到满足要求的图像V作为后续卷积层输入;D代表输入图像通道数。

1.1.2 卷积层

该层按照一定的规则在输入图像V=m×n上移动卷积内核窗口k。内核窗口k每次滑动的距离由步长Sd决定,具体计算过程如下:

其中:Fm表示图像特征信息;Rl表示激活函数,主要用来改善模型的非线性。

1.1.3 批归一化层

该层通过改善中间层的数据分布,进而影响模型优化器的梯度下降过程以实现提高模型收敛性能的目的。它采用了来自前一层卷积的特征图Fm并将其激活归一化,该过程可以定义为:

其中:N(·)表示归一化函数;ax表示特征图中统一进行均值与方差计算的坐标轴信息;M表示决定均值与方差之间变化的动量率。

1.1.4 池化层

对从批归一化层获得的每个特征图Fm+1执行最大池化操作,以减小图像大小。步幅Sd的值通常由用户手动选择。池大小Ps必须按以下方式赋给该层:

1.1.5 全连接层

全连接层主要作用是归整前面网络层获取的图像信息,将原本稀疏连接的方式转化为完全连接的形式,如式(5)所示:

1.1.6 Softmax层

该层主要设计用于对全连接层的输出进行分类和预测,并输出每个类别的模型预测结果,其计算式如下:

其中,F(Xi)可以计算全连接层Yn返回的每个类别的概率。

1.2 VGG网络

VGG 网络(VGGNet)是由牛津大学视觉几何小组和谷歌的DeepMind的研究人员开发的一种深度CNN,致力于研究网络深度和CNN 性能之间的联系[18]。通过反复堆叠小尺寸卷积层和池化层,建立了一个网络深度为16~19 的深度卷积神经网络模型,并探索了深度对网络性能的影响。与之前最先进的网络架构相比,VGGNet 的错误率明显下降,在2014 年ILSVRC(ImageNet Large Scale Visual Recognition Challenge)竞赛中获得第二名,在定位项目中获得第一名。在VGGNet 的所有研究中都使用了3×3 卷积内核和2×2 池内核,通过不断深化网络结构来提高性能。

图1 给出了具有5 个卷积模块的VGG 网络结构,每个卷积模块通常包含2~3 次卷积运算。其中,Input、Conv、Pool、FC、Softmax 分别代表输入层、卷积层、池化层、全连接层和分类层。

图1 VGG网络框架示意图Fig.1 Schematic diagram of VGG network framework

2 轻量级卷积神经网络

针对传统CNN 参数较多、易过拟合的问题,分别采用深度可分离卷积和全局平均池化策略替换其标准卷积以及全连接层部分。此外,批归一化的方法也被分别用于调整中间层数据分布和防止模型过度拟合。

2.1 深度可分离卷积

深度可分离卷积完整过程的第一步是深度卷积部分,也叫通道卷积(图2(b))。给定与特征图中具有相同通道数的过滤器数量,并以通道为单位分别进行卷积运算,如式(7)。

图2 深度可分离卷积与标准卷积对比Fig.2 Comparison between depthwise separable convolution and standard convolution

深度可分卷积的第二步是将第一步输出的特征图与通道数和深度卷积相同且大小为1×1 的卷积核相结合。逐点卷积核的个数在这部分中就代表着提取特征的个数,该操作组合了特征图的各维度,因此减小了通道数量,其具体计算过程如式(8)所示:

其中:W是卷积核的权重矩阵,并且是可训练的;x表示输入到卷积层的特征图,(i,j)表示元素的坐标索引;m、n和k是卷积核的3个维度。

2.2 全局平均池化

为了解决传统网络易过拟合的问题,在卷积神经网络的结构中引入了全局池化层来代替全连接层,将卷积层输出的多个特征图以自身为单位进行映射,映射结果为一个特征点。多个特征点便得到了与上述特征展开相似的一维向量,而后传入Softmax层中进行分类。

2.3 批归一化

批归一化层的主要目的是解决网络深入化导致的中间数据分布不均影响模型学习效率的问题。具体来说,对于具有n维输入的层x=(x1,x2,…,xn)。

首先,对每个单元所表示的特征进行归一化,使其具有0均值和1标准差。

其中:E[xi]是每个单元的平均值;表示标准偏差。通过引入参数γi和βi对激活值进行移动和缩放来解决原有表征改变的问题,变换式如下:

该变换在Wxn的每个维度中独立使用,具有一对独立学习参数γn和βn,xn和W分别表示输入数据集和权重矩阵。

2.4 算法架构与分析

图3 给出了VGG16 网络的架构示意图,可以看到随着特征提取的进行,特征图的尺寸由于池化层的作用而不断减小,维度由于卷积核个数的增多不断增加。算法逐步提取出更多且更高级的图像特征信息,以更好地胜任分类识别任务。此外,改进卷积神经网络的算法各层级信息如表1 所示,其中:“3,3”代表卷积核大小;“DSConv”代表深度可分离卷积;“64/S1”代表卷积核个数与卷积步长。以第一层“3,3 DSConv,64/S1”为例,该层参数由逐通道卷积与逐点卷积两部分组成(如2.1 节介绍),首先逐通道卷积部分参数为“卷积核大小×输入通道数”即“32×3”,其次逐点卷积部分为“点卷积核大小×输入通道数×卷积核个数”即“(1×1×3)×64”。同理可得第二层参数,区别在于输入通道数由3 变为64。从表1 中可以明显看出,加入全局平均池化策略后节省了传统全连接层大量的参数,如果不采用GAP 方法改进该部分,则全连接fc1层的参数为8×8×512×4 096=134 217 728。

表1 改进网络的各层级信息Tab.1 Information of different levels of improved network

图3 轻量级卷积神经网络架构Fig.3 Architecture of lightweight convolution neural network

为解决传统网络进行植物叶片病害识别过程产生的过拟合问题,本文采用深度可分离卷积与全局平均池化策略分别代替标准卷积运算与全连接层进行网络优化。具体来说,深度可分离卷积通过将标准卷积运算拆分为逐通道卷积与逐点卷积以减少卷积层部分参数。如果输出通道的数量为o,那么标准卷积层所需的总参数为m×n×k×o。深度可分离卷积运算的参数则由逐通道与逐点卷积两部分组成,为m×n×k+k×o,它们之间的比例是。而在时间复杂度方面,深度可分离卷积同样具有一定的优势,设M和K分别表示特征映射和卷积核的大小,Cin和Cout分别表示输入和输出通道的数目,则标准卷积的时间复杂度是O~(M2×K2×Cin×Cout),深度可分离卷积的复杂度可表示为O~(M2×K2×Cin+M2×Cin×Cout),当输出通道数较大时,方法之间的复杂度差异更加明显。因此,本文采用深度可分离卷积来替代传统的标准卷积运算以减少卷积层部分复杂度,防止过拟合现象产生。之间的对应关系,另一个优点在于对特征图求均值的操作不需要额外的参数,与大量参数构成的全连接层相比能够避免训练集过度拟合的现象发生。此外,全局收敛对空间信息进行了总结,因此所构造的特征向量对于输入图像的空间平移具有更强的鲁棒性。在植物叶片病害识别中,使用全局平均池比全连接操作有更好的识别效果,因为GAP 可以实现对于数据的降维和参数的压缩,有效地防止过拟合发生并增强模型泛化能力。由于在GAP 中不需要对参数进行优化,因此可以有效地克服过拟合并减少参数训练的时间。此外,批归一化操作的引入有效地解决了网络中间层数据分布不均的问题,按特征维度求均值与标准差进而进行归一化的操作改善了特征分布情况,对收敛速度与精度均产生了较好的影响。

3 植物叶片病害识别实验

而对于传统算法中参数量庞大的全连接层部分,本文采用全局平均池化策略对其进行优化。全局平均池化层对卷积层输出的特征向量逐通道求取特征均值,通道数对应分类器所需的类别数。其优点之一是增强了提取的特征映射和类别

3.1 数据集及预处理

本文将深度学习模型架构在植物叶片图像上进行了训练,然后对该模型未见过的图像进行疾病分类和识别。该研究使用 了PlantVillage[19]的公共 数据集。PlantVillage 拥 有54 306 张图像,其中包括14 种农作物上的26 种常见病害,共38类。选取原始数据集中部分图像进行展示,如图4所示,分别为:苹果疮痂病、黑腐病、锈病、健康叶;玉米灰斑病、锈病、枯叶病、健康叶;番茄靶斑病、菌斑病、黄曲叶病、健康叶。

图4 植物叶片病害数据集部分图像Fig.4 Some images of plant leaf disease dataset

通过整理数据可以发现,植物叶片数据存在对比度较低、样本分布不平衡等问题,这会在一定程度上影响训练的速度以及收敛精度。因此,分别利用直方图均衡化以及数据扩充技术加以改善(如图5 所示)。在本文研究中利用Python 脚本语言编写程序,采用随机旋转角度、随机缩放原图、随机水平/垂直翻转操作实现样本数据的增强。在对少量样本数据类数据扩充的同时也对大量样本数据类进行删减操作,最终使得各类样本数据均为1 500张。

图5 植物叶片病害图像预处理过程Fig.5 Preprocessing process of plant leaf disease image

3.2 实验环境及设置

实验在图形处理单元(Graphics Processing Unit,GPU)模式下进行,实验所用计算机的详细配置为:内存16 GB,Nvidia GTX980Ti显卡,使用的操作系统为64位Ubuntu 16.04。实验选用的脚本语言为Python,并安装OpenCV 图像处理库、Pytorch深度学习框架。

实验以小批量的形式进行,每批同时用32 张图片进行训练/测试。损失函数优化器采用随机梯度下降(Stochastic Gradient Descent,SGD)算法,学习率采用warmup 更新策略(如图6 所示)。初始学习率为1E-6,最大学习率为1E-2,预热周期为3 个epoch,动量为0.9,权重衰减系数为1E-3。此外,在优化器的warmup 阶段结束后,学习速率的更新方式是,如果当前epoch 的测试精度低于上一个epoch 的测试精度,学习率衰减到原来的1/2。遍历测试集中的所有图片一次称为一个epoch,在训练阶段执行15个epoch。

图6 warmup学习率调整方式示意图Fig.6 Schematic diagram of warmup learning rate adjustment mode

3.3 实验结果与讨论分析

本节中改进的卷积神经网络被用于解决植物叶片病害识别问题,实验可以被分为五部分,分别探究数据集扩充、改进策略加入、不同初始化与激活函数、全局池化类型对测试精度的影响以及与其他植物病害识别技术的对比。

3.3.1 数据集扩充对测试精度的影响

3.1 节介绍了对PlantVillage 数据集的扩充操作,将样本分布不平衡的原始数据集调整为每类均有1 500 张图像的数据集。表2 展示了算法改进前后在原始数据集和扩充后数据集上的评估指标值对比情况。本节实验中选择的准确度评价指标的计算方法是38 类正确预测样本数与测试集大小的比值。平均查准率和平均F1 评分为各类别查准率和F1 评分的平均值。

表2 扩充数据集前后算法性能指标对比Tab.2 Comparison of algorithm performance indexes before and after extending dataset

从表2 中可以看出,使用数据增强操作处理后的数据集进行实验,传统网络和改进后网络在各指标上均有所提升,提升比例约为1 个百分点。例如原始模型的测试精度从97.281%提升至98.304%;平均查准率从97.294%提升至98.306%;平均F1 评分从97.367%提升至98.301%。对于特征信息获取方面,通过随机缩放、旋转、翻转等操作对原始数据进行增强,得到的扩充数据集能够帮助模型学习到更加鲁棒且更具判别性的特征,这类特征的泛化性能更好,进而在训练集上进行测试同样得到了更高的精度。对于数据分布方面,扩充后的数据集中各类训练样本数量相同、分布均匀,这使得模型对于各类别的学习过程不会偏向某一类或某几类,得到的模型泛化能力较强,进而在指标结果中得以体现。

3.3.2 改进策略对测试精度的影响

本节将从测试精度和训练时间两个方面分析改进策略对实验结果的影响。测试精度反映了模型解决当前植物病害分类问题的能力,训练时间反映了模型获得解决当前问题能力所花费的成本。

图7 显示了传统模型和改进模型在扩展数据集上的精度和损失的比较结果。可以看出,改进模型的收敛精度优于原模型(迭代停止时更高的测试精度以及更低的测试损失),这是因为深度可分离卷积和全局平均池化策略的结合有效地减少了模型的参数量,避免了模型对当前训练样本的识别能力较好而测试样本的识别较差的过拟合现象发生,提高了其泛化和适应新样本的能力,进而在测试集上获得了更好的收敛精度,而原始模型由于其庞大的参数量导致其在测试集上的泛化性能较差,并不能在学习过程中获得更具判别性的图像特征。从收敛速度方面来看,改进后算法在第8个epoch 开始收敛,而原始算法在第7 个epoch 开始收敛,尽管收敛速度较慢于传统模型,但综合精度与速度可以发现,改进后的模型有效地避免了测试集过拟合的现象发生,能够在解空间内获得更为优异的参数。

图7 扩展数据集上传统模型和改进模型的性能比较Fig.7 Performance comparison between traditional model and improved model on extended dataset

表3 给出了不同改进策略组合对模型测试结果的影响,包含骨干网络分别结合深度可分离卷积与全局平均池化后的测试精度与测试损失。从表3 中可以看出,对标准卷积运算和全连接层的改进都带来了性能的提升,而后者的效果更为明显。这是因为导致传统网络过拟合现象产生的关键在于参数量庞大的全连接层,对此部分进行优化能更好地解决该问题。但通过逐通道卷积与逐点卷积相结合的方式代替标准卷积运算的操作也能够在一定程度上减少卷积层部分的参数量,并获得较高的测试精度,这也从侧面说明了本文方法将两者结合的可行性与有效性。观察实验结果可以发现,深度可分离卷积与全局平均池化策略的结合使模型在测试阶段获得了最高的精度与最低的损失,进一步验证了所提方法的可靠性与高效性。

表3 不同改进策略组合的测试结果Tab.3 Test results of different combinations of improvement strategies

表4 给出了网络改进前后参数量及运行时间的比较,可以看出改进后的网络参数量远小于改进前参数量,这是由于全连接层占据了原始网络的绝大部分参数,而采用的全局平均池化策略替换了原有的全连接层,减少了网络的主要参数;此外,深度可分卷积部分将标准卷积分成逐通道卷积和逐点卷积两部分,进一步降低了原卷积层部分的参数,极大改善了复杂网络的易过拟合特性,在参数量较少的同时,提高了测试精度。从程序运行时间方面看,在每批训练32 个样本的情况下,原始模型需要586 s 的时间,而改进模型仅需要233 s。程序总时间上的差别更加明显,训练15 个epoch 花费的时间相差109.615 min,体现了改进后模型在训练成本方面的优异性。综合来看,改进后的模型参数量显著降低,其成效不但体现在防止过拟合进而提高测试精度方面,同样体现在训练所需的时间成本方面,具有很强的工程实用性。

表4 算法改进前后参数量及运行时间比较Tab.4 Comparison of parameter number and running time before and after improvement

3.3.3 初始化类型与激活函数对测试精度的影响

在本节中,针对不同初始化方法与激活函数类型的模型进行性能测试,进一步优化模型。网络参数的初始化方式对于模型的学习过程以及最终的测试精度均有一定的影响:较好的初始化值能够加快优化算法对其数值调整的速度,进而提高收敛速度;而较差的初始化值不但会减缓优化的进程,甚至会导致算法陷入局部最优。具体来说,本文将初始化类型分为高斯初始化和Xavier初始化,激活函数类型分为ReLU 和PReLU。

实验结果如表5 所示,可以发现使用Xavier 初始化方法与PReLU 激活函数均能带来性能的提升,而且这两种改进方式的结合使得测试精度进一步提高。

表5 初始化类型与激活函数对测试结果的影响Tab.5 Influence of initialization type and activation function on test results

具体来说,Xavier 初始化方法的目标是使得每一层输出的方差应尽量相等,这与2.3 节中批归一化方法的作用相类似,即改善中间层的分布情况。因此,引入该初始化方法后的模型获得了更为优异的初始分布,优化了模型的学习过程。而PReLU 函数通过引入参数改善了传统ReLU 激活函数负半轴激活值为0 的死区,使网络所学习的特征更加具有鲁棒性与判别性,进一步提高其在测试集上的精度。从结果上看,仅使用Xavier 初始化可以提升精度0.012 个百分点,仅使用PReLU 激活函数可以提升0.007 个百分点,而结合使用的方式可以提高0.035 个百分点。实验结果表明,改善初始化方法以及激活函数类型均能够提高模型对于测试样本的识别性能,而且本文所提模型的性能仍具有一定的提升空间,结合近年来神经网络改进策略,有一定的潜力达到更高的识别准确率,更具应用前景。

3.3.4 全局池化类型对测试精度的影响

本节探讨改进后网络全局池化部分的不同类型对算法性能所产生的影响。具体来说,改进策略中的全局池化方法分为全局最大池化和全局平均池化,区别在于从给定的特征映射到输出节点的转换过程是计算所有元素的最大值还是平均值,分别对应于显著表达和整体表达。

表6 给出了全局平均池化以及全局最大池化的测试结果,可以看出,相较于最大池化,全局平局池化在当前网络结构上表现出更好的适应性,得到了更高的测试精度以及更小的测试损失,表明对于当前数据集合,提取其整体特征的效果相较于显著特征的效果更好,即获取更具判别性的整体信息意义较大,对样本局部特征的综合与总结有助于模型判别目标,但这不足以说明全局最大池化在解决图像分类问题中的意义和价值,毕竟没有方法可以普遍适用全部模型以及全部问题,因此需探究不同改进策略对网络的影响。

表6 全局池化类型对测试结果的影响Tab.6 Influence of global pooling type on test results

3.3.5 与其他植物病害识别技术的对比

为客观而全面地评估所提网络模型的性能,在本节引入其他学者解决PlantVillage 数据集图像识别问题的方法进行比较,实验结果如表7 所示。由表7 中可以发现,本文方法获得了最高的测试精度以及F1 评分,提升效果为1~2 个百分点,且相较于文献[20]方法节省了88.5%的参数,兼顾了识别准确率与资源利用率。相较于文献[20]中采用群智能优化算法对网络进行优化的策略相比,本文对于优化器方法部分没有进行改动,仅选择了标准的SGD 优化算法,但全局平均池化以及深度可分离卷积等策略的引入极大地减少了网络参数,获得了相较于改进优化器方法更好的泛化能力与测试精度。与文献[21]方法相比,本文方法对于过拟合问题的处理采用了GAP 与DSC 策略相结合的方法,比单独改进卷积方式效果更为明显,取得了参数量与测试精度间的平衡。

表7 不同方法在PlantVillage数据集上的性能对比Tab.7 Performance comparison of different methods on PlantVillage dataset

此外,为更好地分析本文网络获得图像特征表达的过程,分别将各模块中卷积层的输出特征图可视化,如图8 所示。由图8 可以看出,随着网络层数的提高,所提取的图像特征越来越抽象,特征的纹理性逐渐被更高级的语义性所取代;而本文提出的网络从过程上看获得了较为丰富的边缘信息,从结果上看又取得了较高的识别精度,适用于植物叶片病害的识别。

图8 可视化卷积特征图Fig.8 Visual convolution feature maps

4 结语

本文提出了一种轻量级网络模型来解决生产实际中植物叶片病害识别困难、智能化较差的问题。该网络将深度可分离卷积与全局平均池化相结合,有效地提高了测试精度,减少了程序运行时间。总结来说,改进后的卷积神经网络不但具有可观的测试精度,并且运行速度、内存占用量方面也优势明显,较好地解决了植物病害图像识别问题,为后续相关研究提供了可靠的技术支持。在未来将会侧重研究调整网络结构对测试结果的影响。此外,其他植物叶片病害数据集的扩展研究也将被考虑在内,测试并改进现有算法,提高模型对于这类问题的泛化能力。

猜你喜欢
池化全局卷积
基于高斯函数的池化算法
基于全卷积神经网络的猪背膘厚快速准确测定
基于改进空间通道信息的全局烟雾注意网络
领导者的全局观
卷积神经网络中的自适应加权池化
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
落子山东,意在全局
用于手写汉字识别的文本分割方法