郭 锐,熊风光*,谢剑斌,尹宇慧,刘 磊
(1.中北大学 大数据学院,山西 太原 030051;2.山西省视觉信息处理及智能机器人工程研究中心,山西 太原 030051)
纹理图像含有丰富的纹理特征,纹理特征是人类了解和认知物体重要的视觉特征之一。因此,对纹理图像的识别是非常重要的。近些年来,深度学习在纹理识别领域取得了瞩目的成绩,大大提升了纹理识别的准确率。然而,纹理识别任务是极具挑战性的,现有的纹理识别方法存在复杂的纹理数据集上识别效果不佳的问题。因此,针对纹理识别模型在复杂数据集下的识别展开深入的研究。
主要工作如下:第一,提出多维特征融合模块,充分利用高层特征与低层特征,提取更有效的纹理特征;第二,提出对残差池化层的改进,在原残差池化层的基础上,加入了全局最大池化支路,提升纹理识别的准确率;第三,应用LBP(Local Binary Patterns,局部二值模式)辅助识别策略,使用LBP编码映射图像为纹理识别模型提供辅助信息,使纹理识别模型达到更好的效果。
目前,纹理识别方法主要分为传统方法、深度学习方法、多类方法相结合三种类型。在传统方法领域最为突出的纹理描述符就是LBP算法。LBP[1]算法对图像的局部邻域特征进行编码,计算编码值的直方图作为纹理图像的特征。此外,LBP算法还有很多的变体[2],如尺度不变的LBP纹理特征[3]、局部二元圆周和径向导数模式[4]、凹凸微结构模式[5]和局部二值模式直方图傅里叶变换[6]。赵曌等[7]融合LBP纹理和局部灰度特征,实现了纹理材料图像的识别与分割。这些需要手动设计纹理特征,过程复杂、时间成本高而且不是端到端的方法。
很多深度学习方法在纹理识别任务中获得了成功。M. Cimpoi等[8]完成了深度学习纹理识别的初尝试,提出FV-CNN。在FV-CNN的基础上又进行了很多研究[9-10],取得了不错的效果。但是这些研究[8-10]将纹理识别任务分割成了多个小任务,不是端到端方法。Zhang等[11]提出的Deep TEN网络,在卷积层之上集成了一种新的编码层,开辟了端到端纹理识别的先河。Hu等[12]提出多级纹理编码,提升了纹理描述符的有效性。相较传统方法,深度学习方法尽管准确率上有一定的提高,但其效果仍不理想。
多方法相结合方面,Gil Levi等[13]通过MDS多维映射的方法得到了原始图片LBP码的编码映射图像,使得LBP算法与CNN方法相结合成为了可能。Rao Muhammad Anwer[14]提出一种双流融合训练网络的方法,提高了模型的效果。张雪梅等[15]结合LBP和WLD两种纹理描述算子,实现了人脸表情识别。但是这类方法存在计算复杂、纹理识别性能不高的问题。
Mao等[16]提出深度残差池化层,该方法的残差编码方案是从预训练的CNN的最终卷积层中提取特征映射作为字典来计算残差。该残差池化层结构见图1。该残差池化层由残差编码模块和聚合模块组成,通过此残差池化层得到了低维有效的纹理特征,提升了纹理识别的效率。但是该残差池化层存在如下问题:第一,此方法仅使用了预训练CNN的最终卷积层,中间卷积层并没有利用起来,特征相对单一,提取的纹理特征有效性不强;第二,此方法缺少对图像全局空间结构的观察,导致识别准确率不高。
图1 原残差池化层结构
该文提出一种基于改进残差池化层的纹理识别模型,模型结构如图2所示。
图2 模型模块结构
第一步,将标准RGB图像输入到基础特征提取模块,提取图像的基础特征,常用的基础特征提取网络有Resnet、Densenet等;第二步,将基础特征提取模块得到的特征图输入到多维特征融合模块中,得到融合不同维度特征的特征图;第三步,融合不同维度特征的特征图输入到改进的残差池化层中,得到纹理特征向量;第四步,将纹理特征向量输入到分类层中,得到纹理识别的结果。
针对文献[16]原残差池化层纹理识别模型中,仅使用了预训练CNN的最终卷积层,未充分利用多层特征导致提取的纹理特征有效性不高的问题,该文提出了多维特征融合模块。
在CNN网络架构中,不同尺度的特征中蕴含着不同的特征信息。浅层特征中蕴含着图像的全局特征信息,高层特征中蕴含着图像的局部信息。在以往基于CNN的纹理识别算法中,大多只采用了高层特征,忽略了浅层特征。而在纹理识别任务中,图像的高层特征以及浅层特征都是需要关注的。将高层特征与浅层特征融合,对纹理识别任务是有益的。
通过基础特征提取模块可以得到Pre-trained Deep learning feature,在Pre-trained Deep learning feature中,存在多个卷积块,不同的卷积块可以输出大小不同的feature map。Resnet残差网络是经典的分类网络,其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。以Resnet50为例,通过Resnet50得到的Pre-trained Deep learning feature中有5个卷积块,其中,卷积块Conv_1仅是一个单层卷积层的输出,并未学习图像信息,故在本方法中没有使用Conv_1输出的特征。在卷积块Conv_2、Conv_3、Conv_4和Conv_5中输出特征图尺寸分别为56×56×256、28×28×512、14×14×1 024和7×7×2 048。多维特征融合模块中使用到了卷积块Conv_2、Conv_3、Conv_4和Conv_5输出的特征图。
在多维特征融合模块当中,将来自基础特征提取模块的不同维度特征进行融合,多维特征融合模块结构见图3。多维特征融合模块工作流程如下:首先,将Conv_2、Conv_3、Conv_4和Conv_5四种尺寸的特征图经过一个1×1的卷积层,该操作不改变特征图的大小;之后,将Conv_5支路得到的特征图输入到改进残差池化层中,获得尺寸为1×2 048的特征向量;将Conv_2、Conv_3、Conv_4特征图依次进行上采样,相加操作,得到两个融合多维特征的特征图,尺寸分别为28×28×1 536、56×56×1 792;将上述两个特征图通过3×3的卷积层和改进残差池化层,通过改进的残差池化层处理后可以得到特征向量。将三个改进残差池化层得到的特征向量进行拼接,可以得到最终的纹理特征向量。
图3 多维特征融合模块结构
多维特征融合模块具有如下优势:第一,该方法综合了高层特征与低层特征,得到了更为有效的纹理特征;第二,多维特征融合模块利用了基础特征提取网络的中间输出,并没有增加复杂的计算过程,计算量极少量增加,对算法的时间复杂度负担小;第三,多维特征融合模块中的各个模块都是可学习的,可以支持端到端的纹理识别模型;第四,多维特征融合模块可以灵活应用于多个主干网络当中。
针对文献[16]原残差池化层纹理识别模型中缺少对图像全局空间结构的观察,导致识别准确率不高的问题,提出改进残差池化层。
改进残差池化层的结构如图4所示。此层即为图2中的改进残差池化层,是在原残差池化层的基础上进行改进的,所以改进残差池化层分为两部分,第一部分是原残差池化层的保留,即图4中的非虚线框部分,第二部分为该文对残差池化层的改进,增加全局最大池化支路,即图4中的虚线框部分。
图4 改进残差池化层结构
改进残差池化层的工作流程如下:首先,预训练的特征映射C由预训练的CNN不同的卷积层获得。特征映射C的计算如公式(1)所示:
C=fcnn(I),C∈R7×7×2 048
(1)
其中,C为预训练CNN的特征映射,I为输入图像,fcnn()为预训练的CNN模型(此处以Resnet50为例)。将通过基础特征提取模块得到的特征映射C输入到Convolutional transfer module中学习特征X,Convolutional transfer module如图5所示,其包括对特征图的Convolutional layer(1x1)、drop out、Batch normalization、sigmoid操作,其中drop out 和Batch normalization操作用来避免过拟合。Convolutional transfer module模块操作公式表示如下:
图5 卷积传输模块及聚合模块结构
X=fctm(C),X∈R7×7×2 048
(2)
其中,X为学习到的特征,fctm()为Convolutional transfer module对特征映射C的操作。在该方法中,预训练的特征C和学习到的特征X在空间上是有序的,所以位置(i,j)处的残差映射值Zij计算公式如下:
Zij=Xij-∂(Cij),Zij,Xij,Cij∈R2 048
(3)
其中,Zij为位置(i,j)处的残差映射值,Xij为位置(i,j)处学习到的特征,Cij为位置(i,j)处预训练的特征映射值。∂()为sigmoid函数,强调了学习到的特征和预先训练的特征之间的差异。这迫使卷积传输模块学习一个适合于纹理识别的新特征。
将残差映射Z输入到Aggregation module,Aggregation module结构组成如图5所示,使用此模块可以聚合残差获得无序特征。此模块包括对特征图的ReLU、Batch normalization、Global Average Pooling操作,其中ReLU作为特征选择器,将负残差置为零,学习到的特征X与相应的预训练映射特征C则被保留,从而得到了有效的分类特征。Global Average Pooling操作将7×7×2 048的残差映射处理为2 048维的无序特征向量。Aggregation module操作的计算公式如下:
Y=fagg(Z),Y∈R2 048
(4)
其中,Y为得到的无序特征,fagg()为Aggregation module对残差映射特征的操作。
在原残差池化层的基础上,引入全局最大池化支路,为纹理特征引入空间结构观察,提升纹理识别的准确率,如图4中虚线框所示。将预训练特征映射C输入到Global Maximun Pooling中,得到具有全局空间观察的特征向量;Global Maximun Pooling的计算公式如下:
M=MAX(C),C∈R7×7×2 048,M∈R2 048
(5)
其中,M为具有全局空间结构观察的特征向量。其次,原残差池化层工作流程保持不变,将具有全局空间结构观察的特征向量M与原残差池化层得到的无序特征向量Y进行拼接,使用L2 normalization操作进行标准化,消除数值差异带来的负面影响,得到最终的纹理特征,输入到分类层中,得到纹理识别结果。
此残差池化层改进有四个优势:第一,将训练好的卷积特征中的空间信息作为字典,并基于空间位置进行硬赋值,效果更好;第二,该残差池化层中各模块的参数都是可学习的,可以端到端地完成纹理识别任务;第三,该方法将原残差池化层的无序纹理表示与新增全局最大池化层的空间结构观察相结合,得到了更好的纹理识别效果;第四,该改进残差池化层可以灵活地应用于不同的主干网络当中。
LBP编码算法是一种用来描述图像局部纹理特征的算子,具有旋转不变性和灰度不变性等显著的优点。然而,LBP编码是无序的,不符合CNN的卷积(卷积核中值的加权平均)操作特性,把LBP编码直接输入到CNN当中是无意义的。故而,采用Levi[13]提出的方法,通过多维尺度分析法和EMD距离将图像转化为LBP编码映射图像,使其可以直接输入到CNN当中参与卷积操作。其中,多维尺度分析法将无序的LBP码映射到度量空间中,使得映射后的编码间的距离接近原始码对之间的距离,可以有意义地参与卷积运算;EMD距离被定义为描述将一个分布转换为另一个分布所需的最小努力,使用EMD距离可以有效地表示不同LBP码在数值和位数上的差异。近似EMD距离公式如下:
Disij=‖MDS(LBPi)-MDS(LBPj)‖
(6)
其中,Disij表示LBP码LBPi和LBPj之间的差异。MDS()表示累计分布函数,在此处表示位值的累计分布函数。此方法效果如图6所示,左侧是标准RGB图像,中间是LBP编码图像,右侧是LBP编码映射图像。
图6 图像对比
通过图6可以看出,LBP编码映射图像相对标准RGB图像纹理更加显著,而且,其中还包含了与标准RGB图像互补的纹理信息。使用此图像能够为基于标准RGB图像的纹理识别模型提供帮助。
LBP辅助识别结构见图7。首先,将标准RGB图像与LBP编码映射图像分别输入到基础特征提取网络,提取基础特征;其次,将基础特征输入到多维特征融合模块当中,获得融合高维特征和低维特征的特征图;然后,将获得的特征图分别输入到改进的残差池化层中,获得纹理特征向量;最后,将标准RGB图像得到的特征向量与LBP编码映射图像得到的特征向量进行融合,即将两个特征向量进行拼接得到最终纹理特征,使用此特征获得纹理识别结果。
图7 LBP辅助识别
提出的网络模型可以兼容所有的基础特征提取网络。在本次实验中,所有的层都是固定的。操作系统为Windows。使用优化器为Adam优化器。实验使用PyTorch进行开发,损失函数为交叉熵损失,使用CPU Intel(R) Core(TM) i7-10700进行训练。批次大小为64,学习率为0.000 1,学习轮数为500轮。数据集选择DTD数据集以及FMD数据集,网络输入图像大小为224×224。选择在测试集上多次测试的平均准确率作为评估指标,平均准确率为多次测试中预测正确的占比值。准确率计算公式如公式(7),其中TP表示预测正确数,FP表示预测错误数。
(7)
实验在DTD可描述数据集[17]以及FMD材料数据集[18]上进行。DTD可描述数据集包含带状、斑点、泡沫、凹凸、网纹、裂纹等47个不同的纹理类别,共计5 640张图片。图片均收集来自Google和Flickr,是纹理识别领域通用的权威数据集。数据集涵盖了日常生产生活所见的90%以上的纹理情况。FMD数据集包含10种常见的材料类别,如织物、皮革等。每个类别包含100张图像,对DTD数据集和FMD数据集使用了数据增强的方法来扩充数据集,以便更充分地训练网络。分别对DTD数据集和FMD数据集进行水平翻转以及垂直翻转操作,将原始数据集扩充了三倍。数据集示例见图8。其中,第1-2行是DTD数据集及相关处理得到的图像,第3-4行是FMD数据集及相关处理得到的图像。第一列是原始图像,第二列是原始图像对应的LBP编码映射图像,第3-6列分别是原始图像进行垂直翻转,水平翻转后的图像及其对应的LBP编码映射图像。
对于DTD可描述数据集,此数据集共包含47类,每一类有120张图像,随机选取每类其中80张为训练集,40张为测试集,训练集共计3 760张图像,测试集共计1 880张图像。对于FMD数据集,此数据集共包含10类,每一类有100张图像,随机选取每类其中50张为训练集,50张为测试集,训练集共计500张图像,测试集共计500张图像。
3.2.1 多维特征融合模块有效性分析
本次实验中,在DTD数据集和FMD数据集上,探究多维特征融合模块对纹理识别效果的影响。本次实验使用的基础特征提取网络为Resnet50。具体实验结果见表1。其中,Conv2_x是指将Resnet50第二个卷积块输出的形状为56×56×256的特征图直接输入到改进残差池化层中获得的纹理识别结果,特征维度为256;Conv3_x是指将Resnet50第三个卷积块输出的形状为28×28×512的特征图单独输入到残差池化层中获得的纹理识别结果,特征维度为512;Conv4_x是指将Resnet50第四个卷积块输出的形状为14×14×1 024的特征图直接单独输入到残差池化层中获得的纹理识别结果,特征维度为1 024;Conv5_x是指将Resnet50第五个卷积块输出的形状为7×7×2 048的特征图直接输入到残差池化层中获得的纹理识别结果,也就是文献[16]原残差池化层纹理识别模型,特征维度为2 048,在FMD数据集上的平均准确率为81.09%,在DTD数据上的平均准确率为71.53%;Conv2_x、Conv3_x是指将Resnet50第二和第三个卷积块分别通过残差池化层,将得到的特征向量拼接后得到的纹理识别结果,特征维度为768;Conv4_x、Conv5_x是指将Resnet50第四和第五个卷积块分别通过残差池化层,将得到的特征向量拼接后得到的纹理识别结果,特征维度为3 072;Conv2_x、Conv3_x、Conv4_x是指将Resnet第二、第三和第四个卷积块分别通过残差池化层,将得到的特征向量拼接后得到的纹理识别结果,特征维度为1 792;Conv3_x、Conv4_x、Conv5_x是指将Resnet第三、第四和第五个卷积块分别通过残差池化层,将得到的特征向量拼接后得到的纹理识别结果,特征维度为3 584;该文提出的多维特征融合模块获得的特征向量维度为3 072,在FMD数据集上的平均准确率为81.80%,相较于原模型平均准确率提升了0.71百分点,在DTD数据上的平均准确率为72.38%,相较于原模型平均准确率提升了0.85百分点。在特征维度相对不大的情况下取得了最好的识别效果,证明了多维特征融合模块的有效性。
表1 不同的特征图在FMD数据集和DTD数据集上的平均准确率 %
3.2.2 改进残差池化层有效性分析
本次实验中,在DTD数据集和FMD数据集上,探究残差池化层的改进对纹理识别效果的影响。本次实验使用的基础特征提取网络为Densenet 161。在表2中,原模型是指文献[16]提出的原残差池化层纹理识别模型,全局平均池化与原模型是指该文改进中的全局最大池化换成全局平均池化,对比这三者的效果。通过表2可以发现,原模型在FMD上平均准确率为84.10%,全局平均池化与原模型拼接在FMD上平均准确率为83.8%,文中方法在FMD数据集上平均准确率达到了86%,相比原模型提高了1.9百分点;原模型在DTD上平均准确率为75.57%,全局平均池化与原模型拼接在FMD上平均准确率为75.32%,全局最大池化与原模型拼接在FMD数据集上平均准确率为75.48%,与原模型相差不大。由实验结果可知,对残差池化层的改进可以有效提升纹理识别的效果。
表2 不同残差池化层改进在FMD数据集和DTD数据集上的平均准确率 %
3.2.3 LBP辅助识别有效性分析
本次实验中,在DTD数据集和FMD数据集上,探究LBP辅助识别对纹理识别效果的影响。在表3中,RGB图像是指不使用LBP辅助识别,只使用标准RGB图像输入网络进行纹理识别;LBP编码映射图像,是指使用LBP编码映射图像输入网络进行纹理识别;LBP辅助识别是指文中方法。由表3可知,仅标准RGB图像输入时,在FMD数据集和DTD数据集上的平均准确率为84.10%和75.57%;仅LBP编码映射图像输入时,在FMD数据集和DTD数据集上的平均准确率为70.22%和66.95%;采用LBP辅助识别,使用LBP编码映射图像提供辅助信息时,在FMD数据集和DTD数据集上的平均准确率为86.32%和76.21%。使用LBP辅助识别后,在FMD数据集上平均准确率提升了2.22百分点,在DTD数据集上平均准确率提升0.64百分点,证明LBP辅助识别方式可以有效提高纹理识别的性能。
表3 LBP辅助识别方式使用与否在FMD数据集和DTD数据集上的平均准确率 %
图9是标准RGB图像输入(左)和LBP辅助识别(右)在FMD数据集测试集上的混淆矩阵。由图9可知,使用LBP辅助识别后,在每个类别上的平均准确率均有所提升。在fabric类上的平均准确率提升了4百分点;在leather类上的平均准确率提升了6百分点;在metal类上的平均准确率提升了6百分点;在plastic类上的平均准确率提升了4百分点;在water类上的平均准确率提升了2百分点;在wood类上的平均准确率提升了4百分点。由上述分析可知,使用LBP编码映射图像提供辅助信息时,几乎在所有的类别上均提升了效果。证明标准RGB图像与LBP编码映射图像之间并不只是在某个特殊的情况下存在互补的纹理特征,这两者之间存在稳定和全面的互补纹理特征。
图9 混淆矩阵
本次实验中,在DTD数据集和FMD数据集上,文中方法与B-CNN、Deep filter banks、Locality-aware coding、TEX-Net、DeepTEN和DRP等最新的纹理识别技术进行了比较。由表4可知,在FMD数据集上,主干网络为Resnet50时,文中方法平均准确率为81.8%;主干网络为Densenet161时,达到86.32%,文中方法均取得了最优的效果。在DTD数据集上,主干网络为Resnet50时,文中方法平均准确率为72.38%;主干网络为Densenet161时,达到76.21%,文中方法综合取得最优结果。综合来看,文中方法在FMD数据集和DTD数据集上均取得了不错的效果,证明了文中方法的有效性。
表4 文中方法与对比方法在FMD数据集和DTD数据集上的平均准确率 %
针对纹理识别进行研究,提出了基于改进残差池化层的纹理识别方法。提出了多维特征融合模块,使得纹理识别可以灵活利用高层特征和低层特征,增强了纹理特征;对残差池化层进行改进,在原残差池化层的基础上,添加全局最大池化层支路,增加对纹理图像的全局空间结构观察,得到更有效的纹理特征;通过LBP算法和MDS多维映射法得到的LBP编码映射图像与标准RGB图像之间存在互补的纹理信息,可以为纹理识别提供辅助信息,提高纹理识别的准确率。实验结果表明,该方法在纹理识别任务领域是有效的。使用深度学习的方法实现纹理识别,在未来的研究中,可以将对纹理识别任务针对性更强的传统方法与深度学习方法结合,以进一步提升纹理识别的效果。