首页 理论教育实验内容及结果分析详解

实验内容及结果分析详解

【摘要】:例如,根据6.5.3节的实验设置,当冻结本文迁移学习模型的第1~9层时,本节模型在KTH-TIPS纹理库训练集和验证集上的损失函数变化情况如图6-17所示,识别精度变化情况如图6-18所示。综上可以看出,本节算法在4个纹理库上一致取得了良好的识别结果。其中,表6-9中未给出的部分结果表示相关文

1.模型的训练、验证和测试流程

整个网络的训练过程分为前向传播和反向传播两个阶段。前向传播阶段首先利用基端模块对输入图像的特征进行提取,然后利用顶端模块计算分类概率并输出类别标签;反向传播是利用BP算法对模型中的权值参数进行调节更新,使模型的交叉熵损失函数值最小。例如,根据6.5.3节的实验设置,当冻结本文迁移学习模型的第1~9层时,本节模型在KTH-TIPS纹理库训练集和验证集上的损失函数变化情况如图6-17所示,识别精度变化情况如图6-18所示。

图6-17 训练损失和验证损失的变化曲线

图6-18 训练精度和验证精度的变化曲线

从图6-17、图6-18可以看出,本节构建的迁移学习模型具有很好的学习能力,仅通过10轮训练就可使模型的损失函数值迅速下降到0.2以下,对应的训练集识别精度和验证集识别精度则迅速提升到95%以上;在10轮训练之后,模型的性能仍有一定幅度的提升,并在20轮训练之后逐渐趋于平稳状态。最后,利用训练过程中保存的最佳模型对测试样本集进行类别预测,即可实现最终的纹理识别任务。

2.确定最佳的冻结层数

在确定了本节迁移学习模型的结构和超参数值之后,为了获得最佳的训练模型,最重要的任务是确定最佳的冻结层数(freezeNum),即对freezeNum及其之前的层进行冻结,只微调训练freezeNum之后的网络层参数。

为了确定最佳的冻结层数,根据表6-5所示的迁移学习模型结构,可依次冻结不同的DSC卷积模块个数,可选的冻结层数包括freezeNum=3, 9,15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81,相邻的两个冻结层数之差为6,即相隔一个DSC模块(6层)。例如,当freezeNum=3时,只冻结了1~3层的普通卷积模块;当freezeNum=81时,则冻结了1~81层的整个基端模块,此时只能微调训练最后顶端模块的网络参数。

考虑到KTH-TIPS纹理库含有丰富的光照、视角和尺度变化,选择在KTH-TIPS纹理库上开展实验,对本节设计的迁移学习模型依次冻结不同的层数,即freezeNum=3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81,可得到对应的在测试集上的识别精度如表6-6所示。

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

从表6-6可以看出,当freezeNum=9时,模型的性能达到最佳,此时能获得最高的识别精度99.87%;当冻结层数继续增大时,识别精度呈下降趋势,尤其当freezeNum=81时,整个基端模块都被冻结,仅能调节顶端模块的参数,此时的识别精度仅为93.29%,这表明从MobileNet模型直接迁移过来的初始化参数并不能直接用于纹理图像的识别,必须利用现有的纹理图像样本对迁移学习模型的参数做进一步的微调训练,才能获得最佳的纹理图像识别效果。所以,本节将最佳的冻结层数设为freezeNum=9。

3.采取特征迁移前后的识别精度对比

本节采用预训练的深度CNN模型和最佳微调来实现特征迁移,为了验证特征迁移的效果,继续在KTH-TIPS纹理库上开展实验,分别对比预训练前后和最佳微调前后的识别精度,实验结果如表6-7所示。其中,“未经预训练”表示没有使用ImageNet数据集对基端模块进行预先训练,而是直接使用现有的纹理图像训练样本对本节模型从头开始进行训练,然后直接用于纹理图像识别;“预训练后”表示使用ImageNet数据集对基端模块进行了预先训练,使基端模块获得了初步的训练参数值,但此时没有利用现有的纹理图像样本进行最佳微调;“预训练+最佳微调后”表示首先利用ImageNet数据集对基端模块进行预先训练,然后利用现有的纹理图像样本对本节模型进行逐级的最佳微调,最后用于纹理图像识别。

表6-7 特征迁移前后的识别精度对比

从表6-7可以看出:

