当前位置:首页 > 工业用地 >cnn分类准确率很低(cnn做分类)

cnn分类准确率很低(cnn做分类)

介绍

本文分析了常见的纹理数据集以及传统CNN对纹理数据集分类效果不佳的原因。

cnn分类准确率很低(cnn做分类)

在机器视觉任务中,将纹理分析与深度学习结合使用对于获得更好的结果起着重要作用。在上一篇文章中,我们讨论了纹理是什么、纹理的不同类型以及纹理分析在解决实际计算机视觉任务中的适用性。我们还解释了一些最常见和值得注意的纹理提取技术,此外,我们还演示了如何将这些纹理提取技术与深度学习相结合。

深度学习由多种可用于图像分类任务的结构组成。基于深度学习的模型经常用于图像分类任务,并在许多不同的用例中产生了出色的结果,证明了其有效性。几年前,迁移学习的概念出现了,它提出使用使用大型数据集训练的模型作为特定用例的主干,其中预训练的主干模型只需使用权重进行微调即可通过使用来解决特定任务特定案例的数据集。为图像分类训练的预训练模型也可用于纹理分类任务。为了测试现有传统的基于CNN 的纹理分类模型的效率,我们使用一些公共的基于纹理的数据集对其性能进行基准测试。我们观察到传统的CNN 结构(如图5 所示)很难产生好的结果,并且在纹理分类任务中不是很有效。

纹理分类和常用纹理数据集

纹理分析和分类是地形识别、自动化医疗诊断、显微图像分析、自动驾驶车辆和爆炸危险检测等领域的关键任务。在执行基于分类的任务时,纹理是一个非常重要的属性。作为人类,我们可以直观地看到、理解和区分纹理,但基于人工智能的机器却并非如此。如果人工智能模型可以识别纹理,那么它在分类任务中的使用将是一个额外的优势。根据物体的视觉外观来理解和分类物体可以使人工智能模型更加高效和可靠。

因此,我们构建了纹理分类任务的模型,并在基于纹理的基准数据集(例如DTD、FMD 和KTH)上测试模型的有效性。根据任何模型在这些数据集上的准确性,我们可以理解并在某种程度上预测其在其他类似数据集上的表现。下面我们提供有关上述数据集的详细信息。

DTD:它是一个基于纹理的图像数据集,由5640 张图像组成,这些图像根据人类感知的47 个类别进行组织。每个类别有120张图片。

图1. DTD 中每个类别的图

KTH: KTH 通常称为KTH-tips(不同光照、姿势和比例下的纹理)图像数据库,旨在通过提供比例以及姿势和光照的变化,在两个方向上扩展CUReT 数据库,并通过以下方式获得其他样本在不同环境下对材料的子集进行成像。共有11个类别,总样本量为3195个。

图2、KTH-TIPS数据集中11个类别,每个类别4张图片

FMD:该数据库的特定目的是捕获一系列常见材料(例如玻璃、塑料等)在现实世界中的外观。该数据库中的每张图像(总共10 个类别,每个类别100 张图像)都是从Flickr.com(根据知识共享许可)手动选择的,以确保各种照明条件、组合、颜色、纹理和材质子类型。

图3.FMD 数据集中每个类比的几张图像。

传统CNN 图像分类

就现有的传统CNN 而言,这些大多属于预训练模型本身或使用这些预训练层/权重的模型。在我们的博客中,我们将首先简要概述什么是预训练模型以及如何将其应用于图像分类任务。

不同的研究人员针对图像分类任务提出了几种现有的CNN 模型。这些模型还可以用作许多其他图像分类相关任务的预训练模型。在图5 中,我们可以看到如何将预训练层合并到传统的基于CNN 的架构中。

在纹理分类任务中,这些预训练模型也可以通过转移其知识并将其用于基于纹理的数据集来使用。由于这些模型是为特定数据集上的图像分类任务而构建的,并且我们在几个不同的数据集上使用它们进行纹理分类,因此我们将它们称为预训练模型。进一步介绍图像分类预训练模型的一些关键思想:

什么是预训练模型?

为了简单地定义预训练模型,我们可以将其称为神经网络模型,该模型由其他人训练并针对特定用例提供给其他开发人员。

流行的预训练模型通常通过使用庞大的数据集来解决复杂的任务。然后将这些模型作为开源贡献,以便其他开发人员可以在他们的工作中进一步构建或使用这些模型。通常,使用预训练模型来解决开发预训练模型所针对的类似问题是一个好主意。在图4中,针对源任务训练模型,并将已训练的源模型(预训练模型)的权重用于目标任务。对新开发的模型进行了一些修改,转移了预训练模型的权重,以获得更好、更准确的预测结果。

图4、使用预训练模型的方法

使用预训练模型作为计算机视觉和自然语言处理中各种问题的起点是很常见的。从头开始构建神经网络需要巨大的计算能力、时间和熟练劳动力。

在本文中,我们将重点讨论应用预训练模型(针对图像分类任务进行训练)来解决纹理分类任务。

常用的预训练模型

以下是经常用于许多图像分类相关任务的预训练模型的概述。

VGG-16: 是2015 年发布的最流行的预训练图像分类模型之一。VGG-16 是一个16 层可调谐神经网络,在ImageNet 数据库中的100 万张图像上进行训练。它能够对1,000 个对象进行分类。

