Texture Analysis

Texture Analysis

一、通过深度学习进行纹理分析以改善

1. What is texture?

纹理是粗糙度、对比度、方向性、线条相似度、规律性和粗糙度的度量,有助于我们理解图像中颜色或强度的空间排列。纹理是图像强度局部变化的重复图案(图 1)。

The texture consists of texture primitives or texture elements, sometimes called texels. Texels are used to find the tone and texture of an object from an image. The tone of an image depends on the pixel intensity properties in the texel, while texture addresses the spatial connection between texels.

2. Different types of texture

通常,粗糙、凹凸、干燥、光泽、沙质、坚硬、锐利等纹理属于粗糙类别,而粗糙、凹凸、干燥、光泽、沙质、坚硬、锐利属于光滑类别。

广义上,纹理分为两类,即触觉纹理和视觉纹理

触觉是指表面的直接有形感觉,即触觉纹理就像真实的物体。当我们感觉或触摸一个物体时,我们可以感觉到它的纹理。触感可以是光滑的、柔软的、坚硬的、粘稠的、粗糙的、粘稠的、丝滑的等。天然纹理的例子是木材、岩石、玻璃、金属、树叶等

根据随机程度,视觉纹理可以进一步分为规则纹理和随机纹理。

规则:

img

随机:

img

3. 纹理分析用在哪里?

工业检测中,纹理分析是当前技术无法发挥作用的强大工具。让我们以木材制造为例,在这种情况下,不使用纹理分析很难检测到裂缝。

纹理检测还用于根据磨损引起的外观变化对地毯进行分级。纹理分析用于皮革检查,通过评估颜色、厚度和灰度变化来完成。有缺陷的部件往往在皮肤上有疤痕或褶皱。

