ronghuaiyang · 2022年10月26日 · 北京市

如何在深度学习结构中使用纹理特征


作者:Trapti Kalra

编译:ronghuaiyang

导读

这是前一篇文章的继续,在这第篇文章中,我们将讨论纹理分析在图像分类中的重要性,以及如何在深度学习中使用纹理分析。

这是前一篇文章的继续,在这第篇文章中,我们将讨论纹理分析在图像分类中的重要性,以及如何在深度学习中使用纹理分析。我们还将讨论一些常用的纹理提取技术,这些技术用于预先训练的模型,以更有效地解决分类任务。

为了更好地理解本文中解释的主题,我们假设读者对纹理提取技术、迁移学习和预训练的模型(如ResNet、InceptionNet等)有基本的了解。

在过去的几年里,深度学习在分类、分割和识别任务中显示出了巨大的意义和有效性。然而,在许多情况下,传统的基于cnn的架构在基于纹理的分类任务中表现不佳。为了解决这个问题,最近有人提出了一些新的架构。

以往的纹理分类工作大多使用预训练的模型,如ResNet、InceptionNet等,并将纹理特征提取技术之一应用于预训练模型的激活输出。

如果图像数据集具有丰富的基于纹理的特征,如果将额外的纹理特征提取技术作为端到端体系结构的一部分,则深度学习技术会更有效。

预训练模型的问题是,由于模型的复杂性,最后一层捕获图像的复杂特征。这些特征提供了关于物体形状的信息,但不适合基于图像中的重复模式来识别纹理细节。为了以一种优雅的方式解决这个问题,研究人员提出了将纹理提取技术与CNN结合起来的概念。这样纹理就能被更准确地捕捉和分类。

在基于纹理的分类任务重,纹理分析对于深度学习的重要性

由于纹理基于局部模式,而传统的深度学习方法强调复杂的特征,对纹理分类没有帮助,因此,传统的CNN架构不能很好地执行基于纹理特征的分类任务。为了让深度学习在基于纹理的数据上更好地工作,需要有一种方法,可以从图像中提取纹理特定的特征,并将其传递给全连接层,同时保留全局特征。这样的架构设置将使全连接的层具有信息纹理特征,并有助于更有效地估计类边界。

image.png

图1,局部特征提取

我们可以在图1中看到,织物显微图像中提取的局部特征如何显示几乎相似的特征,这些提取的局部特征足以呈现织物的纹理类型。从给定的织物纹理中,假设使用纹理分析技术提取给定图像的局部特征(LF)。相同的局部模式在整个图像中重复。在这张织物图像中,三个提取的局部特征的特征几乎是相同的。与全局特征相比,提取这些局部特征将更有帮助,因为局部特征在定义给定织物中存在的纹理类型时更有希望,从而更好地区分“纹理类型”类。

在纹理分析中,我们重点研究了纹理的识别和提取方法。更好地理解纹理分析方法有助于我们确定最适合特定纹理类型的技术,以及如何将该方法应用于给定的图像,以提取纹理特征。

利用纹理分析的知识,我们可以开发基于纹理的技术,并在神经网络架构中以“层”的形式实现它们。这使得纹理分析方法可以与基于cnn的骨干架构相结合。

如何在深度学习结构中提取纹理特征?

在典型的CNN体系结构中,没有规定性的方法来强制在传递给全连接层的激活中存在纹理特征。假设,我们必须根据纹理类型对一些图像进行分类。如果以某种方式,我们可以强制模型来解释图像中的纹理特征,那么模型的性能就会大大提高。

在最近的研究中,很少有纹理特征提取技术能够以“专门的”可微网络层的形式与CNN体系结构集成。将纹理提取层与传统CNN体系结构集成后,其主要优点是将局部特征与全局特征一起传递给全连通层,有助于更显著地估计类边界。

每种纹理提取技术能够提取的纹理特征类型不同,因此没有一种“通用的”纹理提取方法。

由于纹理是图像的局部属性,因此这些技术的工作原理是突出给定图像的局部特征。

