论文解读:Matching Feature Sets for Few-Shot Image Classification

文章汇总

动机

将表示分解为独立的组件应该允许捕获图像的几个不同方面,然后可以有效地使用这些方面来表示新类别的图像。

解决办法

卷积主干连接多尺度特征映射。在网络中以各种尺度嵌入浅层自关注模块(称为“映射器”)。

流程解读

image.png
(a)图中右边的灰色小正方形(输入为 z b z_b zb,输出为 h m h_m hm,本文作者把他称为了Mapper)的结构为(b)图。
先解释一下为什么(a)图每多一层,Mapper的个数就多一个?
个人的理解应该是,可以结合下面图(b) Set matching with sum-min来看,每一层都会产生一个新的mapper,所以上面(a)图每一层的mapper个数我认为是"积累"的mapper个数,而不是每层产生的mapper个数。
额,理解错了,在实验部分作者才给出了说明,是作者在第一层嵌入1个mapper,第二层嵌入了2个mapper,第三层嵌入了3个mapper,第四层嵌入了3个mapper。
(b)图 Mapper我觉得是很简单的transformer,公式如下:
image.png
image.png
image.png
作者提出了三个不同的集合到集合度量 d s e t ( x q , S n ) d_{set}(x_q,S^n) dset(xq,Sn),它测量多个特征集之间的距离,其中 x q x_q xq是查询, S n S^n Sn是类 n n n的支持集。
h m ( x ) = g m ( z b m ∣ θ m g ) h_m(x)= g_m(z_{b_m}|\theta^g_m) hm(x)=gm(zbmθmg)来表示映射器 m m m提取的特征。此外,我们还定义 h ˉ m = 1 ∣ S ∣ ∑ x ∈ S h m ( x ) \bar h_m=\frac{1}{|S|}\sum_{x\in S}{h_m(x)} hˉm=S1xShm(x)作为映射器 m m m(总共 M M M个映射器)在支持集 S S S上提取的特征的质心。
一个查询集图片 x q x_q xq与一个支持集类别的图片(1个或5个) S n S^n Sn距离计算如公式(3)、(4)、(5)
距离计算个数有三种,如下所示公式(3)、(4)、(5)。这些公式都有一个好处,就是在1-shot的情况下,平常的方法支持集都面临着无数据可用的情况,所谓的该类别的"质心"缺少"代表性"(毕竟在1-shot情况下,一个类别就只有一张,常规方法通过一张图片来代表一个类别的质心十分困难,然而本文通过多个Mapper解决了1-shot下这种数据缺乏的问题)。
image.png
image.png
image.png
公式5的流程图为上面的图(b) Set matching with sum-min。

摘要

在图像分类中,通常的做法是训练深度网络提取每个输入图像的单个特征向量。少样本分类方法也大多遵循这一趋势。在这项工作中,我们偏离了这个既定的方向,而是提出为每张图像提取特征向量集。我们认为,基于集合的表示本质上是从基类构建更丰富的图像表示,随后可以更好地转移到少样本分类。为了做到这一点,我们建议调整现有的特征提取器,而不是从图像中产生特征向量集。我们的方法,称为SetFeat,在现有的编码器架构中嵌入了浅层的自关注机制。注意力模块是轻量级的,因此我们的方法产生的编码器具有与其原始版本大致相同数量的参数。
在训练和推理过程中,使用集合到集合的匹配度量来进行图像分类。我们提出的架构和度量的有效性通过在标准的少样本数据集(即miniImageNet, tieredImageNet和cub)上的1-shot和5-shot场景的彻底实验来证明。除了一种情况外,我们的方法都比最先进的方法要好。

1. 介绍

