利用深度学习进行纹理分析以改善计算机视觉

利用深度学习进行纹理分析以改善计算机视觉

人工智能的一个独特应用领域是帮助验证和评估材料和产品的质量。在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) 纹理的重复图案
图 1. 纹理图像示例 (a) 原始图像 (b) 纹理的重复图案

纹理由纹理基元或纹理元素组成,有时称为纹素。纹素用于从图像中查找对象的色调和纹理。图像的色调取决于纹素中的像素强度属性,而纹理则解决纹素之间的空间连接问题。

例如,如果纹素之间的色调差异很大,而纹素的尺寸很小,则它类似于细纹理;如果纹素包含许多像素,则它类似于粗纹理。

我们需要了解各种类型的纹理,以便正确分析它们。在开始任何与纹理相关的项目之前,最好先了解您将要处理的纹理类型。

二、不同类型的纹理

纹理的分类很困难,因为纹理的一些属性,例如规律性、随机​​性、均匀性和扭曲性没有被适当定义,并且纹理类型范围很广而且很复杂。

通常,粗糙、凹凸不平、干燥、光滑、沙质、坚硬、锋利等纹理属于粗糙类别,而细腻、滑溜、潮湿、皱纹、丝滑、柔软、暗淡等纹理属于光滑类别。

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

触觉是指表面的直接有形感觉,即触觉纹理就像真实物体。当触摸或触摸物体时,我们可以感受到物体的纹理。触感可以是光滑、柔软、坚硬、黏糊、粗糙、粘稠、丝滑等。自然纹理的例子包括木材、岩石、玻璃、金属、树叶等,如图2所示。
图 2. 自然纹理示例 [1]
图 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 可能无法进行基于纹理的分类?》

七、参考文献

  1. auckland.ac.nz

  2. Biomedical Image Analysis

  3. An efficient implementation of GLCM algorithm in FPGA (archives-ouvertes.fr)

  4. Local Binary Patterns with Python & OpenCV — PyImageSearch

  5. GitHub — arsho/local_binary_patterns: Local Binary Patterns implementation using Python3 and OpenCV

  6. https://www.semanticscholar.org/paper/Chapter-2-Wavelet-transforms-on-images/3dea7e34a2cf7499fba1d118043685440cd4279d

  7. https://www.sciencedirect.com/science/article/pii/S1877705812022618

  8. Convolutional Neural Network Algorithm For Image Classification — canvas-valley

  9. https://www.researchgate.net/figure/Comparison-of-the-gradient-processing-of-the-standard-Lenna-image-between-our_fig2_337624089

  10. www.istockphoto.com

  11. https://arxiv.org/ftp/arxiv/papers/2006/2006.04570.pdf

  12. https://www.csc.kth.se/cvap/databases/kth-tips/kth-tips2.pdf

以上内容整理来自作者 Trapti Kalra的medium页《Texture Analysis with Deep Learning for improved Computer Vision》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/721017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

.NET周刊【6月第3期 2024-06-18】

国内文章 记一次 .NET某游戏币自助机后端 内存暴涨分析 https://www.cnblogs.com/huangxincheng/p/18243233 文章讨论了程序中非托管内存暴涨的问题。作者描述了友人发现内存问题并请他帮助分析的背景,利用WinDbg工具分析Linux平台上的内存泄漏情况。文章介绍了如…

Jenkins教程-3-github自动化测试任务构建

上一小节我们学习了Jenkins在windows和mac系统上安装搭建环境的方法,本小节我们讲解一下Jenkins构建github自动化测试任务的方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和github插件 点击进入Jenkins插件…

2.什么是计算机程序

什么是计算机程序? 计算机程序是为了告诉计算机"做某件事或解决某个问题"而用"计算机语言编写的命令集合(语句) 只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作,计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成 现实生活中你如…

网络安全 - DDoS 攻击原理 + 实验

DDoS 攻击 什么是 DDoS 进攻 D D o S \color{cyan}{DDoS} DDoS(Distributed Denial of Service,分布式拒绝服务)攻击是一种通过多个计算机系统同时向目标系统发送大量请求,消耗其资源,使其无法正常服务的攻击方式。DD…

经验分享,在线文本比较工具

这里分享一个在线文本比较工具,打开网页即用,很方便 网址: https://www.jq22.com/textDifference 截图:

用python实现多文件多文本替换功能

用python实现多文件多文本替换功能 今天修改单位项目代码时由于改变了一个数据结构名称,结果有几十个文件都要修改,一个个改实在太麻烦,又没有搜到比较靠谱的工具软件,于是干脆用python手撸了一个小工具,发现python在…

设备档案包括哪些内容

设备档案通常包括以下内容和要求: 1. 设备基本信息:包括设备名称、型号、规格、生产厂商、出厂日期、购买日期等。 2. 设备安装信息:包括设备的安装位置、安装日期、安装人员等。 3. 设备维护信息:包括设备的维护保养记录&#xf…