(1)采用预训练模型能获得比未经预训练模型更高的识别精度。当采用未经预训练的模型时,识别精度仅为30.68%,这是因为现有的纹理图像训练样本数量太少,在从头开始训练时不能对模型进行充分训练,所以对纹理图像的识别能力较差;当采用预训练的模型时,识别精度提升到93.29%,显著超过了未经预训练的模型,这是因为ImageNet数据集也含有一定的纹理图像特征,通过预训练模型的特征迁移,使在ImageNet数据集上预训练的模型已经具备了识别纹理图像的初步能力,所以能获得较高的识别精度。

(2)对本节模型进行最佳微调训练能获得更高的识别精度。这是因为虽然预训练模型具备了识别纹理图像的初步能力,但ImageNet数据集不是专门的纹理图像数据集,在此数据集上预训练的模型对纹理图像识别任务不具有针对性,因此识别精度有限;而在利用现有的纹理图像样本对预训练模型进行逐级最佳微调之后,能够使本节模型学习到更本质的、更具鉴别力的纹理图像特征,所以能够获得更好的纹理图像识别效果。

4.本节算法在4个纹理库上的识别精度

当设定最佳的冻结层数为freezeNum=9时,在4个纹理库(CUReT、KTH-TIPS、UIUC、UMD)上开展广泛的实验,对应的识别精度如表6-8所示。

表6-8 本节算法在4个纹理库上的识别精度

从表6-8可以看出:①在CUReT和KTH-TIPS这两个标准纹理库上,本节算法分别取得了99.76%和99.87%的识别精度,这体现了本节算法对纹理图像具有较好的基准识别能力;②在UIUC和UMD纹理库上,虽然这两个纹理库的样本数量较少,每类的训练样本个数只有20个,但本节算法取得了很高的识别精度,即在UIUC纹理库上取得了99.80%的识别精度,尤其在UMD纹理库上取得了100%的正确识别率。综上可以看出,本节算法在4个纹理库上一致取得了良好的识别结果。

5.本节算法和其他先进算法的对比

为了进一步评估本节算法的性能,将本节算法与其他先进算法在4个纹理库(CUReT、KTH-TIPS、UIUC、UMD)上的识别精度进行比较,如表6-9所示。其中,表6-9中未给出的部分结果表示相关文献没有报道对应的识别精度。

表6-9 在4个纹理库上的纹理识别精度对比

续 表

从表6-9可以看出:①本节算法在CUReT、KTH-TIPS、UIUC和UMD这4个纹理库上分别取得了99.76%、99.87%、99.80%和100%的识别精度,一致超越了其他所有算法的识别精度;②和纹理基元类算法、Gabor类算法和LBP类算法相比,由于上述三类方法仅能提取纹理图像的浅层特征,导致识别精度受到限制,而本节方法能利用深度CNN网络提取纹理图像的深层和高级特征,从而能够获得更高的识别精度;③在CNN类算法中,其他算法都是直接利用纹理图像样本对CNN模型进行训练的,但纹理图像的训练样本数量较少,导致对CNN模型的训练不充分,最终获得的识别精度不够理想,而本节算法通过采用迁移学习技术,能够同时利用ImageNet大型数据集和现有纹理图像样本的特征,获得了更高的识别精度。所以,在CUReT、KTH-TIPS、UIUC、UMD这4个不同类型的纹理库上,本节算法一致取得了最高的识别精度,展现出良好的通用性、稳健性和识别能力,这充分表明本节算法在纹理图像识别任务中具有优越的性能。

综上所述,本节提出了一种基于深度CNN和迁移学习的纹理图像识别方法,该方法具有如下优点:①不需要海量的训练样本,只需利用少量的纹理图像样本对迁移学习模型进行微调训练即可;②由于只需对少量的纹理样本进行微调训练,使模型的训练时间显著缩短,对硬件平台的性能要求也大大降低;③由于充分利用了大规模ImageNet数据集的特征和现有纹理图像的特征,使训练的模型能够获得更好的识别能力;④模型的体积小,仅为12.5 MB,比原始MobileNet模型的体积16 MB还要小,方便应用于便携式设备。所以,本节提出的方法有效解决了将深度学习方法应用于纹理图像识别任务时所面临的一些瓶颈问题,推进了深度学习技术在纹理图像识别领域的应用和发展,有助于解决复杂的、极具挑战性的纹理图像识别问题。