少样本图像分类的任务是将从一组“基本”类别中获得的知识(假设有大量可用)转移到另一组“新”类别中,而我们只给出很少的例子。为了解决这个问题,一种流行的策略是使用深度特征提取器,它学习将输入图像转换为具有判别性和可转移到新类的特征向量。在这种情况下,通常的做法是训练一个模型来提取给定输入的单个特征向量,并从中做出分类决策。
在本文中,我们通过提出将图像表示为特征向量集而改变了这一既定策略。有了这个,我们的目标是学习一个更丰富的特征空间,既更具判别性,也更容易转移到新的领域,通过允许网络关注图像的不同特征和不同的尺度。激发这种方法的直觉是,将表示分解为独立的组件应该允许捕获图像的几个不同方面,然后可以有效地使用这些方面来表示新类别的图像
为此,我们从特征金字塔网络[34]中获得灵感,该网络提出从卷积主干连接多尺度特征映射。然而,相比之下,我们不只是对特征本身进行轮询,而是在网络中以各种尺度嵌入浅层自关注模块(称为“映射器”)。因此,这个适应性网络通过一组基于注意的潜在表征来学习表示图像。网络首先通过在每个映射器上注入分类损失信号进行预训练。然后,在元训练阶段对其进行微调,元训练阶段通过计算查询(测试)和一组支持(训练)样本之间的距离来执行分类,方法类似于Prototypical Networks[50]。这里,主要的区别在于样本之间的距离是使用集对集度量来计算的,而不是传统的距离函数。为此,我们提出并试验了三个集对集度量。
本文提出了以下贡献。
首先,提出了基于集合推理的思想,并对从图像中提取的特征向量进行基于集合的推理。结果表明,在不增加网络参数总数的情况下,集合表示可以提高少样本图像分类的性能。
其次,它提出了一种直接的方法来调整现有的骨干,使其提取特征集而不是单个特征,并对它们进行处理以实现决策。为此,它提出在卷积块之间嵌入简单的自关注模块,并采用了三种流行的主干,即Conv4-64、Conv4-256和ResNet12。它还提出了用于评估查询和支持集之间差异的集到集度量。
第三,在miniImageNet、tieredImageNet和CUB三个小样本数据集上进行了大量实验。在几乎所有情况下,我们的方法都优于最先进的方法。值得注意的是,我们的方法在miniImageNet、tieredImageNet和CUB的1-shot基线上分别获得了1.83%、1.42%和1.83%的准确率。

2. 相关工作

我们的工作属于归纳的少样本图像分类领域[17,43,50,59],而不像利用整个新集合的结构信息的转导方法[6,12,28,73]。以下内容涵盖了少样本学习研究领域中最相关的作品,以及其他领域。

训练框架

到目前为止,主要探索了两种主要的训练框架,即元学习或标准迁移学习。一方面,元学习[17,43,50,59],也被称为情景训练,反复采样基类的小子集来训练网络,从而在训练过程中模拟少量的“情节”。例如,一些方法(如[4,17,69])旨在训练模型通过少量梯度更新对新类进行分类。另一方面,标准的迁移学习方法[1,8,22,41,55]通常依赖于基于度量(如基于边际)标准的通用批处理训练。最近,一些研究[66,68,74]表明,结合标准迁移学习,然后进行第二次元训练阶段可以提供良好的性能。我们在本文中采用了类似的两阶段训练程序。

度量方法

基于度量的方法[5、20、29、32、33、40、45、50、53、56、59、63、74、77]旨在改进距离的计算方式,以获得更好的训练和推理性能。在这方面,我们的工作与ProtoNet[50]有关,因为它也试图减少查询与相应类的一组支持示例的质心之间的距离,而不同的是,它提出使用集合到集合的距离度量来计算几个特征向量上的距离。
其他高度相关的工作包括FEAT[68]、CTX[13]、TapNet[70]和ConstellationNet[67],它们在计算查询与支持集原型之间的距离之前,对剧集应用关注嵌入自适应函数。与它们不同的是,我们的方法在给定查询和支持集的情况下提取一组特征向量,在这些特征向量上应用集合到集合的度量来计算距离

额外数据

依赖额外数据[10,11,19,21,23,25,36,37,44,47,61,62,75,76,78]是构建良好泛化模型的另一种策略。增强的数据可以以幻觉的形式使用数据生成器函数[25,61],在半监督[44,71]或自监督[21,51]框架下使用未标记的数据,或者将新类与基础数据对齐[1]。相反,我们的方法不需要基类之外的任何其他数据。

