基于树皮纹理特征识别的木材分类

2021-11-04 11:10王军敏孙晓延
平顶山学院学报 2021年5期
关键词:树皮纹理分量

王军敏,孙晓延

(平顶山学院 信息工程学院,河南 平顶山 467036)

0 引言

纹理图像广泛存在于大自然中,在工业生产和人类的日常生活中也处处可见,这使得纹理图像识别技术具有广泛的应用领域和重要的应用价值[1].例如,纹理特征是树皮表面最显著的视觉特征,这些纹理特征是树木所具有的天然属性,可以在一定程度上描述树木的性质.因此,利用纹理图像识别技术对树皮的纹理特征进行识别,可带来多方面的益处,例如:1)森林中的树木种类非常繁多,要对这些树木的种类进行准确识别需要进行相关的专业学习和长期的经验积累,考虑到不同种类的树木具有不同的树皮纹理特征,并且这些树皮纹理特征具有很强的鉴别能力,因此,利用树皮的纹理特征对树木的种类进行快速识别,能够帮助护林人员快速、方便地识别森林中的树木种类;2)有助于木材厂对木材进行工业化的自动分类,提高木材分类的效率;3)对质量较好的木材,其树皮的纹理特征通常呈现较好的规律性,而质量较差的木材可能在树皮表面出现疤痕或凸凹,这些树皮表面的缺陷会破坏原有的纹理规律特性,通过检测这些非正常的纹理模式,可以对木材的品质进行辅助鉴定.

1 研究方法

笔者通过对树皮的纹理特征进行识别来实现木材分类,提出如下两种方法:1)利用手工设计(hand-crafted)的方法实现树皮纹理特征的提取和分类;2)利用深度学习(deep-learning)的方法自动提取树皮纹理图像的特征并实现分类.下面分别展示这两种方法的基本原理和实现方法.

1.1 方法一:手工设计方法

方法一首先利用手工设计的特征描述子分别提取树皮纹理图像的粗略颜色信息和精细纹理特征,然后将这两种特征进行融合,最后送入手工设计的特征分类器实现树皮纹理图像的识别.该方法的基本原理如图1所示,具体的实现步骤如下:

Step1 颜色特征空间转换.将树皮的彩色纹理图像转换到HSV颜色空间,获得亮度分量V、色调分量H和饱和度分量S,其中,V分量用于描述灰度纹理特征,H和S分量用于描述颜色信息,从而实现了灰度纹理特征和颜色信息的分离,以便分别提取灰度纹理特征和颜色信息.

Step2 精细纹理特征提取.对V分量图像进行多次高斯滤波,从而构建V分量的多尺度空间.然后利用式(1)分别计算每个高斯滤波图像的SCLBC、MCLBC和CCLBC分量[2],即:

(1)

Step3 粗略颜色信息提取.将色调分量H和饱和度分量S进行粗略量化,并计算粗略量化后H分量和S分量的联合直方图,将其作为树皮纹理图像的粗略颜色信息.

Step4 特征融合与分类.最后将所提取的粗略颜色信息与灰度纹理特征进行融合,作为树皮纹理图像的最终特征描述,并送入NSC分类器[3]获得树皮纹理图像的类别标签.

图1 手工设计方法的基本原理

1.2 方法二:深度学习方法

近年来,深度学习方法成为图像识别领域的研究热点.其中,深度卷积神经网络(Convolutional Neural Network,CNN)是深度学习方法在图像识别领域获得成功应用的方法之一,它能够模拟人脑分层提取特征的机制,自动从样本中提取对分类有用的特征.但是,从头开始训练一个深度CNN模型存在以下不足之处:1)需要大规模的训练样本,以便对模型进行充分的训练,否则模型的识别性能不佳,但目前还没有一个大规模的纹理图像数据库,无法对深度CNN模型进行充分的训练;2)从头训练一个深度CNN模型非常耗时;3)对硬件平台的计算能力和存储容量要求很高,而高性能的硬件平台通常价格昂贵.

为了解决深度CNN方法存在的不足,笔者采用在大规模图像数据集ImageNet上预先训练的VGG-16模型作为基础模型.VGG模型[4]是2014年由牛津大学视觉几何组(Visual Geometry Group,VGG)和Google DeepMind公司研究员共同提出的,VGG模型的结构是一种级联型的直筒结构,形式非常简洁.VGG-16模型包含13个卷积层和3个FC层,即一共有16个卷积/FC层.其中,前面的卷积层用于提取不同层次的图像特征,后面的FC层用于特征降维并输出分类概率.

