高级检索

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

基于深度学习的5种树皮纹理图像识别研究

刘嘉政 王雪峰 王甜

引用本文:
Citation:

基于深度学习的5种树皮纹理图像识别研究

    作者简介: 刘嘉政。主要研究方向:林业信息技术应用。Email:liujiazheng0919@163.com 地址:100091 中国林业科学研究院资源信息研究所.
    通讯作者: 王雪峰, xuefeng@ifrit.ac.cn
  • 中图分类号: S757.3;TP391

Research on image recognition of five bark texture images based on deep learning

    Corresponding author: Wang Xuefeng, xuefeng@ifrit.ac.cn ;
  • CLC number: S757.3;TP391

图(8)表(3)
计量
  • 文章访问数:  88
  • HTML全文浏览量:  65
  • PDF下载量:  20
  • 被引次数: 0
出版历程
  • 收稿日期:  2018-07-25
  • 录用日期:  2019-03-06
  • 网络出版日期:  2019-04-02

基于深度学习的5种树皮纹理图像识别研究

    通讯作者: 王雪峰, xuefeng@ifrit.ac.cn
    作者简介: 刘嘉政。主要研究方向:林业信息技术应用。Email:liujiazheng0919@163.com 地址:100091 中国林业科学研究院资源信息研究所
  • 中国林业科学研究院资源信息研究所,北京 100091

摘要: 目的 针对在树皮图像识别时,现有的算法和识别过程过于复杂的问题,提出了基于深度学习的方法来对不同树种的树皮图像进行识别。方法 本文以5种常见树种的树皮纹理图像为例,采用基于卷积神经网络的深度学习方法,将原始图像直接作为输入,通过卷积和池化层对图像的低级、高级特征进行自动提取,解决了手动提取纹理特征的困难和问题;在此基础上,对CNN模型结构进行改进,采用带Maxout的ELU激励函数来代替ReLU函数,解决模型的偏移和零梯度问题;对损失函数进行改进,通过添加规范项来优化结构参数,并使用分段常数衰减法对学习率进行动态调控;最后采用softmax分类器对图像类别进行输出。结果 对5个树种的树皮图像共计10 000张图像进行实验,其中每类选取200张图像作为测试集。最终训练识别准确率达到93.80%,测试集平均识别准确率为97.7%。另外,为验证本文方法的可行性,与传统人工特征提取法,提取HOG特征、Gabor特征和灰度共生矩阵统计法,训练SVM分类器。通过实验比较,本文方法识别准确率最高。结论 本文提出的基于深度学习的树皮纹理图像识别方法是可行的,提高了识别效率和精度,为树种的智能化识别提供新的参考。