在下一节中,我们将讨论最近开发的纹理提取技术以及它们在使用CNN架构时应用的纹理任务类型。

深入纹理提取技术、方法以及在预训练激活输出上的应用

DeepTen

DeepTen网络是一种利用损失函数在端到端学习框架上学习视觉词汇的技术。编码层被利用在卷积层之上。DeepTen的独特之处在于字典、特征、分类器和编码表示都是同时学习的。这里的字典指的是输入数据的稀疏表示。

为什么它有助于纹理分析

在一般的计算机视觉任务中,使用SIFT(尺度不变特征变换)或者滤波器组提取手工设计的特征。但在DeepTen中,每个部分都针对给定的端到端模式/纹理/材料识别任务进行了调优。整个管道被训练在一起,这些特征为识别任务提供了一个无顺序的编码。

如何使用它进行基于纹理的分类

在DeepTen中使用了一个可学习的残差编码层,它将残差学习和整个字典移植到CNN的一个单层中。DeepTen的编码层有3个主要属性:

  • 广义鲁棒残差编码器,描述特征分布。
  • 作为卷积层之上的池化层,增加了深度学习模型的灵活性。
  • 它使模型适合于传输预训练的特征,因为它学习了一个包含领域特定信息的固有字典。

image.png
图2,固有字典由编码层学习

这里在图2中,字典的码字和输入视觉描述符被用来计算残差。利用两者之间的距离来获取赋值权值,最后对残差向量和赋值权值进行聚合。

DeepTen还使用了端到端学习技术,因为编码层是一个有向无环图(图2),它是可微的,可以使用使用反向传播的随机梯度下降来训练它。

用例

DeepTen缩小了CNN和经典计算机视觉任务之间的差距,使其在纹理和材料识别任务中非常高效。要了解更多关于编码层是如何实现的以及它是如何集成到CNN的,请参考:https://openaccess.thecvf.com/content_cvpr_2017/papers/Zhang_Deep_TEN_Texture_CVPR_2017_paper.pdf

DEPNet

深度编码池(Deep Encoding Pooling, DEP)是一种将局部空间信息与无序纹理细节相结合的技术。这里我们用一个有监督的参数分布来找出类的边界,并建立类之间的关系。

在经典的方法中,使用定制的滤波器组过滤纹理图像,然后使用基于直方图或词袋的方法对这些输出进行分组。特征提取是通过将直方图或词袋的输出发送到预训练的卷积层来完成的。然而,在DEPNet中,纹理图像被发送到卷积层,从那里的输出被发送到编码层和全局平均池化层。

为什么它有助于纹理分析:

DEPNet更关注局部空间信息和无序表示。

在这里,编码层捕获纹理外观细节(即“无序纹理”:意思是不考虑图像中局部特征的空间顺序),而全局平均池化层捕获空间信息。这两层都用双线性模型处理。
image.png
图3,DEPNet结构

DEPNet双线性模型使用全连接层的输出。这些全连接层的输出是向量,对两个向量的外积没有限制,也不涉及计算特征向量外积的计算复杂度。

在深度编码池网络中,

  • 纹理编码层将整个字典学习和视觉编码管道集成到一个单一的CNN层,这为纹理建模提供了一个无序的表示。
  • 双线性模型是双因素模型,如果一个因素不变,则另一个因素的输出是线性的。这些因素平衡了两个组成部分的贡献。
  • DEPNet的卷积层与基于ImageNet的预训练cnn的非线性层相结合,用于特征提取。

如何使用它进行基于纹理的分类

在很多情况下,数据集的两个类彼此非常相似,经常分类错误。例如,沥青和石头沥青或树叶和草(树叶是背景)。在这种情况下,有必要为该图像找到类标签和最近的类。为了解决这个问题,在寻找图像与各种类之间的关系时使用了DEP-manifold。

从非参数算法来看,DEP-manifold采用了一个积分分布。深度神经网络利用这种分布直接预测纹理图像的流形坐标。基于材料类的相似性,建立了材料识别算法的混淆矩阵。分类错误的元素在对角线附近有一个接近的相关性,这些图像可以被归类为密切相关的类。

