1. 磐创AI-开放猫官方网站首页
  2. Medium

可变输入形状图像分类

众所周知,卷积神经网络(CNN)是最著名的用于图像分类的神经网络。在本文中,我们不会讨论CNN的介绍。但是,您可以很容易地找到许多介绍其工作原理的文章。

直观地说,您可能会认为构建CNN需要大量带标签的图像才能提供给模型。然而,带标签的图像不够大,也不够多样,不足以在某些领域从头开始创建生产级模型。根据这一局限性,迁移学习在当今的图像分类任务中扮演着重要的角色。

简而言之,迁移学习利用预先训练的模型作为特征提取器。然后,针对任何特定任务,将编码后的向量反馈给分类头(也称为微调)。使用此技术,模型无需从头开始调整其权重。它可以利用预先训练的模型权重来识别输入图像中的关键特征。此外,与从头开始创建相比,这可以缩短训练时间。

让我们从CNN的一个问题开始,输入图像必须具有相同的分辨率(宽度和高度)。这是因为当卷积层被展平并连接到密层时,网络需要知道卷积层的分辨率来确定连接密层的权数。这就是为什么所有输入图像的输入图像分辨率必须相同的原因。此外,在训练和推理服务阶段,所有输入图像的大小必须调整到相同的分辨率。

这会导致预处理阶段中的额外步骤,并产生不必要的管理成本。此外,将图像大小调整为固定形状会导致图像的畸变率,这对模型质量和性能有直接的负面影响。

介绍可变图像分类

TL;DR使用GlobalAveragePooling2D或GlobalMaxPooling2D代替展平层。

我们上面讨论的问题是通过“全局池”层解决的。定义CNN架构时,请将平面层替换为全局平均池化或全局最大池化图层。让我们来看看Flatten和Global Pooling层有什么不同,Flatten可以接受任何形状的张量,并将其转换为一维张量,其张量中的值仍然与以前相同。例如,(#Samples,32,32,1)的张量将展平为(#Samples,32*32*1),即(#Samples,1024)张量。

另一方面,全局池将张量的每个维度上的平均值或最大值应用于单个值。例如,(#Samples,32,32,1)的张量将被简化为(#Samples,1,1,1)张量。因此,它允许我们在全局池层之后放置一个致密层。有关更多详细信息,这是一篇关于全球平均池层的详细说明的文章。article

概念证明

在这一部分中,我们将在Imagenette数据集上进行图像分类实验。本演示使用的是160px版本的数据集。Imagenette

我们将看到固定和可变输入形状图像分类之间的性能,实验是用TensorFlow2.5实现的。有关此实验的完整版本,请在此处查看。here

首先,我们使用迁移学习技术构建我们的CNN网络。模型体系结构由以下…定义

第一个是固定输入形状CNN模型,其输入形状将设置为(160,160)。另一种是可变输入形状的CNN模型,其输入形状可以接受输入图像的任何分辨率。它们都利用Xception模型作为特征提取器。Xception

对于第一个,放置扁平层来转换Xception输出,第二个放置GlobalAveragePooling2D,如上所述。

接下来,我们需要一个ImageDataGenerator来加载和预处理我们的训练图像。一些数据增强技术已被应用到这些系统中。如果你很好奇,请看一下这里。ImageDataGenerator here

在此之后,每个模型都使用Google Colboratory上的GPU进行了大约一个小时的20个纪元的训练。Google Colaboratory

恭喜你!我们的CNN已经成功地进行了训练。现在我们来看一下他们的表现对比。需要说明的是,我们不会深入到结果分析中,我们进行实验是为了确保我们上面讨论的概念。

共有3925个测试图像,每个类别大约有392个图像。根据上面的分类报告,我们的固定输入形状模型的准确率为95.58%,足以用于生产。

而变输入形状模型的准确率较高,为97.89%。如果你熟悉机器学习,2%的准确率提升并不是那么容易。这意味着这是一个巨大的进步!!

结论

在本文中,我们讨论了如何使用Global Average Pooling层创建能够接受任何分辨率的图像作为输入图像的CNN。同时演示了我们将迁移学习技术应用到模型中。

顺便说一下,全局池层还有其他我们没有讨论过的好处。把他们找出来,干杯!!

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/26/%e5%8f%af%e5%8f%98%e8%be%93%e5%85%a5%e5%bd%a2%e7%8a%b6%e5%9b%be%e5%83%8f%e5%88%86%e7%b1%bb/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息