**当图像中的对象根据其纹理属性(##定性)而不是强度(##定量)进行分类时,或者当阈值技术无法正确对它们进行分类时,在这种情况下,纹理分析将发挥重要作用。 **

4. 如何在分类问题中使用纹理分析以及为什么它很重要?

到目前为止,我们已经了解了不同类型的纹理,并且看到了纹理分析有用的地方的现实示例。让我们了解如何在分类问题中使用它,其中

1. 分类器的主要目标是通过为每个图像提供描述符来对纹理图像进行分类。

换句话说,

2. 将未知样本分配给预定义的纹理类称为纹理分类。

在进行纹理分类时,会考虑图像的图案和纹理内容。基于纹理的分类是根据粗糙度、不规则性、均匀性、平滑度等文本特征来完成的。任何图像数据集中的每个类很可能具有不同的纹理,这使其成为帮助模型更准确地对图像进行分类的独特属性。

5. 提取纹理的不同技术和方法

GLCM(灰度共生矩阵)、LBP、小波变换、分形、图像梯度
  1. **GLCM(灰度共生矩阵)**是一种常见且基本的纹理分析统计方法。GLCM特征基于二阶统计,用于从均匀性、同质性等角度洞察像素之间的平均相关程度。
  2. LBP 是一种结合了结构方法和统计方法的方法,可以使纹理分析更加高效。LBP在现实世界中的一个重要特征是它对不同光照条件引起的单调灰度变化的鲁棒性。其简单的计算允许做到实时使用。
  3. 小波是一种基于变换的方法,可捕获局部频率和空间信息。
  4. 分形是图像中自相似性和粗糙度的重要度量。它能够表征其他纹理分析方法无法实现的纹理。有多种技术可以测量图像的平滑度、均匀度、平均值和标准差,但分形方法关注图像纹理的“粗糙度”,并相应地对纹理进行分类。
  5. 图像梯度是检测图像边缘的完美技术,因为当边缘突出显示时,识别纹理变得更容易。纹理边界用于有效划分自然边界,一旦正确识别了这些边界,就可以很容易地根据这些边缘区分纹理。

(原理:https://medium.com/@trapti.kalra_ibm/texture-analysis-with-deep-learning-for-improved-computer-vision-aa627c8bb133)

6.这些技术在深度学习中的运用

纹理分类可以使用卷积神经网络(CNN)来实现。图 16形象地描绘了一个基本的 CNN。CNN具有感知模式的非凡能力,并且很可能是最熟练的深度学习方法。唯一的缺点是找到不同超参数的理想值仍然是一个重大挑战。

1.只把纹理层输入CNN

img

由于纹理分类是一项复杂的任务,因此基本的 CNN 模型可能不适用于高度基于纹理的数据集。因此,如图17所示,我们在进行实验时使用了稍微先进的架构。该架构是卷积二维层、池化(最大值、最小值或平均值)和批量归一化层的组合,使模型能够有效地训练。我们利用 2 个Conv 2-d 层,以便以更好的方式完成特征提取。根据数据集的复杂性,我们也可以有更多的层。

img

图 17. 具有一个输入的纹理分类 CNN 模型(Input->纹理输入层)

2.纹理层结合图像输入CNN

我们还尝试了另一种方法,如图18所示,其中我们将输入图像与纹理(转换后)图像结合起来,并使用共享权重机制将它们传递到*Conv层。*对于这种方法,我们从此文[11]中获得了灵感 ,其中他们使用了组合多个输入而不是传递单个输入的方法。通过使用这种方法,可以更轻松地从转换后的图像中提取特征,因为它们具有预先计算的特征值,并使网络了解图像所代表的内容。GLCM 矩阵、LBP 矩阵、图像梯度矩阵或两个变换后的输入的组合,或所有三者的组合可以与原始图像一起作为输入的一部分传递。

img

img

img从表 3和图19 中,我们可以看到,当更多相关(纹理丰富)信息作为深度学习模型的输入传递时,准确度显着提高。这些技术涉及两个以上的特征作为输入,例如 GLCM 矩阵、LBP 矩阵、小波和分形维数;以及原始输入图像。

一般来说,信息丰富的转换输入代表相关特征,从而带来更好的准确性。然而,这种关系也有一些例外,例如,当原始输入与 GLCM 相结合时,在特定情况下精度会略有下降(图 19)。上述结果基于自定义架构的 KTH 数据集(图 18)。上述实验的代码可以在Github上找到。

二、为什么传统的 CNN 可能无法进行基于纹理的分类?

1.Introduction

1.几种纹理baseline数据集

训练的主干模型只需使用特定于案例的数据集进行微调,以调整权重来解决特定任务。经过图像分类训练的预训练模型也可用于纹理分类任务。为了检查现有的基于 CNN 的传统纹理分类模型的效率,使用一些公共的基于纹理的数据集来对其性能进行基准测试。据观察,传统的 CNN 架构(如图 5 所示)难以产生更好的结果,并且在应用于纹理分类任务时效果不佳。

为纹理分类任务构建了模型,并在基于纹理的基准数据集(例如 DTD 、FMDKTH )上测试了模型的有效性 。

DTD:它是一个基于纹理的图像数据集,由5640 张图像组成,47 个类别,每个类别有120 张图像。

img

KTH:KTH 通常称为 KTH-TIPS(不同照明、姿势和比例下的纹理)图像数据库3195,11 个img类别的总样本量。

FMD:该数据库的构建目的是捕获常见材料(例如玻璃、塑料等)的一系列真实世界外观。该数据库中的每张图像(总共10 个类别,每个类别100 张图像)

2.常用预训练方法在纹理分类中效果不佳

在处理任何类型的图像分类问题时,微调和使用预训练模型是一种明智的解决方案。

  1. 特征提取——*使用预先训练的模型作为特征提取机制。*我们可以删除输出层(给出 1000 个类中每一类的概率的层),然后使用整个网络作为新数据集的固定特征提取器。
  2. 训练一些层,同时冻结其他层-预训练模型可用于部分训练我们的模型,其中我们保持初始层的权重冻结并重新训练较高层的权重。根据一些实验,我们可以看到需要冻结多少层以及需要训练多少层。
  3. **使用预训练模型的架构——***我们可以从模型的架构中获取帮助,并使用它来随机初始化模型的权重。*然后我们可以根据我们的数据集和任务来训练模型,这样我们就拥有了一个良好的架构,经过训练后可以为我们的任务获取良好的结果。

此外,这些传统/预训练的 CNN 模型也能产生良好的结果,但是,这些架构在对基于纹理的数据集进行分类时表现不佳。

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

为了采用为图像分类而开发的基于 CNN 的模型进行纹理分类,域转移是通过使用从网络 CNN 层的输出中提取的特征来完成的。在使用预训练的 CNN 进行基于纹理的分类时,我们面临以下三个主要缺点。

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

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

  3. 预训练的 CNN 的深层可能非常特定于领域,并且可能对纹理分类没有多大用处 [9, 11]。

众所周知,任何图像的纹理都是通过使用其局部结构和局部像素分布来定义的。要分析任何图像的纹理特征,必须研究其基于局部的特征并将它们传递到完全连接的层。然而,传统 CNN 无法将基于局部的特征传递到全连接层,因为传统 CNN 架构使用复杂特征与全局特征(如图 5 所示),而不是捕获模式的局部特征。这就是传统 CNN 架构在基于纹理的数据集上表现不佳的原因。

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

img

三、如何在深度学习架构中利用纹理特征

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

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

img

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

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

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

在典型的 CNN 架构中,没有规定的方法来强制传递到全连接层的激活中文本特征的存在。假设,我们必须根据某些图像的纹理类型对其进行分类。如果以某种方式,我们可以强制模型考虑图像中的纹理特征,则模型的性能可以大幅提高。

在最近的研究中,很少有纹理特征提取技术被探索过,这些技术可以以“专用”可微网络层的形式与 CNN 架构集成。当纹理提取层与传统的 CNN 架构集成时,主要优点是与全局特征一起,局部特征被传递到全连接层,这有助于更显着地估计类边界。

每种纹理提取技术能够提取的纹理特征类型都不同,因此没有一种“通用”纹理提取方法。由于纹理是任何图像的局部属性,因此这些技术的工作原理是突出给定图像的局部特征。

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

3.深入探讨纹理特征提取技术以及在预训练层激活输出上的应用方法

深十

DeepTen 网络是一种使用损失函数在端到端学习框架上学习视觉词汇的技术。在卷积层之上使用编码层。

DeepTen 的独特之处在于字典、特征、分类器和编码表示都是同时学习的。这里字典指的是输入数据的稀疏表示。

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

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

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

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

  • 鲁棒残差编码器被推广,它描述了特征分布。

  • 作为卷积层之上的池化层,它增加了深度学习模型的灵活性。

  • 它使模型适合传输预先训练的特征,因为它学习携带特定领域信息的固有字典。img

  • DEPNet

  • DSRNet

  • CLASSNet

  • FENet

  • Histogram

四、总结

  1. 使用提取到的纹理结合原图输入CNN通常要比单一输入效果更好。
  2. CNN结构通常能捕获复杂特征与全局特征而难以捕捉局部相关的纹理特征;因此将理提取特征技术与现有的CNN结合时,纹理分类任务的结果可以得到改善。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值