image.png

图4,从超过1000张随机图像的GTOS训练集中提取特征,在分类层之前执行

在图4中,混淆矩阵中的深蓝色代表高相关性,浅蓝色代表低相关性。有些类分类错误,但它们可以被认为是最接近的类。可以看到多个深蓝色点的列是类之间关系密切的类。

用例

DEPNet的整个体系结构就像一个有向无环图,所有的参数都可以通过反向传播来训练。DEPNet就是一种专门用于地面地形识别的算法。论文:https://openaccess.thecvf.com/content_cvpr_2018/papers/Xue_Deep_Texture_Manifold_CVPR_2018_paper.pdf

DSRNet

纹理技术通常侧重于提取纹理的无序空间排列,但也重视纹理的内在结构特性。深度结构显示网络(DSR-Net)侧重于结构表示,因为纹理分析是通过捕捉纹理之间的空间关系来完成的。

为什么它有助于纹理分析

DSRNet背后的主要思想是,纹理的空间排列在其空间布局中可以有多种感知,但这些纹理之间存在空间依赖性,这种依赖性不会因空间布局而变化,并告诉我们纹理的结构属性。见下图(图5),一个纹理有多个感知。
image.png
图5,A:不同的纹理带有移动的纹理元素,B:可移动纹理元素之间的空间依赖性

如何使用它进行基于纹理的分类

在DSRNet中捕捉纹理之间的结构关系使用了两个模块 —— 原始捕获模块(PCM)和依赖学习模块(DLM)

如图6所示,DSR-Net有两个分支 —— 结构显示分支和空间有序分支。首先以resnet50为骨干进行特征提取,然后将特征串联在一起形成特征池以获取局部空间特征。将结构显示分支的输出与空间有序分支的输出相加,最后发送到全连接层。
image.png
图6,a) DSR-Net的完整架构 b) structure - reveal模块的详细架构

在PCM空间上下文中,对纹理给出约束,这些约束在八个方向上给出。如图7所示,方向映射用于从给定输入捕获主要模式。

image.png

图7:原语捕获模块(PCM)示意图,for each position指的是PCM计算的每一步

如图8所示,PCM捕获的模式被传递给DLM, DLM使用两种协作策略在本地生成多个候选原语之间的依赖关系。

image.png

图8所示。依赖学习模块(DLM)的说明

用例

由于DSRNet基于纹理的结构特性,它对亮度变化和空间变形具有很强的鲁棒性。除了纹理分类,它还可以用于其他视觉任务。然而,DSRNet已被证明适合于场景解析和细粒度识别任务。有关DSRNet及其功能的更多信息,请参考:https://openaccess.thecvf.com/content_CVPR_2020/papers/Zhai_Deep_Structure-Revealed_Network_for_Texture_Recognition_CVPR_2020_paper.pdf

CLASSNet

它是一个使用CLASS (Cross-Layer Aggregation of Statistical Self-similarity)技术构建的神经网络。这是通过在不同层间改变CNN的结构来实现的,方法是向其添加统计自相似性(SSS),这是纹理的一个众所周知的属性。

纹理包含许多相互矛盾的特性,这些特性是由具有统计平稳性的随机过程捕获的。

Statistical stationery是指两个或两个以上的区域在某些统计方面具有相似的值。纹理中的各种模式都由这些相同的统计数据表示。图9是一个例子,其中图像中的三片叶子形状相似,在统计上是一致的。
image.png
图9,自相似的图例

为什么它有助于纹理分析

将小波变换与_SSS_结合形成跨层_SSS_,以便更好地提取特征图进行分类。同时将_SSS_与CNN结合使用,可以得到空间纹理信息。

如何使用它进行基于纹理的分类

如图10所示,从不同CNN层中选取的特征映射被叠加为特征张量。其中一个沿着通道维度的张量是跨层SSS。使用滑动窗口通过通道对局部特征进行采样,然后在每个采样块上计算差分盒计数(DBC)维数。最后,将所有块上DBC维度的直方图用作描述符。
image.png
图10,CLASS的说明。来自CNN的堆叠特征图是在滑动窗口的帮助下采样的。计算每个DBC块的DBC维数,得到每个DBC块的直方图