Inception v3:Google 在同一ImageNet 数据库上开发的预训练模型。它也称为GoogLeNet。 Inception v3 是一个50 层的神经网络。在2014年ImageNet竞赛中,InceptionV3获得第一名,VGG-16获得第二名。它只有700万个参数,比之前的模型小很多,而且错误率非常低,这是这个模型的一大成就。

ResNet50:最初的模型称为Residual Net或ResNet,由微软于2015年开发。ResNet50是一个深度为50层的神经网络。 ResNet50 还接受了ImageNet 数据库中100 万张图像的训练。与VGG16相比,ResNet复杂度更低,结果也优于VGG16。 ResNet50旨在解决梯度消失问题。

EfficientNet:它是Google 在2019 年训练并向公众发布的最先进的卷积神经网络。在EfficientNet 中,作者使用了一种称为复合缩放的新缩放方法,其中我们同时缩放固定数量的维度,并且我们统一缩放。通过这样做,我们可以获得更好的性能,并且缩放因子可以由用户自己决定。 EfficientNet 有8 种实现(从B0 到B7)。

针对我们的用例利用和调整预训练模型的方法

由于我们使用的数据与预训练模型的训练数据不同,因此我们需要根据数据更新模型的权重以学习特定于领域的信息。因此,我们需要对数据模型进行微调。

下面我们讨论在特定用例中使用预训练模型的一些机制。

特征提取- 使用预先训练的模型作为特征提取机制。我们可以删除输出层(即给定1000 个类别中每个类别的概率)并使用整个网络作为新数据集的固定特征提取器。

训练一些层,同时冻结其他层- 预训练模型可用于部分训练我们的模型,其中我们保持初始层的权重冻结并重新训练较高层的权重。根据一些实验,我们可以看到需要冻结多少层以及需要训练多少层。

使用预训练模型的架构- 我们可以从模型的架构中获得帮助,并使用它来随机初始化模型的权重。然后我们可以根据我们的数据集和任务来训练模型,这样我们就有了一个可以为我们的任务带来良好结果的良好架构。

在处理任何类型的图像分类问题时,微调和使用预先训练的模型是一个明智的解决方案。此外,这些传统/预训练的CNN 模型也能产生良好的结果,但是,这些架构在对基于纹理的数据集进行分类时表现不佳。

为什么传统的CNN 架构在基于纹理的数据集的分类任务中表现不佳?

图5、传统CNN结构的4个主要部分

传统的CNN架构通常包括一个预训练层,在该层上添加CNN层的一些可训练块,然后将其输出传递到全连接层进行类别预测。从图5可以看出,传统的CNN架构主要有四个主要组件,分别用四个块A、B、C、D来描述。第一个组件是输入层(描述为块A),第二个是预训练层/权重(描述为块B),第三个组件是可训练的CNN 块(描述为块C),其输出传递到第四个组件的全连接层(描述为块D) )。传递到全连接层的输入通常包括全局特征而不是局部特征。这种通用架构适用于大多数需要图像全局特征来分类的任务。然而,这些类型的架构不太可能准确预测全局和局部特征都参与类预测的类。

CNN模型的复杂性随着网络深度的增加而增加,最后一层通常倾向于捕获图像的复杂特征。从卷积层捕获的特征被发送到全连接层,以获得图像中物体的形状信息并预测其类别。有关整体形状和高度复杂特征的信息不适合纹理分析,因为纹理基于低复杂度的重复局部位置模式,这需要丰富的基于局部的特征提取。

为了使用为图像分类而开发的基于CNN 的模型执行纹理分类,需要使用从网络CNN 层的输出中提取的特征来执行域转移。当使用预训练的CNN 进行基于纹理的分类时,我们面临三个主要缺点,如下所示。

全连接层释放卷积层捕获图像的空间布局,这对于表示对象的形状很有用,但对于表示纹理不太有用。

需要将固定大小的输入发送到CNN,以便与全连接层兼容。这通常是一项昂贵的任务

预训练CNN 的更深层可能是非常特定于领域的,并且对于纹理分类可能不是很有用

众所周知,任何图像的纹理都是由其局部结构和局部像素分布定义的。要分析任何图像的纹理特征,必须研究其基于局部的特征并将其传递到全连接层。然而,传统的CNN无法将基于局部的特征传递到全连接层,因为传统CNN架构的最后一个CNN层使用复杂的特征来捕获对象的整体形状并提取全局特征(如图5所示),并且它不是一种捕捉局部特征的模式。这就是传统CNN 架构在基于纹理的数据集上表现不佳的原因。

在现有的CNN中添加纹理提取特征技术可以改善纹理分类任务的结果。表1 比较了传统CNN 方法与使用Resnet-50 主干网以及一些特征提取技术的方法。

表1. 传统CNN模型与使用特征提取技术的Resnet-50在基准数据集上的结果比较

将纹理特征提取策略与深度学习相结合的模型往往会比传统的深度学习方法产生更好的结果。这是因为传统的CNN 模型捕获通常对对象检测有用的复杂特征,而纹理是使用局部重复的模式/特征来识别的。

可以使用自定义深度卷积网络来改进CNN。在卷积层之后,CNN 引入了各种纹理提取技术。

结合纹理提取层和预训练层的自定义深度卷积网络不如单独使用预训练模型或统计使用纹理特征提取器那么灵活。我们将在后面的文章中讨论纹理特征提取和预训练模型。

作者:特拉普蒂卡尔拉

编译:荣淮阳

审稿人:刘庆

最新资讯

推荐资讯