Vision transformers

我们的方法采用了受[58]中提出的多头注意机制启发的浅注意力映射器,并由Dosovitskiy等人[14]改编为图像。与这些作品相比,我们的特征映射器是独立的,是浅的(因此是轻量级的),不是由fc层统一的,并且可以扩展到卷积,如[24,64]。我们还在网络中使用了几个不同深度/尺度的独立映射器。

特性集

特征集在计算机视觉领域的研究由来已久[27,30,42]。在最近的深度学习文献中,我们的方法类似于FPN [34], FPN提取多尺度特征用于目标检测,而深度集[72]提出了在输入集上操作的排列不变网络。相比之下,我们的工作是计算特征集来处理少量图像分类。从少样本镜头的角度来看,我们的工作与[28]的转导方法有关,[28]使用未标记的查询集来增强支持集,[74]使用Earth Mover 's Distance在具有通用数据增强的多次裁剪图像的表示上。在这里,我们专注于在归纳设置中提取每个支持示例的特征集。

3. 问题的定义

4. 基于集合的少样本图像分类

在本节中,我们首先讨论我们建议的集特征提取器SetFeat,然后深入到我们建议的集到集度量的细节。最后,给出了我们提出的推理和训练程序。

4.1 集特征提取器

image.png
图1所示。所提出的集特征提取器(SetFeat)的概要概述和单个基于注意力的映射器的详细信息:
(a)给定输入 x x x, SetFeat首先在其每个块上提取(卷积)特征向量 z b z_b zb,而在每个块上基于注意力的映射器(以小矩形表示)将 z b z_b zb转换为不同的嵌入 h m h_m hm;
(b)块 b b b的单个映射器 m m m使用包含查询 θ m q \theta^q_m θmq和键 θ m k \theta^k_m θmk的注意机制提取嵌入 h m h_m hm,构建注意分数 β m \beta_m βm,并使用值 θ m v \theta^v_m θmv和分数 β m \beta_m βm推断自注意。本研究重点研究了由 B = 4 B=4 B=4块构成的主干,与Conv4[59]、ResNet[26]等流行的少样本图像分类主干一致。
SetFeat的总体架构如图1所示。如第3节所述,它的目标是映射输入图像 x x x到特征集 H H H。为此,受[14,58]的启发,我们在整个网络中嵌入隔离的自关注映射器 g ( ⋅ ) g(\cdot) g(),如图1a所示。然而,我们重申,我们的映射器不同于基于多头注意力的模型[14,58],主要有两个原因。首先,我们方法中的每个映射器都由单个注意头组成,因此我们不依赖于完全连接的层来连接多个头输出。因此,我们的特征映射器彼此分离,每个都提取自己的特征集。其次,我们的特征映射器是浅的(单位深度),其学习机制依赖于主干的卷积层。
m m m个特征映射器 g ( z b m ∣ θ m g ) g(z_{b_m}|\theta^g_m) g(zbmθmg)的细节如图1b所示,其中 b m b_m bm表示映射器前面的块。将学习到的表示 z b m ∈ R P × D p z_{b_m}\in R^{P\times D^p} zbmRP×Dp分成P个 D p D^p Dp维的不重叠的patch。在这项工作中,我们使用大小为1×1的patch,因此每个patch都是 D p D^p Dp元素的1-D向量。根据Vaswani等人[58],首先使用两个参数化元素 q ( z b m ∣ θ m q ) , k ( z b m ∣ θ m k ) q(z_{b_m}|\theta^q_m),k(z_{b_m}|\theta^k_m) q(zbmθmq),k(zbmθmk)计算注意图:
image.png
其中, β m ∈ R P × P \beta_m \in R^{P\times P} βmRP×P z b m z_{b_m} zbm patches上的注意力得分, d k \sqrt {d_k} dk 为比例因子。然后,我们用 v ( z b m ∣ θ m v ) v(z_{b_m}|\theta^v_m) v(zbmθmv)计算 β m \beta_m βmpatch上的点积注意力,其形式如下:
image.png
a m ∈ R P × D a a_m\in R^{P\times D^a} amRP×Da P P P D a D^a Da维数组成, D a D^a Da z b z_b zb维数。如果骨干特征提取器是ResNet26,我们在计算的注意力 ( a m + z b m ) (a_m + z_{b_m}) (am+zbm)上添加残差。在这种情况下,如果维度不匹配 ( D a ≠ D p ) (D^a \ne D^p) (Da=Dp),我们使用1×1单位步长和核大小的卷积,类似于下采样。最后,特征向量 h m h_m hm通过取patch的平均值( P P P维)来计算。

