利用深度学习进行纹理分析以改善计算机视觉
人工智能的一个独特应用领域是帮助验证和评估材料和产品的质量。在IBM,我们开发了创新技术,利用原生移动、专用微传感器技术和AI来提供实时工作的解决方案,利用商用智能手机技术,并提供易出错的目视检查和实验室设备昂贵投资的替代方案。有关更多详细信息,请查看IBM Verifier的产品页面。
在开发用于质量和真实性检测的 AI能力时,产品和材料会以高清或微观级别进行成像;因此,设计能够代表采样图像的局部和全局唯一性的特征变得极为重要。使用从纹理分析方法中得出的特征来丰富基于深度CNN 的模型是一种非常有效的方法,可以实现更好的训练模型。
为了更好地理解纹理分析方法在深度学习中的应用,我们首先了解什么是纹理分析。
目录
1.什么是纹理?
2.不同类型的纹理
3.纹理分析用在什么地方?
4.纹理分析如何用于分类问题以及它为什么重要?
5.提取纹理的不同技术和方法
a.灰度共生矩阵 ( GLCM )
b.局部二值模式 ( LBP )
c.小波
d.分形
e.图像梯度
6.这些技术在深度学习中的应用
7.参考
来源:https://www.istockphoto.com/
一、什么是纹理?
纹理是粗糙度、对比度、方向性、线状性、规则性和粗糙度的量度,有助于我们理解图像中颜色或强度的空间排列。纹理是图像强度局部变化的重复模式(图 1)。
图 1. 纹理图像示例 (a) 原始图像 (b) 纹理的重复图案
纹理由纹理基元或纹理元素组成,有时称为纹素。纹素用于从图像中查找对象的色调和纹理。图像的色调取决于纹素中的像素强度属性,而纹理则解决纹素之间的空间连接问题。
例如,如果纹素之间的色调差异很大,而纹素的尺寸很小,则它类似于细纹理;如果纹素包含许多像素,则它类似于粗纹理。
我们需要了解各种类型的纹理,以便正确分析它们。在开始任何与纹理相关的项目之前,最好先了解您将要处理的纹理类型。
二、不同类型的纹理
纹理的分类很困难,因为纹理的一些属性,例如规律性、随机性、均匀性和扭曲性没有被适当定义,并且纹理类型范围很广而且很复杂。
通常,粗糙、凹凸不平、干燥、光滑、沙质、坚硬、锋利等纹理属于粗糙类别,而细腻、滑溜、潮湿、皱纹、丝滑、柔软、暗淡等纹理属于光滑类别。
广义上,纹理可分为两类,即触觉纹理和视觉纹理。
触觉是指表面的直接有形感觉,即触觉纹理就像真实物体。当触摸或触摸物体时,我们可以感受到物体的纹理。触感可以是光滑、柔软、坚硬、黏糊、粗糙、粘稠、丝滑等。自然纹理的例子包括木材、岩石、玻璃、金属、树叶等,如图2所示。
图 2. 自然纹理示例 [1]
视觉纹理被定义为纹理给人类观察者产生的视觉印象,即它不是真实的纹理,而是人从图像中检查纹理的方式。照片中的物体可能看起来很粗糙,然而,照片的感觉总是平坦而光滑的。
根据随机程度,视觉纹理可以进一步分为规则纹理和随机纹理。
将简单可识别的小尺寸组分以正常方式平铺成立体周期性图案,形成“规则纹理”(图 3),而将随机图案中较难识别的组分平铺成“随机纹理”(图 4)。
图 3. 规则纹理示例 [1]
图 4. 随机纹理示例 [1]
那么,现在最大的问题是,纹理分析对于提高深度学习在计算机视觉任务中的有效性有什么意义。
三、纹理分析用在什么地方?
如今,纹理分析是许多任务的重要组成部分,从医学成像到遥感,并且还用于大型图像数据库中查询内容。
在工业检测中,纹理分析是一种强大的工具,但现有技术无法发挥作用。让我们以木材制造为例,在这种情况下,如果不使用纹理分析,很难检测到裂缝。
纹理检测还用于根据因穿着而导致的外观变化对地毯进行分级。纹理分析用于皮革检查,通过评估颜色、厚度和灰度变化来完成。有缺陷的皮革通常在皮肤上有疤痕或褶皱。
纹理分析的应用范围从纹理分类(如遥感)(图 5)到纹理分割任务(如生物医学成像) (图 6)。它还用于图像合成和模式识别任务,例如从照片中识别绘画。
当图像中的对象根据其纹理属性而不是强度进行分类时,或者当阈值技术无法正确对其进行分类时,在这种情况下纹理分析起着重要作用。
图 5. 使用纹理分析进行遥感。这些纹理模式通过聚类识别,并由遥感领域的专家进行标记
下图(图 6)显示了二级腔静脉(图片下三分之一处的暗区)的超声图像。肝脏的一部分被白色斑点包裹,以便于简单区分,显示出与周围组织相比独特的纹理。
图 6. 使用纹理分析的生物医学成像
如今,质地分析也被用于食品制造业,以了解食品的质量。食品中存在各种质地,例如硬糖、耐嚼的巧克力曲奇、酥脆的饼干、太妃糖、松脆的芹菜、嫩牛排等等。质地分析在这个领域得到了广泛的应用,例如,可以使用质地分析轻松测量食物的口感特性。
它还用于流变学的研究,这是一门研究物质变形和流动的科学,换句话说,研究物体受到力的作用时的反应。
除此之外,纹理分析还可用于测量/评估许多产品的质量,如粘合剂、药品、皮肤/头发护理产品、聚合物等。
到目前为止,我们已经了解了纹理分析的应用范围,下一节让我们看看如何根据纹理对图像进行分类。
四、纹理分析如何用于分类问题以及它为什么重要?
到目前为止,我们已经了解了各种类型的纹理,并看到了纹理分析有用的地方的实际例子。让我们了解如何在分类问题中使用纹理分析,分类器的主要目标是通过为每个图像提供描述符来对纹理图像进行分类。换句话说,
将未知样本分配给预定义的纹理类别称为纹理分类。
在进行纹理分类时,需要考虑图像的模式和纹理内容。基于纹理的分类是基于粗糙度、不规则性、均匀性、平滑度等文本特征进行的。任何图像数据集中的每个类都很可能具有不同的纹理,这使其成为一种独特的属性,可帮助模型更准确地对图像进行分类。
五、提取纹理的不同技术和方法
有多种方法可用于从图像中提取纹理。在本博客中,我们将讨论最常用和最重要的纹理提取方法。
灰度共生矩阵(GLCM) 是纹理分析中常用的基本统计方法。GLCM特征基于二阶统计量,用于从均匀性、同质性等角度洞察像素之间的平均相关程度。
LBP 是一种结合结构和统计方法的方法,可使纹理分析更加高效。LBP 在现实世界中的一个重要特征是它对不同光照条件引起的单调灰度变化具有很强的适应性。它的计算简单,可用于实时设置。
小波(A wavelet) 是一种基于变换的方法,可以捕获局部频率和空间信息。GLCM 和 LBP 关注纹理的空间排列,但纹理的关键元素是尺度,根据心理视觉研究,我们的大脑以多尺度方式处理图像。我们的大脑会进行不同的空间频率分析来识别纹理。基于这个想法,小波关注频率和空间信息。
分形(Fractal) 是衡量图像自相似性和粗糙度的重要指标。它能够表征其他纹理分析方法无法实现的纹理。有多种技术可以测量图像的平滑度、均匀度、平均值和标准差,但分形方法侧重于图像纹理的“粗糙度”,并据此对纹理进行分类。
图像梯度(Image gradient) 是一种检测图像边缘的完美技术,因为当边缘突出显示时,识别纹理会变得更容易。纹理边界用于有效划分自然边界,一旦正确识别了这些边界,就很容易根据这些边缘区分纹理。
这五种技术对不同的纹理数据集都表现出了令人满意的结果。每种技术都强调纹理的一个独特属性。在下面的部分中,我们将研究这些技术的特征构造方法。
1、灰度共生矩阵(GLCM):
GLCM 提供有关图像像素如何相互关联的信息,这种关系有助于我们根据从 GLCM 中提取的多个特征对纹理进行分类。矩阵提供有关具有相似强度的像素位置的信息。可能的强度值集是二维数组§ 的行和列标签。
首先通过指定位移矢量 𝒹 = (dx, dy)并计算位移矢量角度中由 𝒹 分隔的所有像素对来初始化 GLCM P 𝒹 [ i,j] ,这些像素对具有灰度级j和i(其中j是列,i是行)。
通常,GLCM 表示为P 𝒹 [i,j ] = nᵢⱼ,其中nᵢⱼ是图像中距离 𝒹 处的像素值(i,j)出现的次数。共生矩阵P 𝒹 的维度为n*n,其中n是图像中的灰度级数。
GLCM 是根据位移向量中提到的距离和角度计算的。对于像素“x”,我们可以计算 8 个不同方向的 GLCM 值,如图7所示。
图 7. 像素 ‘x’ 的最近邻居 [3]
为了更好地理解,请查看下面的示例(图 8),其中 4x4 图像由 4 个灰度级组成。这里,在图 8中,GLCM 中角度为 0° 的值,其中i =2、j =3 和d =1 为 4。图8顶部的矩阵显示,在我们的图像中有 4 个实例,其中灰度级 3 的像素水平(即 0°)与灰度级 2 的像素分开。
图 8. 由 4 种强度的 4x4 图像构建的共生矩阵示例 [3]
该矩阵可进一步用于数值计算全局文本特征,如相关性、能量、熵、同质性、对比度、突出性和阴影。要进一步了解如何从 GLCM 中提取这些特征,请查看这篇详细讨论 GLCM 的论文。
2、局部二元模式(LBP):
虽然 GLCM 专注于从整个图像中获取信息,但 LBP 更关注局部特征而不是全局特征。由于纹理是图案的重复,因此 LBP 尝试根据这些图案对纹理进行分类。通过将像素与其邻域中的所有像素进行比较来计算纹理的局部表示。
在构建 LBP 之前,我们需要将图像转换为灰度。对于灰度中的每个像素,我们选择中心像素周围大小为r的邻域。通过将相邻像素标记为 0 和 1,确定中心像素的 LBP 值,只要像素的强度等于或大于中心像素,就标记为 1,否则标记为 0(如图9所示,其固定邻域为 3 x 3)。
图 9. 构建 LBP 的第一步 [4]
在计算 LBP 的下一步中,我们从任何相邻的像素开始,然后顺时针或逆时针方向进行,对于数据集中所有图片的所有像素,此顺序必须保持一致。此输出保存在一个 8 位数组中,该数组转换为十进制,如图10所示。加上 8 个周围像素,总共会有 2⁸ = 256 种潜在的 LBP 代码组合。
图 10. 中心像素的 8 位二进制邻域并将其转换为十进制表示[4]
一旦我们对图像的所有像素重复上述方法,我们就得到了 LBP 图像。仅供参考,请参见图 11,其中显示了原始图像(左)的 LBP 表示(右)的示例。
图 11. 原图(左) LBP 变换(右) [5]
使用 LBP 后,纹理被提取出来,这样可以捕捉到纹理的极其精细的细节,并且对纹理进行分类会变得更加简单。您还可以参考 wiki了解有关 LBP 的更多信息。
3、小波(Wavelet):
以前,纹理分析的基本问题是缺乏令人满意的工具来描述不同大小的纹理。多分辨率分析的进步,例如Gabor和小波变换方法 ,有助于解决这一缺陷。小波变换在图像的频域中起作用。您可能想知道图像的频域是什么?
图像有两个域,一个是空间域,另一个是频率域。以像素矩阵表示的图像称为空间域,而频域表示像素值在空间域中变化的速率。
频率只是表示图像中颜色成分的变化率;频率高时颜色变化快,频率低时颜色变化慢。
高频分量对应于图像的边缘,低频对应于平滑区域。小波分析用于将图像中存在的信息分为两个离散分量——近似值和细节。
一旦将小波变换应用于图像,就会产生四个象限(如图12所示)。每个象限代表以下内容:
-
LL(低-低):左上象限使用低通滤波器沿图像的行和列进行滤波。此子块的分辨率为原始图像的一半。
-
HL(高-低)/LH(低-高):右上象限和左下象限沿行和列交替使用高通滤波器和低通滤波器进行滤波。HL子块显示图像的水平边缘,而 LH 子块显示原始图像的垂直边缘。
-
HH(高-高):使用高通滤波器沿图像的行和列对右下象限进行滤波。该子块描绘了原始图像对角线方向的边缘。
对于半分辨率的粗糙图像版本,应用小波变换。此操作以递归方式进行,以便原始图像的相邻像素逐渐去相关。
图 12 [6]
参考图13来了解小波变换的不同级别。
图 13. 经过几级小波变换后得到的多分辨率方案[6]
上述图像分解后的表示方法称为多尺度表示和多分辨率方案。小波变换(小波图像分解)后的输出很容易解释。图像的每个子部分都为我们提供了有关方向和特定尺度的信息,这些信息很容易分离。小波变换后,子图像保留了空间信息。
4、分形(Fractal):
图像特征,例如纹理粗糙度、平滑度、坚固度和面积,都可以使用分形维数来识别。自相似且不规则的几何基元称为分形。
在欧几里得n空间中,如果闭集X是其自身的Nᵣ 个不同不相交副本的并集,并且 Nᵣ 中的每个元素都与X相同,但按比率 r 缩小,则称其为自相似。我们可以使用以下表达式为X写出分形维数D :
使用计盒法计算分形维数的算法如下:
目标:分形维数(FD)计算。
输入:二维图像I。
输出:FD、D of I。
1. 读取二维输入图像 I
2. [P, Q] = SIZE[I]
3. 如果 P>Q 则 r = p
否则 r = q
4. 使用公式 1 计算分形维数
5. 停止
所有图像的分形维数均使用盒计数算法计算。图 14中的 Lena、鸟和大米图像仅用于说明目的。下表 1列出了分形维数的所得结果。
图 14. 原始图片:(a) Lena (b) bird © rice; 40% 损坏的图片:(d) Lena (e) bird (f) rice [7]
表 1. 使用盒子计数算法的分形维数
对于损坏的 Lena、鸟类和水稻图像,计算了不同噪声水平下的分形维数。表 2给出了结果。
表 2.不同噪声水平的Lena、鸟类和大米损坏图片的分形维数
从表 2中,我们可以了解到图像的分形维数将与粗糙度成比例增加。图像的粗糙度与噪声密度成正比,在这种情况下,由于椒盐噪声的增加,粗糙度有所增加。
从以上所有结果我们可以得出结论,分形维数是比较图像粗糙度的合适度量。
由于粗糙度在纹理分析中起着重要作用,因此分形是基于粗糙度对纹理进行分类的良好选择。有关基于分形维数的纹理分析的进一步了解,请参阅本文。
5、图像梯度(Image gradient):
图像梯度是许多计算机视觉任务的基本构成要素之一,也是纹理分类的重要技术。图像梯度的主要应用是边缘检测。当在不合适的光线下捕捉纹理时,边缘检测有助于找到纹理的边界。
由于图像梯度是图像强度的方向性变化,为了计算图像的梯度,我们需要幅度和方向,即梯度幅度(衡量图像强度变化的强度)和梯度方向(衡量图像强度变化指向的方向)。
为了测量幅度,我们计算垂直变化(Gᵧ)和水平变化(Gₓ),
现在可以使用以下公式计算梯度幅度(G)和梯度方向(θ ),
Sobel方法是一种用于查找图像梯度的技术。在该技术中,所有图像的垂直和水平核都是预定义的,它们用于计算图像梯度(其结果如图15所示)。
图 15. 左图:原始 Lena 图像。右图:Sobel 实现的图像梯度 [9]
现在,此图像渐变已突出显示所有边缘,类似地,图像渐变可识别所有图像的边缘,这将确保不同纹理区域得到有效分割。有关图像渐变的更多信息,请参阅此网站。
六、这些技术在深度学习中的应用
到目前为止,我们已经了解了各种纹理提取特征。让我们看看如何将这些技术与深度学习相结合,以便我们更接近使用纹理分类解决实际用例。
纹理分类可以使用卷积神经网络(CNN)来实现。图 16以图形方式描绘了一个基本的 CNN。CNN具有感知模式的卓越能力,很可能是最熟练的深度学习方法。唯一的缺点是,找到不同超参数的理想值仍然是一个重大挑战。
图 16.基本 CNN 模型 [8]
由于纹理分类是一项复杂的任务,基本的 CNN 模型可能不适用于高度基于纹理的数据集。因此,如图17所示,我们在进行实验时使用了一种稍微先进的架构。该架构是 C卷积2-D 层、池化(最大、最小或平均)和批处理规范化层的组合,使模型能够有效地训练。我们使用 2 个Conv 2-d 层,以便以更好的方式进行特征提取。我们也可以拥有更多层,具体取决于数据集的复杂程度。
图 17. 具有一个输入的纹理分类 CNN 模型
我们还尝试了另一种方法,如图18所示,我们将输入图像与纹理(转换后的)图像相结合,并使用共享权重机制将它们传递到Conv层。对于这种方法,我们从这篇论文 [11] 中获得了灵感,他们使用了一种组合多个输入而不是传递单个输入的方法。通过使用这种方法,可以更轻松地从转换后的图像中提取特征,因为它们具有预先计算的特征值,并让网络了解图像代表什么。GLCM 矩阵、LBP 矩阵、图像梯度矩阵、两个转换后的输入的组合或三者的组合都可以作为输入的一部分与原始图像一起传递。
图 18. 具有三个输入的纹理分类 CNN 模型
在图 18中,一个输入用于原始图像,后面跟着一个lambda层用于第二个输入,第三个输入用于转换后的图像。旁边是Conv层,输入大小为 128128,输出大小为 126126。Conv 层的输出被输入到三个Max-Pooling层,每个输入一个Max-Pooling层,输出大小为 6363。遵循相同的过程,直到使用Add层连接所有三个输出并产生 3030 大小的输出。Flatten层用于 115200 个输出,然后是Dense层,接着是Batch-normalization和Dropout 层,以相同的顺序添加了 512 个神经元两次。最后,添加一个具有 11 个输出神经元的Dense层。
我们在基于纹理的KTH [12]数据集上进行了纹理分类任务的实验,该数据集包含 11 种材料的图像。
表 3. 各种技术的结果比较
图 19. 使用表 3 中的条形图可视化结果
从表 3和图19 中,我们可以看到,当更多相关(纹理丰富)信息作为输入传递到深度学习模型时,准确率会显著提高。这些技术涉及两个以上的特征作为输入,如 GLCM 矩阵、LBP 矩阵、小波和分形维数;以及原始输入图像。
这主要是因为模型也从纹理特征中学习;展示了监督预训练和几个转换特征矩阵的直接相关性以提高准确性。
通常,信息丰富的转换输入代表相关特征,从而带来更好的准确性。然而,这种关系也有一些例外——例如,当原始输入与 GLCM 结合时,在特定情况下准确率会略有下降(图 19)。以上结果基于 KTH 数据集,针对自定义架构(图 18 )。上述实验的代码可以在Github上找到。
在这篇博文中,我们详细解释了主要类型的纹理特征及其分析,并证明了提供更多信息数据(以纹理特征的形式)的方法有助于提高 CNN 模型的性能。我们将在接下来的博文中进一步探讨这一概念。
访问本系列的下一篇博客《为什么传统 CNN 可能无法进行基于纹理的分类?》
七、参考文献
-
auckland.ac.nz
-
Biomedical Image Analysis
-
An efficient implementation of GLCM algorithm in FPGA (archives-ouvertes.fr)
-
Local Binary Patterns with Python & OpenCV — PyImageSearch
-
GitHub — arsho/local_binary_patterns: Local Binary Patterns implementation using Python3 and OpenCV
-
https://www.semanticscholar.org/paper/Chapter-2-Wavelet-transforms-on-images/3dea7e34a2cf7499fba1d118043685440cd4279d
-
https://www.sciencedirect.com/science/article/pii/S1877705812022618
-
Convolutional Neural Network Algorithm For Image Classification — canvas-valley
-
https://www.researchgate.net/figure/Comparison-of-the-gradient-processing-of-the-standard-Lenna-image-between-our_fig2_337624089
-
www.istockphoto.com
-
https://arxiv.org/ftp/arxiv/papers/2006/2006.04570.pdf
-
https://www.csc.kth.se/cvap/databases/kth-tips/kth-tips2.pdf
以上内容整理来自作者 Trapti Kalra的medium页《Texture Analysis with Deep Learning for improved Computer Vision》