关于办公软件的使用

第一部分: 常用函数的使用 在使用的地方,输入SUM(B2:F2)回车 第二部分: 自定义函数的使用 1、打开 宏编辑 2、 自定义函数方法 3、自定义函数的使用和常用函数一样: 在使用的地方,输入计算面积(A3,B3)…

python学习笔记-07

python内置函数 内置函数就是python自带的函数,不需要我们再去定义的,如print等直接使用即可,内置函数官方文档:官链。 1.数学运算 #数学运算: print(------abs()是绝对值函数------) a-1.1 print({}的绝对值是{}.fo…

c语言---循环 、判断基础知识详解

if语句 else离最近的if语句结合。 if语句题目 //1. 判断一个数是否为奇数 //2. 输出1 - 100之间的奇数 #include <stdio.h> int main() {int n 0;scanf("%d", &n);if (n % 2){printf("奇数\n");}else{printf("不是奇数\n"…

视频太长了,想要剪切掉一节怎么操作?

如果你想为你的视频制作一个具有一定客观性的短视频&#xff0c;并在一些平台上发布&#xff0c;那么剪辑视频片段是不可避免的。通过剪辑视频片段的操作&#xff0c;提出视频中多余的视频内容&#xff0c;将自己需要的内容单独提取出来。但问题是如何操作它。对于新手来说&…

docker部署dm数据库

官方文档参考 官网地址&#xff1a;https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html 下载镜像地址 docker部署 1、加载镜像 docker load -i dm8_20240613_x86_rh6_64_rq_ent_8.1.3.140_pack5.tar使用docker images&#xff0c;查看镜像和镜像标签…

云原生化有什么特点?

云原生化&#xff0c;作为一种先进的构建和管理应用程序的方式&#xff0c;不仅代表着技术的革新&#xff0c;更是云计算时代下的必然产物。其核心目标在于充分发掘并发挥云计算平台的各项优势&#xff0c;使应用程序在性能、弹性、可靠性和安全性等方面达到前所未有的高度。 它…

Android 配置蓝牙遥控器键值

文章目录 篇头一、规格书二、红外按键配置三、蓝牙按键配置3.1 查看设备号3.1.1 方式一&#xff1a;dumpsys input3.1.2 方式二&#xff1a; cat /proc/bus/input/devices 3.2 配置kl文件3.2.1 方案商原始配置3.2.2 Generic.kl 文件3.2.3 重映射蓝牙按键3.2.4 完成 Vendor\_568…

github如何删除仓库?

之前练习Git上传的时候&#xff0c;在Github创建的测试项目已经不需要了&#xff0c;所以要如何删除&#xff1f; 首先进入Github主页&#xff0c;可以直接点击左侧1处的仓库&#xff0c;也可以点击2处的头像&#xff0c;再选择进入那个仓库。 我选择删除最后一个FlashAndShan…

通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践

Qwen2&#xff08;通义千问2&#xff09;是阿里云最近推出的开源大型语言模型系列&#xff0c;相比2月推出的Qwen1.5&#xff0c;Qwen2实现了整体性能的代际飞跃&#xff0c;大幅提升了代码、数学、推理、指令遵循、多语言理解等能力。其中&#xff0c;Qwen2系列包含5个尺寸的预…

SpringBoot配置第三方专业缓存框架j2cache

j2cache的使用 这不是一个缓存 这是一个缓存框架 J2Cache, 也称为Java Cache或JSR-107&#xff0c;是一个用于缓存管理的标准API&#xff0c;它允许开发者在Java应用程序中实现分布式、基于内存的缓存。J2Cache主要通过javax.cache.Cache接口提供功能&#xff0c;用于存储和…

【漏洞复现】CRMEB开源电商系统 /api/products SQL注入漏洞(CVE-2024-36837)

0x01 产品简介 CRMEB开源电商系统是一款由西安众邦网络科技有限公司打造的全栈式电商解决方案&#xff0c;旨在为开发者和商家提供高性能、智能化的电商平台服务。该系统集成了CRM(客户关系管理)、ERP(企业资源规划)和EB(电子商务)的功能&#xff0c;通过深度结合这些功能&…

图神经网络入门(1)-networkx

简介 NetworkX是一个Python语言的图论建模工具&#xff0c;用于创建、操作复杂网络结构&#xff08;如图、有向图等&#xff09;。它提供了许多用于分析网络、生成随机网络、以及可视化网络的函数和工具。用户可以利用NetworkX来研究复杂网络的拓扑结构、节点间的关系以及路径查…

力扣每日一题 6/18 字符串/模拟

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2288.价格减免 【中等】 题目&#xff1a; 句子 是由若干个单词组成的字符…