采用跨层方式的特征聚合是在Resnet各层内的卷积层内完成的,Resnet是CLASSNet的主干。由于DBC的计算是基于SSS的,因此可以方便地转移到ResNet骨干;SSS在改进特征聚合方面也很有用。
image.png
图11,CLASSNet的体系结构说明

图11简要描述了ResNet骨干网的连续残块(RB)如何与FC层和GAP层连接。残差块由几个卷积层和跳过连接组成。CLASS模块集成在所有RBs之上。

CLASS模块有4个阶段:

  • 尺寸归一化:通过对每个特征向量进行1x1卷积,然后向上采样到一个固定的尺寸来归一化。
  • 跨层分组:所有特性映射都堆叠在另一个之上。
  • DBC Pooling:在每个采样路径上计算DBC获得本地补丁。
  • 聚合:聚合前,对feature map(从上一步获得)进行1x1卷积。对残差向量应用softmax计算软直方图。然后在此基础上计算软直方图并共享bin中心。

用例

CLASSNet模块没有引入很多新的参数,除了可学习的bin中心、用于软直方图的缩放因子和卷积层的权重 —— 用于大小归一化,以及用于在DBC池化后生成软直方图。

所有这些参数都与ResNet一起训练。CLASS模块适用于较轻量级的主干和首选轻量级模型的地方。CLASSNet是一种经过验证的纹理识别模型,对各种数据集的纹理识别效果良好。有关CLASSNet及其性能的进一步了解,请参阅:https://openaccess.thecvf.com/content/CVPR2021/papers/Chen_Deep_Texture_Recognition_via_Exploiting_Cross-Layer_Statistical_Self-Similarity_CVPR_2021_paper.pdf

FENet

通常,CNN经常使用全局平均池(GAP)来捕获纹理的空间特征,但GAP无法描述来自纹理的复杂分布模式。为此,FENet引入了分形编码(Fractal Encoding, FE)的概念,利用局部全局层次分形分析,找出纹理在空间排列中的模式。

为什么它有助于纹理分析

分形几何是一种通常用于纹理合成和纹理分析的方法。许多自然纹理都具有分形维数信息,这些信息告诉我们纹理图像中图案的规律性。如图12所示,有两种不同类型的纹理。计算这些图像的分形维数将有助于轻松区分两种类型的纹理。

image.png

图12,图像和对应图像的分形维数

这里,在图12中,在特定区域的黑白像素值可以是相同的,但纹理的类型是非常不同的。

这些基于分形维数的统计信息被FE (fractal Encoding)用来描述纹理的空间布局,以便更好地提取特征。

如何使用它进行基于纹理的分类

FE使用全局特征编码模块,通过特征图找到特征的空间模式。FE模块利用分形分析池(FAP)根据图像的局部分形维数对纹理的点进行分组。图13是FE模块完整的深度架构。

image.png

图13,FE模块完整示意图。FE模块从CNN骨干接收输入,并通过两条路径发送。在第一个路径中,输入通过GAP和FC层,而在第二个路径中,输入通过上采样层和FAP层。最后,两者使用双线性池化层(BLP)[4]进行组合

FAP由三个子部分组成:

  • 局部维数估计块(LDEB):从输入特征片创建一个按点的局部分形维数图。
  • 点分组块(PGB):从LDEB获取输入,根据分形维数图对特征切片进行分类,即生成一系列软隶属度图。
  • GDCB (Global Dimension Calculation Block):接受PGB的输入,计算分形维数

当FE模块在ResNet的最后一层之前使用时,它的有效性得到了提高。

用例

FENet已经产生了一些令人印象深刻的结果,它可以用于纹理识别,也可以用于问题分割,分类,并在数字图像中用于纹理的一般建模。要深入了解FE模块的工作、架构以及计算的分形是如何与ResNet一起使用的,请查看:https://proceedings.neurips.cc/paper/2021/file/c04c19c2c2474dbf5f7ac4372c5b9af1-Paper.pdf