English Abstract

  • 图像识别是计算机视觉领域重要的研究方向之一,其中树皮图像识别又是林业图像识别方面重要的研究内容。在树种图像识别领域,树皮图像是判断树种类型的重要依据之一。Wooten等[1]提出了通过木屑纹理图像来鉴别树皮类型的图像识别方法。该算法采用目标识别、图像捕获、单值分解等方法,以单一数值描述灰度图像中明显的木材纹理,并应用以木材纹理的单值为代表的Logistic模型预测木片是否为树皮。使用该系统的正确预测率约为98%。Bertrand等[2]通过对树皮纹理图像和树叶结构进行深层次研究,用Canny边缘描述子对树皮结构进行精确的定位,取得了理想的识别效果。Kamal等[3]提出了一种灰度共生矩阵和纹理特征的方法,采用前馈反向神经网络进行分类,取得了90.5%的平均识别率。在国内,多化豫等[4]对樟子松(Pinus sylvestris. var. mongolica)、水曲柳(Fraxinus mandschurica)、榆木(Ulmus rubra)的木片和树皮图像进行识别,通过提取木片和树皮图像的均方差比等参数,利用SVM和BP神经网络进行识别,得出均方差比作为新的识别参数。赵作林[5]提出了植物多器官的联合识别方法,将树叶和树皮图像相结合,并对树皮图像的纹理特征(分形维数等7个变量)进行提取,提出了一种基于Adaboost分类器和KNN分类器的改进分类器,对北京地区杨树(Populus spp.)种类进行识别,平均识别率达到92.93%。孙伶君等[6]提出分块LBP的特征提取方法,使用衰减、卡方、欧式3种不同的距离对木材图像进行分类,最后采用KNN法进行识别,得出采用卡方距离的识别率更好,达到93.3%。李可心等[7]采用SOM神经网络,通过灰度共生矩阵提取的14个树皮图像特征参数进行识别,得到了理想的识别效果。

    但是,在上述研究中,都存在着共同的问题:(1)过度依赖人工对图像特征进行提取,且在特征提取之前,需要对原始图像进行图像去噪、图像分割等复杂的预处理,消耗了很多时间和资源;(2)以上研究均是针对小样本量的数据集,是否适应于大样本量数据的识别,需进一步验证;(3)经过预处理的原始图像,丢失了一些自然状态下的属性,会影响最终的识别精度。

    随着大数据时代的到来、算法理论的发展、计算机软硬件水平的提高,使得深度学习成为机器学习领域发展最快、最受欢迎的方法。尤其是在图像识别领域,卷积神经网络(Convolution Nerual Network, CNN)取得了巨大的成功。2013年,在LSVRC2013竞赛中,Zeiler等[8]在CNN中加入反卷积网络层,进一步提高图像分类准确率的同时,从可视化的角度使得人们加深了对CNN结构层的理解。2014年,在LSVRC2014竞赛中,Szegedy等[9]通过增加CNN训练层数,第一次采用3种卷积核(1 × 1, 3 × 3, 5 × 5),获得“指定数据”图像分类比拼的第一名,图像分类准确率再次提高。此时,CNN便成为图像识别中最受欢迎的方法之一。

    深度学习虽然在很多领域取得了很大的研究进展,但在树皮图像识别方面的研究还鲜见报道。本文提出一种基于深度学习的树皮图像识别方法,对5个常见树种的树皮纹理图像进行识别,建立适合本文的CNN模型,采用带Maxout的ELU激励函数代替ReLU函数,解决模型的偏移和零梯度问题;另外,对损失函数进行改进,通过添加规范项来优化结构参数,并使用分段常数衰减法对学习率进行动态调控;最后采用softmax分类器对图像类别进行输出。实验结果表明,本文方法优于传统的树种图像识别方法,具有一定的可行性。

    • 本文选用落叶松(Larix gmelinii)、白桦(Betula platyphylla)、山杨(Populus davidiana)、雪松(Cedrus deodara)、白皮松(Pinus bungeana)5个常见树种作为研究对象。为使得实验图像最接近自然状态,且体现样本选取的随机性,选择不同时间段、不同拍摄者、不同拍摄角度、不同拍摄设备对树皮图像进行采集。为不破坏图像的原始信息,对原始图像进行简单的预处理,利用python脚本语言对图像的中间部分截取256 × 256像素大小的区域(图1)。共得到树皮图像10 000张,其中,落叶松2 000张、白皮松2 000张、白桦2 000张、雪松2 000张、山杨2 000张。每个树种随机挑选200张,组成本次实验的验证集,剩余部分作为训练集。5个树种的树皮图像如图2所示。

      图  1  原始图像和感兴趣区提取

      Figure 1.  Original image and region of interest extraction

      图  2  5个树种树皮图像示例

      Figure 2.  Example of 5 kinds of tree bark images

    • 本研究提出通过搭建深层卷积神经网络对树皮图像进行识别。CNN网络结构如图3所示,由17层网络层组成。主网络结构层由4层卷积层、3层池化层和3层全连接层组成。其中:第1、第2层卷积层包含卷积、池化、激励函数、局部响应归一化处理;第3层卷积层只包含卷积、激励函数;第4层卷积层包含卷积、池化、激励函数;第5、第6层全连接层加入激励函数和Dropout策略;第7层全连接层采用Softmax分类器,输出类别数为5。

      图  3  本文实验CNN网络结构图

      Figure 3.  Experimental CNN network structure diagram

    • 卷积神经网络(CNN)是深度学习方法在图像识别领域的一个重要应用。20世纪60年代,Hubel等[10]提出CNN的概念,引起社会广泛关注。随着近年来诸多学者对原始CNN模型进行改进,使其成为当今图像处理领域最受欢迎的一种方法。

      CNN结构通常由单层输入层、多层卷积层、多层池化层、单层或多层全连接层、单层输出层构成[11]。其中,输入层直接作用到原始图像,无需对原始图像进行过多的预处理。假设输入原始图像大小为M × M × C,其中M为图像的高、宽,C为图像的通道数。若为彩色图像,C取3;灰度图像,C取1。

      当图像输入到第一个卷积层时,卷积层的作用是对图像进行卷积操作。假设该层卷积层具有KN × N个卷积核,此时经过卷积计算之后,会产生K个(MN + 1) × (MN + 1)的特征子图,K为卷积核数量,N为卷积核大小。卷积公式为:

      $ X_j^l = f\left( {\mathop \sum \nolimits_{i \in {M_j}} X_i^{l - i}W_{ij}^l + b_i^j} \right) $

      式中:$ X_j^l$表示第l个卷积层得到的第j个特征子图,W为卷积核,b为偏置项,$f\left( {{\Delta }} \right)$为激励函数。

      池化层是对上一层卷积层输出的特征子图的采样,因此又被称为采样层。假设池化层事先确定采样区域大小为a × a。经池化层采样之后,得到大小为$ \dfrac{{M - N + 1}}{a} \times \dfrac{{M - N + 1}}{a}$的特征子图,目的是通过采样方式降低卷积层特征子图的维数,从而降低模型的计算复杂性,提高计算效率。采样公式如式(2)所示。常见的池化方法有随机池化法、平均值池化法、最小值池化法和最大值池化法[12]

      $ X_j^l = f\left( {\mathop \sum\nolimits _{i \in {M_j}} \beta _j^ldown\left( {X_j^{l - 1}} \right) + b_i^j} \right) $

      式中:down(Δ)为采样计算函数,βjl为输出特征偏置项。

      全连接层实质上相当于整个网络模型的“分类器”。当图像经过卷积、池化等一系列操作之后,对图像特征进行“分布式表示”,那么,全连接层就是将“分布式特征表示”映射到样本标记空间中,得到实际的识别类别[13]。假设试验训练集类别数为S,图像总数为M,经过卷积、池化、全连接层等一系列操作之后,得到对应标签类别为(xi, si),i = 1, 2, …, Ms = 1, 2, …, S。通俗来讲,全连接层是把卷积层产生的二维特征子图转化为一维的向量,即对特征进行高度提纯,方便最后的分类器进行处理。

    • 为使CNN神经网络具备分层的非线性映射学习能力,在网络结构中加入激励函数。常见的激励函数有Sigmoid、tanh、ReLU等。本文采用的是对ReLU的改进函数,即带有Maxout的ELU激励函数[14]。尽管ReLU在x > 0时,保持梯度不衰减,缓解了梯度消失的问题,但是当x < 0时,部分输入进入硬饱和区,使得权重无法更新,出现“神经元死亡”现象。

      ELU激励函数融合了Sigmoid和ReLU的优点。函数左侧具有软饱和性,使得ELU更加鲁棒;右侧无饱和性,又能避免梯度消失。ELU函数公式如下:

      $ \begin{array}{l} f\left( x \right) = \left\{ {\begin{array}{*{20}{c}} {\alpha \left( {{e^x} - 1} \right)} & {x \le 0}\\ x & {x > 0} \end{array}} \right.\\ f'\left( x \right) = \left\{ {\begin{array}{*{20}{c}} {\alpha + f\left( x \right)} & {x \le 0}\\ 1 & {x > 0} \end{array}} \right. \end{array} $

      Maxout网络能够缓解梯度消失,又避免ReLU“神经元死亡”现象出现[15]。其公式为:

      $ {h_i}\left( x \right) = \mathop {\max } _{j \in \left[ {1,k} \right]} {Z_{ij}}\;\;\;\;\;{Z_{ij}} = {x^{\rm{T}}}W \cdots ij + {b_{ij}},\;W \in {R^{d \times m \times k}} $

      式中:W是三维的,尺寸大小为dmkd表示输入层节点个数,m表示隐含层节点个数,k表示每个隐含层节点对应k个“隐含层”节点数。

    • 局部响应归一化(Local Response Normalization, LRN)是模型训练时提高精确度的一种技术方法[16],一般放在激活、池化之后,目的是对局部神经元节点建立竞争机制,抑制反馈较小的神经元,增强模型的泛化能力。LRN公式为:

      $ b_{x,y}^i = a_{x,y}^i/{\left( {k + \alpha \mathop \sum \nolimits _{j = \max\left( {0,i - n/2} \right)}^{\min\left( {N - 1,i + n/2} \right)} {{\left( {a_{x,y}^j} \right)}^2}} \right)^\beta } $

      式中:$ b_{x,y}^i$表示LRN后的输出值,$ a_{x,y}^i$为在位置(x, y)第i个卷积核的输出值,N为卷积核的个数,Kαnβ均为常量。

    • 当整个网络模型训练结束,最后的全连接层会输出一个关于所有类别的概率值。此时,为验证输出的预测分类结果与实际类别结果的差异性,将实际类别和输出的预测类别建立交叉熵函数[17],目的是通过二者存在的误差反向传播来指导网络参数学习,进一步提高网络识别精度。

      本文为防止训练过拟合,在交叉熵函数中增加一个规范化函数项,使得网络权重的学习规则得到改进,有利于网络在训练过程中识别准确率不断提高,避免过拟合现象出现。改进后的公式为:

      $ c = - \frac{1}{n}\mathop \sum \nolimits_x \left[ {y\ln a + \left( {1 - y} \right)\ln \left( {1 - a} \right)} \right] + \frac{\lambda }{{2n}}\mathop \sum \nolimits _\omega {\omega ^2} $

      式中:n为训练集的大小,y为实际样本的类别数,a为网络训练的结果,ω为权重调整值。

    • 整个卷积神经网络在训练时,为使得模型更好的学习,需要通过不断调整学习率(Learning Rate)来保持梯度下降法的性能。本文采用分段常数衰减法,在定义好的区间上,分别设置不同的常数值,作为学习率的初始值和后续衰减的值。利用tensorflow框架中的tf.train.piecewise_constant函数,实现了学习率的分段常数衰减功能。主要代码为:

      tf.train.piecewise_constant(

       x,#训练次数

       boundaries,#学习率参数应用区间列表

       values,#学习率列表,value的长度比boundaries的长度多一个

       name = None #操作的名称

      )

    • HOG特征是在2005年的CVPR会议上,由Dalal等[18]提出的一种利用梯度方向直方图特征来表达图像的描述子,对图像的光照影响和局部变形具有很好的稳定性。大致可分为4个步骤:(1)首先对输入图像进行校正,目的是补偿显示器带来的灰度偏差;(2)将彩色图像转化为灰度图像;(3)计算并得到图像的方向和梯度;(4)将图像划分为若干个小网格,对每个小网格的图像求出梯度方向直方图,最后将图像内所有小的梯度方向直方图连在一起得到目标图像总的方向梯度直方图向量。

    • Gabor特征[19]是一种特别适合于对图像纹理信息的表示和判别。Gabor滤波器的频率和方向与人类的视觉系统类似,主要是依靠Gabor核在频率域对信号进行加窗操作进一步描述信号的局部频率信息。因此,本文采用二维Gabor模型,提取8方向5尺度共计40个滤波器。

    • 灰度共生矩阵(GLCM)[20]是一种具有广泛性的纹理分析方法。本文选取角二阶矩、熵、对比度、反差分矩阵,作为纹理特征值,进行图像识别。

    • 支持向量机(Support Vector Machine, SVM)[21]的基本模型是让所有的点到超平面的距离大于一定的距离,即所有的分类点要分布在支持向量的两边。在SVM分类器确定中,最关键的是内积函数的选择。本文经过试验对比,选用高斯内积函数(如公式(7)所示)确定了一个径向基函数(RBF)分类器。利用LibSVM工具作为训练器,优化算法,寻找最佳惩罚因子,从而获得最适合本研究的SVM分类器。

      高斯内积函数可以看作是空间中任一点x到某一中心y之间欧氏距离的单调函数。其中,y为内积函数中心,σ为函数的宽度参数,约束了函数的径向作用范围。

      $ K\left( {x,y} \right) = \exp\left( { - \frac{{{{\left\| {x - y} \right\|}^2}}}{{{\sigma ^2}}}} \right) $

    • 本实验的硬件配置为:Intel(R)Core(TM)i7-6700 CPU、3.40 GHz、8 G内存的计算机。程序运行环境:Windows 10系统、Pycharm代码平台。本研究的所有代码均采用Python3.6编程语言基于TensorFlow框架[22]下编写实现。

    • 在构建CNN模型的过程中,最为关键的就是参数调试。每一种数据库和每一种网络结构都要不同的参数以达到最佳效果,因此当初步搭建好神经网络之后,需要对模型的一系列参数进行反复调试,以寻求适合模型的最佳参数。本次试验参数调试将从以下3个方面来分析对模型性能的影响。

      (1)卷积核:卷积核大小关系着网络结构的参数调整和识别精度,因此确定合适的卷积核大小十分重要。本实验研究了不同卷积核大小对网络结构的影响(结果如图4所示)。从图4中可得知:随着迭代次数的不断增加,当卷积核大小为5 × 5或7 × 7时,无论是训练准确率还是测试准确率曲线均出现不同程度的震荡;相反地,当卷积核大小为3 × 3时,训练准确率和验证准确率最高,同时损失率也最低。这进一步说明,当卷积核较大时,会造成整个模型在训练和测试过程中收敛速度慢,模型训练和测试的结果不理想。

      图  4  不同卷积核大小对实验结果的影响

      Figure 4.  Effects of different convolution kernel sizes on experimental results

      (2)学习率:不同的学习率对不同的数据集、不同的网络结构会产生不一样的结果。通过分段常数衰减法,对学习率进行调整,学习率变化结果如图5所示。该方法可以让实验者针对具体的任务对学习率进行相应的设置,从而产生一个最佳的学习率。本文学习率设置为0.001。

      图  5  分段常数衰减法调控学习率

      Figure 5.  Piecewise constant attenuation method to control learning rate

      (3)激励函数:由图6可知,带有Maxout的ELU激励函数得到的识别精度优于ReLU、Sigmoid、tanh。

      图  6  采用不同激活函数的实验结果

      Figure 6.  Experimental results with different activation functions

    • 为显示本文CNN模型的训练过程,图7给出了输入的树皮图像对应的卷积层产生的特征图。从图7(b)可以看出,卷积核很好地提取出了图像的各级特征,越浅层的类似于边缘检测的功能,卷积核基本上保留图像所有信息,随着网络层数加深,卷积核提取的图像内容越抽象,也意味着保留的信息也越来越少。这也体现出CNN模型的优势,通过层层提取特征,尽可能多地对图像的特征进行提取。图7(c)给出了相对应树皮图像提取的HOG特征和Gabor特征可视化图。从图7(b)图7(c)对比来看,可以很明显地看出CNN模型提取的图像特征具有多样性的特点。加上大样本量数据和深层网络结构作为支撑,会对图像进行准确的识别。相反地,只对图像提取HOG特征和Gabor特征,过于单一,而且只是多数情况下适应于纹理图像,是否同样适应于其他类别图像,还待进一步研究。

      图  7  特征图可视化

      Figure 7.  Feature map visualization

    • 利用训练好的CNN模型对测试集中5种共计1 000张树皮图像进行测试,实验结果如表1所示。从表1中可以看出:在树皮图像测试结果中,5个树皮图像测试准确率均达到95%以上,白皮松识别率更是达到100%。雪松测试准确率相对较低,雪松和落叶松树皮图像有相似之处,易被误判。

      名称 Name 测试准确率 Test accuracy/%
      落叶松 Larix gmelinii 96.5
      白桦 Betula platyphylla 99.5
      山杨 Populus davidiana 97.5
      雪松 Cedrus deodara 95  
      白皮松 Pinus bungeana 100  
      平均值 Mean 97.7

      表 1  实验结果

      Table 1.  Experimental results

      表2给出了对验证集识别结果的混淆矩阵。从矩阵中能够看出:有4张落叶松树皮图像被误判为雪松,3张雪松树皮图像被误判为落叶松,同为松科,树皮纹理有相似之处;由于白桦的树皮纹理图像特点差别较大,误判率极低;山杨为杨柳科植物,并不属于松科,但有4张图像被误判雪松,山杨与雪松树皮纹理图像特点呈斑块状,有相似之处;白皮松虽为松科,但树皮特点为斑鳞状,较其他4个树种来说,存在较大差异,误判结果为0。

      名称
      Name
      落叶松
      Larix gmelinii
      白桦
      Betula platyphylla
      山杨
      Populus davidiana
      雪松
      Cedrus deodara
      白皮松
      Pinus bungeana
      落叶松
      Larix gmelinii
      193 0 3 4 0
      白桦
      Betula platyphylla
      1 199 0 0 0
      山杨
      Populus davidiana
      0 1 195 4 0
      雪松
      Cedrus deodara
      6 0 4 190 0
      白皮松
      Pinus bungeana
      0 0 0 0 200

      表 2  5个树种树皮纹理图像判别结果的混淆矩阵

      Table 2.  Confusion matrix of discrimination results of bark texture images of 5 tree species

      图8给出了部分误判的树皮图像。从图8可以看出:落叶松(图8(a)(b))被误判为雪松,其在纹理上与部分雪松图像相似;图8(c)是落叶松,但由于拍摄时有树枝遮挡,颜色上呈现暗灰色,被误判为山杨;图8(d)为山杨树皮图像,由于颜色上呈现暗黑色,被误认为雪松;图8(e)(f)为山杨树皮图像,由于拍摄时图像较模糊,颜色呈现灰白色,故被误判为白桦。

      图  8  部分误判的树皮图像

      Figure 8.  Some misidentified bark images

    • 为验证本文方法的正确性,与传统的HOG + SVM、Gabor + SVM、灰度共生矩阵统计法进行比较,对5个树种共1 000张树皮图像测试集进行基于SVM分类器的测试。

      比较结果如表3所示。从表3可以看出:传统方法中,基于Gabor特征的识别正确率在80%以上,精度远高于HOG特征方法的65.24%和灰度共生矩阵统计法48.61%;但在对单张图像识别时间来看,用时均较长。传统的人工特征提取方法相对于本文深度学习方法在模型的泛化能力及识别效率上,均表现较差。

      方法
      Method
      识别正确率
      Recognition accuracy/%
      识别时间
      Recognition time/s
      灰度共生矩阵
      GLCM
      48.61 4.5
      HOG + SVM 65.24 3.6
      Gabor + SVM 82.35 3.5
      本文方法
      Method used in this paper
      97.70 1.7

      表 3  4种方法的识别准确率与识别时间

      Table 3.  Identification accuracy and recognition time of four methods

    • 本文基于深度学习方法,通过搭建卷积神经网络模型,对落叶松、白桦、山杨、白皮松、雪松5种常见树种的树皮纹理图像进行识别分类。

      (1)本文利用卷积神经网络自动提取图像特征的优点,避免了手动对图像特征提取时造成的人为主观性干扰。同时,卷积神经网络结构擅长对大样本量的数据进行处理,识别效率高,精度也高。

      (2)本文采用带有Maxout函数的ELU激励函数代替ReLU函数,缓解了梯度消失的问题,避免了“神经元死亡”的现象;对网络权重参数进行优化,通过增加规范化项改进权重学习规则,提高识别精度;利用分段常数衰减法对学习率进行动态调控,寻求最优结果。

      (3)为验证本文方法的可行性,与传统的HOG + SVM、Gabor + SVM、灰度共生矩阵统计法作比较,本文方法的识别率为93.8%,明显高于灰度共生矩阵统计法的48.61%、HOG + SVM的65.24%、Gabor + SVM的82.35%。由此证明本文方法具有一定的可行性。

      尽管本文方法识别率较高,对5个树种树皮纹理图像成功地进行了分类,但仍然存在一些不足。列如:试验中对于同科的树种,存在着误判现象,而且本文只是对5个树种进行试验,是否适应于其他树种的识别,仍有待进一步研究。另一方面,林业中基于地面图像对树种的自动分类,已成为人工智能在林业中的新的研究方向,也是下一步工作的重点。

参考文献 (22)

目录

    /

    返回文章
    返回