笔者提出的基于深度CNN的系统结构如图2所示:首先利用VGG-16模型的卷积模块提取输入纹理图像的特征,在训练阶段需要利用现有的纹理图像样本对卷积模块的参数进行微调;然后再对卷积模块提取的特征进行降维和分类识别,从而获得输入样本的类别标签.

图2 深度学习方法的系统结构

为了将VGG-16模型应用于树皮纹理图像的识别,并降低原始VGG-16模型的参数规模,笔者对原始VGG-16模型的结构进行改进,主要包括:1)用全局平均池化(Global Average Pooling,GAP)层代替FC层,显著降低模型的参数规模;2)仅在最后使用一个FC层,将输出端的个数调整为待识别纹理图像的类别个数,并用Softmax层输出范围为(0,1)的分类概率值.笔者构建的深度CNN模型如表1所示:第0层是输入层,用于输入纹理图像;第1~18层为VGG-16 模型前面的5个卷积模块,其主要作用是提取输入图像的特征,这些卷积模块的参数已经在ImageNet图像数据集上经过了充分的预训练,已经具备了初步的特征提取能力;第19~21层用于特征降维,将输出端的个数调整为目标类别的个数,并输出当前样本对所有类别的归属概率值,根据分类概率值的大小,即可判断当前样本所属类别的类别标签.

表1 深度CNN模型的分层结构

方法二的具体实现步骤如下:

Step1 对输入图像进行预处理,即输入图像的RGB三个通道分别减去103.939,116.779,123.680,并调整图像尺寸为224×224像素.

Step2 对训练样本进行数据增强(包括旋转、缩放等),扩充训练样本的数量.

Step3 设置模型的初始超参数值,包括优化器、学习率、批尺寸、损失函数等.

Step4 利用数据增强后的树皮纹理图像训练集对模型的参数进行微调训练.当模型在验证集上获得最佳结果时,保留此时的CNN模型参数.

Step5 利用训练所得的最佳CNN模型,对测试样本进行测试,获得识别结果.

2 树皮纹理库和实验设置

为了评估笔者所提出方法的性能,利用BarkTex纹理库[5]提供的树皮纹理图像进行实验.BarkTex纹理库由6个类别的树皮纹理图像组成,即白桦树、山毛榉、挪威云杉、银松、栎树和槐树的树皮纹理图像.每个类别有68个样本图像,一共有6×68=408个样本图像,分辨率为128×192像素.图3展示了BarkTex纹理库的6个树皮类别,每列是一个树皮类别的3个样本图像.从图3可以看出,不同类别的树木,其树皮的纹理特征具有显著的差异,因此,利用树皮的纹理特征对树木的种类进行鉴别具有可行性.

由于BarkTex纹理库的原始样本个数较少,为了方便开展实验,将每个原始的树皮纹理图像划分为4个子图像,将其作为同一个类别的4个新的树皮纹理样本,从而增加了树皮纹理样本的个数,从而构建一个新的BarkTex纹理库,即New-BarkTex纹理库[5].在New-BarkTex纹理库中,同样含有6个树皮类别,每个类别含有68×4=272个子图像,一共有272×6=1 632个子图像,即1 632个样本,每个样本的图像分辨率为64×64像素.在训练模型时,用一半(816个)样本作为训练数据.

图3 BarkTex纹理库6个类别的树皮纹理图像

实验平台:计算机(Intel Core i5 CPU@3.10 GHz,16 GB RAM),Python 3.5,Tensor Flow 1.15.0,Keras 2.0,MATLAB R2016b仿真软件.

在方法一中,树皮纹理图像特征提取系统的具体参数设置为:高斯滤波次数n=2,高斯滤波器的尺寸为11×11像素,高斯滤波器的标准差σ=1.7,CLBC算法的参数R=[1,3,5],P=[8,16,24].

在方法二中,超参数的初始设置为:1)在数据增强时,设最大缩放因子为0.2倍、最大旋转角度为60°;2)选择Adam算法作为优化器;3)初始学习率设为0.001,最大训练轮数设为50,批尺寸设为10;4)模型的损失函数采用分类交叉熵函数.

3 实验与结果分析

3.1 最佳参数的确定

在方法一中,在对表示颜色信息的H分量和S分量进行粗略量化时,需要确定最佳的颜色量化等级.因此,在New-BarkTex纹理库上进行实验,设色调分量H和饱和度分量S的量化等级个数为Lc,通过改变Lc,分别获得不同量化等级下的纹理识别精度.由于本文方法对颜色信息采用粗略量化的策略,所以主要分析Lc在区间[1,70]的纹理识别精度,实验结果如图4所示.