Histogram

引入了直方图层,主要利用直方图捕获局部空间特征的分布。它使用反向传播来估计层的参数。直方图层的合并带来了两个优点,即仔细组合过的特征和通过深度学习放大的纹理特征。

直观的想法

直方图是处理纹理数据的一种成功而熟练的方法。bin中心和宽度的确定对特征提取具有重要意义。这些边界不是由人工决定的,而是通过反向传播来评估的。

为什么它有助于纹理分析?

特性工程是一个广泛的过程,需要大量的人力、计算能力和时间。传统上,人们依靠手工技术,如局部二元模式(LBP)和梯度直方图来区分基于空间分布的特征。后来,深度学习出现了,并开始通过产生更好的结果取代这些技术,但这里的问题是,深度学习需要很多层来提取最好的特征。为了解决这一问题,引入了直方图层,将深度学习和手工特征的优点结合起来并加以利用。

如何使用它进行基于纹理的分类?

通常,在使用直方图时,我们手动输入直方图的特征(bin center和width),但在这个直方图层,我们使用径向基函数(RBF) 作为直方图bin的操作。

直方图参数的精确值是通过反向传播来估计的。如图14所示,直方图的参数将作为局部化的直方图层,它将维护纹理分析的空间内容。
image.png
图14,图像包含了其他纹理,而不仅仅是草。局部直方图可以区分图像中包含纯草(上两个直方图)或混合其他纹理(下两个直方图)的部分

直方图层主要有两部分:

  1. 软bin操作:这里使用_RBF_为直方图提供平滑估计。当容器中心与特征值相等时,RBF的最大值为1,随着特征值远离容器中心,RBF值趋于0。图像的直方图特征图计算如图15所示,其中M x N为输入图像的空间维度,S × T为创建大小为R × c的直方图的滑动窗口。B为bin的总数。
  2. 反向传播:对于更新,bin中心和宽度直方图层通过反向传播使用端到端学习。利用径向基函数(RBF)计算直方图层的梯度,并根据特征图值与bin中心之间的距离更新参数。

image.png

图15,局部直方图操作的可视化。对于一个给定的图像,总共生成了B个大小为R x C的直方图特征图(B为箱子总数)。输入图像的大小是M x N, S x T是滑动窗口的大小

最后在模型中,将输入图像传递到卷积层提取卷积特征,然后将输出图像传递到全局平均池化(GAP),最后传递到直方图层,获取纹理、空间和低阶卷积特征。然后,这些特征被连接在一起,然后被输入一个全连接的层进行分类。直方图层的位置从1到5不等。在这个图16中,来自最后一个卷积层(位置5)的特征映射被传递到直方图层。
image.png
图16,ResNet直方图层。卷积层的输出被传递到GAP层和直方图层。直方图层的位置可以从1到5不等

用例

一旦从直方图和CNN层中提取出图像中的信息,然后将两者一起进行微调。直方图层可以合并到任何人工神经网络中,可以用于任何纹理分析任务,而不是分类任务,如纹理合成、分割和纹理形状。有关直方图层的更多信息,请查看研究:https://arxiv.org/pdf/2001.00215v9.pdf

总结

上述讨论的方法通常用于各种纹理分类任务。在为基于纹理的分类任务实现深度学习模型时,你可以使用这些技术或从这些技术中获得见解,并将它们与你的自定义或预训练的模型一起使用。根据手头的数据集和任务,明智地使用这些技术将提高模型的准确性。

—END—

英文原文:https://medium.com/@trapti.kalra_ibm/how-to-leverage-textural-features-in-deep-learning-architectures-fd817759d5e8

首发:AI公园公众号
作者:ronghuaiyang

推荐阅读

关注图像处理,自然语言处理,机器学习等人工智能领域,请点击关注AI公园专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
欢迎关注微信公众号
AI公园 公众号二维码.jfif
推荐阅读
关注数
8259
内容数
210
关注图像处理,NLP,机器学习等人工智能领域
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息