4.2. 集对集匹配度量

在介绍了SetFeat如何为每个输入实例提取要处理的特征集之后,我们现在继续介绍它如何利用这个特征集进行图像分类。在这种情况下,我们需要将查询的特征集与每个类的支持集的每个实例对应的特征集进行比较,以推断查询的类。更具体地说,为了继续使用基于距离的方法,就像我们对原型网络所做的那样,我们需要一个集合到集合的度量,允许测量集合之间的距离。我们现在提出了三个不同的集合到集合度量 d s e t ( x q , S n ) d_{set}(x_q,S^n) dset(xq,Sn),它测量多个特征集之间的距离,其中 x q x_q xq是查询, S n S^n Sn是类 n n n的支持集(参见。我们使用简写 h m ( x ) = g m ( z b m ∣ θ m g ) h_m(x)= g_m(z_{b_m}|\theta^g_m) hm(x)=gm(zbmθmg)来表示映射器 m m m提取的特征。此外,我们还定义 h ˉ m = 1 ∣ S ∣ ∑ x ∈ S h m ( x ) \bar h_m=\frac{1}{|S|}\sum_{x\in S}{h_m(x)} hˉm=S1xShm(x)作为映射器 m m m(总共 M M M个映射器)在支持集 S S S上提取的特征的质心。下面的集合度量建立在一般距离函数 d ( ⋅ , ⋅ ) d(\cdot,\cdot) d(,)。在实践中,我们使用负余弦相似函数,即 d ( ⋅ , ⋅ ) = − c o s ( ⋅ , ⋅ ) d(\cdot,\cdot)=-cos(\cdot,\cdot) d(,)=cos(,)
Match-sum聚合查询匹配映射器之间的距离,并支持
image.png
我们使用这个度量作为基线,因为它与简单地通过连接几个特征向量并调用平坦特征空间上的标准度量来构建表示的常见策略相似。
Min-min使用查询和支持集质心之间所有可能元素对的最小距离:
image.png
这样的度量直接利用了特征的集合结构。
sum-min通过对查询和支持集质心计算的映射器之间的最小距离求和,从min-min度量出发:
image.png
image.png
图2。使用(a)三种现有方法和(b)我们的和最小度量方法的1-shot图像分类说明。(a)给定查询和支持,现有方法要么直接将查询匹配到支持(ProtoNet (PN)[50]),要么在支持和查询上应用单个嵌入函数(MatchingNetwork (MN)[59]),要么在支持与查询匹配之前对其进行嵌入适配(FEAT[68])。(b)我们的SetFeat方法为支持和查询提取特征集,然后由自关注映射器进行处理。然后在嵌入上计算集合度量。
最小和度量的示意图如图2所示,它也说明了它与三个基线少样本模型的区别。我们的方法与FEAT68在两个主要方面不同。首先,我们在从每个示例中提取的特征上定义集合,而FEAT/MN直接在支持集上定义集合。在极端的1-shot情况下,FEAT“集合”退化为单个元素(1个支撑)。有利于少样本,我们的工作总是保持许多元素的集合,而不管支持集的基数。其次,我们的方法采用参数化映射器进行集合特征提取。这里,我们调整主干(与FEAT和MN不同),以便添加映射器得到相同总数的参数。第三,我们的方法采用非参数集对集度量,用于推理。

4.3. 推理

假设我们的一个指标是前一节中定义的 d s e t ∈ { d m s , d m m , d s m } d_{set}\in \{d_{ms},d_{mm},d_{sm}\} dset{dms,dmm,dsm},我们使用SetFeat遵循Prototypical Networks[50]的方法,并对属于类 y = n y=n y=n的查询示例 x q x_q xq的概率建模,其中 n ∈ { 1 , . . . , C } ( N − w a y ) n\in \{1,...,C\}(N-way) n{1,...,C}(Nway),使用softmax函数
image.png
以S为(少样本)支撑集。

4.4. 训练过程

我们遵循最近的文献[66,68,74],并利用我们提出的set-to-set指标之一的两阶段过程来训练SetFeat。第一阶段执行标准的预训练,从训练集中随机抽取来自基类的 X b a t c h X_{batch} Xbatch实例 x x x。在这里,我们附加了全连接(FC)层,将每个映射器特征转换为逻辑,以实现对C个类别的分类。由此,使用交叉熵损失来独立训练每个映射器:
image.png
式中 o m , c o_{m,c} om,c为类 c c c的映射器 m m m的FC层输出, h m , i h_{m,i} hm,i为实例 x i x_i xi的映射器 m m m的特征集, y i y_i yi为实例 x i x_i xi对应的目标输出。
第二阶段丢弃第一阶段添加的FC层,采用情景训练[50,59],在基本训练数据集上模拟少样本场景。该阶段在算法1中给出。具体来说,我们随机抽样N-way K-shot和Q -查询,然后使用eq. 6计算每个查询的概率分数。最后,在计算交叉熵损失后,对网络参数进行更新。
image.png

5. 评价

本节首先介绍我们使用SetFeat进行的实验的细节,这些实验是基于在少量图像分类文献中使用的传统主干。接下来是对数据集的描述,然后描述实现细节。最后,我们提出了SetFeat的评估与我们的集合匹配指标使用四个骨干网与三个数据集。

5.1. Backbones

我们采用了以下三种流行的主干,每个主干由四个块组成:(a) Conv4-64[59],由4个卷积层和64/64/64/64滤波器组成,共0.113M个参数;(b) Conv4-512[59]: 96/128/256/512,共1.591M个参数;© ResNet12[26,40]: 64/160/320/640,共12.424M个参数。在下面的所有实验中,我们按照**每个区块的模式在每个主干中嵌入了总共10个自关注映射器:在区块1后嵌入1个映射器,然后在随后的三个区块中嵌入2、3和4个映射器。**在第6.3节中,我们尝试了其他选择的映射器配置。
由于我们的基于注意力的特征映射器需要额外的参数,我们相应地减少了骨干特征提取器中的内核数量,以确保性能的提高不仅仅是由于过度参数化。具体来说,我们的SetFeat4-512, Conv4-512的对应版本,使用了一组96/128/160/200卷积核的简化集,总共有1.583万个参数(与Conv4-512的1.591万个参数相比)。SetFeat12是ResNet12的对应版本,由128/150/180/512个内核组成,参数为12.349M (ResNet12为12.424M)。对于Conv4-64,减少参数的数量会使训练崩溃(如[16,65,68]所述),因为它已经包含了很少的参数。因此,我们的SetFeat4-64有更多的参数(0.238M vs 0.113M的Conv4-64),但在第6.2节中,我们人为地增加了Conv4-64的参数数量,并表明我们的方法仍然优于它。
卷积注意[64]在setfeature 4-512和setfeature 12中使用。特别地,我们使用单深度卷积和批量归一化来参数化每个映射器中的键、查询和值。特征映射器的输出维数被设置为特征提取器最后一层的通道数——让所有映射器产生相同维数的特征向量是我们提出的度量的必要条件。对于setfeature 4, fc层用于计算注意力,以便尽可能地限制额外参数的数量。补充材料包括我们实现的细节。

5.2. 数据集和实现细节

我们在miniImageNet59,tieredImageNet[44]上进行实验(351/97/160)用于目标识别,而CUB60用于细粒度分类。为了预训练SetFeat4,我们使用Adam[40],学习率(lr)为0.001,权值衰减为5 × 10−4。批大小固定为64。对于SetFeat12,我们使用初始lr为0.1的Nesterov动量,动量为0.9,重量衰减为5 × 10−4。我们遵循[66,68,74]进行归一化和数据扩充。

5.3. 定量和比较评价

image.png
image.png

6. 消融实验

image.png
image.png
image.png
图3。为miniImageNet数据集的16个验证类别(x轴)中的每一个选择每个映射器(y轴)的时间百分比。结果由SetFeat12获得,平均超过600集的5-way 1-shot。虽然早期的映射器更经常是活跃的,但所有的映射器始终都是有用的。
image.png
图4。使用t-SNE在640上的可视化映射器[57]随机从(a)带有SetFeat12的miniImageNet, (b)带有SetFeat12∗的CUB(第5.3节)和©带有SetFeat12的tieredImageNet的验证集中采样。点是根据映射器的颜色编码的。
image.png
图5。梯度显著性图的比较。从左起,我们看到(a)输入的原始图像,(b)基线[8],© SetFeat12提取的五个特征向量的子集。该图给出了第一行训练数据的三个示例和有效数据的四个示例。miniImageNet的最后四行的集合。

7. 讨论

本文提出了一种基于特征向量集的图像分类方法。这与使用单向量表示形成了对比,后者在该上下文中是一种流行的策略。为了生成这些集,我们在传统卷积主干的不同阶段嵌入了浅的基于注意力的映射器。这些映射器旨在通过随机初始化提取不同的特征集,捕获所见图像的不同属性。在这里,和最小和最小中的非线性产生了多样性:内部最小距离导致非线性,迫使选择给定的映射器。Match-sum是我们最差的度量,它只受益于随机初始化。然后,我们依靠集合到集合的匹配度量来从支持集示例中推断给定查询的类,遵循使用原型网络进行推理的通常方法。通过在miniImageNet、tieredImageNet和CUB数据集上获得最先进的结果,对两个主要主干的四种不同改编的实验证明了我们的方法的有效性。为了公平比较,根据映射器添加的参数数量减少了所有已适应的主干的参数。
局限
尽管在6.1节中提供了不同映射器配置的比较,但我们使用固定的M = 10个映射器来评估我们的方法。曾经考虑过使用更多的映射器(M > 10),但最终放弃了,因为增加映射器的数量将需要减少过滤器的数量,这反过来又可能由于参数化不足而导致欠拟合。作为未来的工作,我们在分析增加映射器数量的影响方面看到了巨大的潜力,可能有更大的主干。另一个需要进一步研究的主题是通过更灵活的集对集匹配度量来改变每个映射器的权重。尽管最小和和最小最小度量(通过最小操作)非线性匹配特征集,但研究加权和最小值将是一个有趣的未来工作。在这里,在计算最小和度量之前调整Deep Set[72]将是研究加权集到集映射的一个潜在方向。最后,我们特别热衷于将我们的方法应用于自监督,因为特征集为比较单个图像的不同变化提供了更多的选择。

参考资料

论文下载(2022 CVPR)

https://openaccess.thecvf.com/content/CVPR2022/papers/Afrasiyabi_Matching_Feature_Sets_for_Few-Shot_Image_Classification_CVPR_2022_paper.pdf

代码地址

https://lvsn.github.io/SetFeat/

参考文章

https://blog.csdn.net/s_m_c/article/details/135729974?spm=1001.2014.3001.5502

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G技术相关部分图解

1、面向5G商用网络的全系列解决方案 面向5G商用网络的全系列解决方案涵盖了从核心网到接入网的各个方面,确保网络的高性能、高可靠性和高安全性 2、2\3\4\5G带宽图解 G带宽的提升将推动许多新型应用的发展,并提供更快速、更可靠的移动通信体验。然而…

PCIE协议-2-事务层规范-Handling of Received TLPs

2.3 接收到的TLP的处理 本节描述了当接收到的TLP从接收数据链路层传送到接收事务层,并且在数据链路层已经验证了接收到的TLP的完整性后,如何处理所有接收到的TLP。规则在图2-41所示的流程图中进行了图解。 保留字段中的值必须由接收器忽略。如果Fmt字段…

【JVM】阅读Class字节码:常量池

目录 基本结构解析 常量池 常量池简介 如何阅读Class文件中的常量池信息 基本结构解析 Magic(魔数) Magic的唯一作用是确定这个文件是否为一个能被虚拟机所接受的class 文件。魔数值固定为0xCAFEBABE,不会改变。 常量池 常量池简介 下图是反编译过后的字节码文…

记一次:mysql统计的CAST函数与json字段中的某个字段

前言:因为需求的问题,会遇到将某个json存入到一个字段中,但在统计的时候,又需要将这个json中的某个字段作为条件来统计,所以整理了一下cast函数和json中某个字段的条件判断 一、浅谈mysql的json 1.1 上例子 SELECTli…

达梦(DM) SQL查询及联合查询

达梦DM SQL查询及联合查询 查询结果排序多表联合查询 这里继续讲解DM数据库的Sql查询操作 查询结果排序 为提高查询结果可读性,我们可以对查询结果按照一定顺序排列,或者也可以将列名替换成数字,例如 ORDER BY 1 DESC,意思是按第…

StableDiffusionWebUI 让我找到了宫崎骏动漫里的夏天

目录 前言一、HAI二、应用场景三、构建 Stable Diffusion 模型1、新建HAI应用2、StableDiffusionWebUI(1)功能介绍(2)页面转中文(3)AI绘图① 正向提示词语② 反向提示词③ “” 、“ AND”、“|” 用法④ 权…

请收好,这份思科备考攻略很细节

对于网络工程师来说,思科认证无疑是一块金字招牌。它不仅代表着专业技能,更是职业发展的加速器。 今天我们不聊选思科认证还是华为认证,只能说是各有各的好,如果你已经选择了思科认证,那么这份备考攻略将为你提供一些实…

Spring MVC(一)

1 Spring MVC概述 我们在之前学习Servlet的时候,认识了在WEB开发中MVC设计模式,其最为经典的设计就是,通过控制器(Controller)分离模型(Model)和视图(View)。在具体的WEB…

conan2 基础入门(04)-指定编译器(gcc为例)

conan2 基础入门(04)-指定编译器(gcc为例) 文章目录 conan2 基础入门(04)-指定编译器(gcc为例)⭐准备生成profile文件预备文件和Code ⭐使用指令预览正确执行结果可能出现的问题 ⭐具体讲解conancmake ENDsettings.yml ⭐准备 生成profile文件 # 生成默认profile文件&#xf…

《一文带你了解》关于ITSS认证-IT服务工程师、IT项目经理

“IT 服务工程师培训”和“IT 服务项目经理培训”为中国电子技术标准化研究院推出的 ITSS 系列培训,通过该培训的人员可系统掌握 IT 运维的知识, 提升项目管理水平,有效满足 GB/T 28827.1 的符合性评估要求。 我要充电学习提升自我&#xff0…

怎么看电脑是固态还是机械硬盘?数据丢失怎么办

在数字化时代,电脑硬盘作为数据存储的核心部件,其类型直接关系到数据读写速度和存储效率。固态硬盘(SSD)与机械硬盘(HDD)作为目前市场上主流的两种硬盘类型,各有其优缺点。然而,对于…

Find My OBD|苹果Find My技术与OBD结合,智能防丢,全球定位

OBD是英文On-Board Diagnostics的缩写,中文翻译为“车载自动诊断系统”。这个系统将从发动机的运行状况随时监控汽车是否尾气超标,一旦超标,会马上发出警示。当系统出现故障时,故障(MIL)灯或检查发动机(Check Engine)警告灯亮&…