图4 不同颜色量化等级对应的纹理识别精度

从图4可以看出:1)当颜色量化等级个数Lc=11时,方法一在New-BarkTex树皮纹理库上获得最高的识别精度84.31%,表明此时对颜色信息的量化程度最佳,这也体现出彩色纹理图像中颜色信息呈现区域性分布,具有较低的空间频率,只需进行粗略量化即可;2)当颜色量化等级个数Lc<11时,随着Lc的不断增大,生成的颜色组合种类逐渐增多,使得方法一的纹理识别精度快速提升,但此时纹理识别精度仍没有达到最高,这是因为此时的Lc仍然偏小,生成的颜色组合种类仍然较少,还不足以充分描述彩色纹理图像中的颜色信息;3)当颜色量化等级个数Lc>11时,方法一的纹理识别精度呈现下降的趋势,当Lc>40时识别精度基本保持不变,继续增大Lc的值并没有带来识别精度的提高,这表明对颜色的过细量化是没有必要的,并且过细量化会增大计算量.综上所述,为了同时获得好的识别精度和实时性,方法一选择最佳的颜色量化等级个数Lc=11,即把色调分量H和饱和度分量S都量化为11个等级.

在方法二中,用于提取图像特征的卷积模块可逐级微调,以便在训练过程中获得最佳的深度CNN模型.在微调训练CNN模型时,首先需要确定需冻结的层数N,即对N层及其之前的层进行冻结(这些层的可训练属性设为Trainable=False),只微调训练N层之后的模型参数(这些层的可训练属性设为Trainable=True).对于笔者构建的CNN模型,以卷积模块为基本单位进行微调,从表1可以看出,第1层至第18层一共有5个卷积模块,对应的冻结层数为N=0,3,6,10,14,18.不同的冻结层数N对应不同的可训练卷积模块个数:例如,当N=0时,表示对全部5个卷积模块进行微调训练;而当N=18时,表示将全部5个卷积模块的参数进行冻结.在New-BarkTex树皮纹理库上开展实验,不同的冻结层数对应的测试集识别精度如表2所示.

表2 不同的冻结层数对应的测试集识别精度

从表2可以看出:当冻结层数N=6时,模型的性能达到最佳,此时能获得最高的识别精度93.46%;当N=18时,全部的卷积模块都被冻结,仅能调节模型最后FC层的参数,此时的识别精度较差,仅为59.80%.这表明将VGG-16模型的初始参数直接用于纹理图像识别不能取得好的识别结果,必须利用现有的纹理图像样本对CNN模型的参数进行微调训练,才能使模型获得更好的纹理图像识别能力.所以,笔者选择最佳的冻结层数为N=6.

3.2 实验结果分析

为了进一步展示本文方法的性能,将笔者提出的两种方法与其他先进的算法进行对比,它们在New-BarkTex纹理库上的识别精度如表3所示.

从表3可以看出:1)笔者提出的两种方法分别取得了84.31%和93.46%的识别精度,一致超过了其他方法的识别精度.这表明本文方法能够很好地提取树皮表面的纹理特征,具有很强的鉴别能力.2)笔者所提出的手工设计方法和深度学习方法相比,深度学习方法取得了93.46%的识别精度,显著超过了手工设计方法84.31%的识别精度.这体现出深度学习方法具有更强的识别能力.

表3 在New-BarkTex纹理库上的识别精度

另外,New-BarkTex纹理库中的树皮纹理图像的尺寸非常小,只有64×64像素,所含的纹理信息比较有限,并且容易受到树皮表面缺陷(例如:疤痕或凸凹)特征的干扰,这在一定程度上限制了对木材种类的识别精度.因此,在实际的工程应用中,可以采集更大尺寸的树皮纹理图像(例如:100×100像素、200×200像素),以便进一步提高识别精度,使本文方法在木材分类中具有更好的应用价值.

4 结论

笔者通过对树皮纹理图像的识别实现了木材分类,具有重要的应用价值.同时,笔者分别采用手工设计方法和深度学习方法实现木材分类,并对这两种方法的性能进行了对比分析,展示了深度学习方法在图像识别领域的巨大优势,为进一步解决复杂的纹理图像识别问题提供了新的发展思路.

猜你喜欢
树皮纹理分量
窗下的树皮小屋
树皮的秘密
画里有话
一斤生漆的“分量”——“漆农”刘照元的平常生活
一物千斤
肺纹理增多是病吗?
童梦
论《哈姆雷特》中良心的分量
TEXTURE ON TEXTURE质地上的纹理
消除凹凸纹理有妙招!