论文解读: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

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

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

相关文章

C++ LeetCode 刷题经验、技巧及踩坑记录【三】

C LeetCode 刷题经验、技巧及踩坑记录【三】 前言vector 计数vector 逆序vector 删除首位元素vector二维数组排序vector二维数组初始化C 不同进制输出C 位运算C lower_bound()C pairC stack 和 queue 前言 记录一些小技巧以及平时不熟悉的知识。 vector 计数 计数 //记录与首…

面 试 题

过滤器和拦截器的区别 都是 Aop 思想的一种体现,用来解决项目中 某一类 问题的两种接口(工具),都可以对请求做一些增强 出身 过滤器来自 servlet 拦截器来自 spring 使用范围 过滤器 Filter 实现了 iavax.servlet.Filter 接口,也就是说…

【三家飞机制造商】

1.Boeing 波音 F-15战机 B-52轰炸机 阿帕奇攻击直升机 E-3 2 .Lockheed Martin 洛克希德马丁 F35 F22 F16 F117 C130 U2 3 Raytheon 雷神

高效协同,智慧绘制:革新型流程图工具全解析

流程图,作为一种直观展示工作过程和系统运作的工具,在现代办公和项目管理中发挥着不可或缺的作用。 其优势在于能够清晰、直观地呈现复杂的过程和关系,帮助人们快速理解并掌握关键信息。同时,流程图也广泛应用于各种场景&#xf…

NodeJS V8引擎内存和垃圾回收器

关于max_old_space_size max_old_space_size参数用于指定V8引擎的老生代内存的最大大小。通过增加max_old_space_size参数的值,我们可以提供更多的内存给V8引擎,从而提高应用程序的性能和稳定性。 既然提到了老生代,就不得不提下什么是垃圾&…

tensorrtx-yolov5-v6.0部署在windows系统

前言:最近几天一直在搞这个东西,现在跑通了,为了以后自己看和帮助他人,就记录一下。虽然是跑通了但是觉得怪怪的,感觉不是自己想要的效果,另外这个只能检测图片,不能摄像头实时监测(我暂时没找到…

python中cv2,等等如何修改为中文字体显示,这里以人脸表情识别中文标签为例

中文字体显示 首先下载字体包部署字体包代码实现部分 想必大家在使用python过程中都会遇到,想要显示中文的时候,但是py基本上都是英文字体,下面我将给大家提供一个比较好的解决方案: 首先下载字体包 方法: 我使用的是…

SuperBox设计出图的效率提升!新增内门自动开孔和垫高支架图纸输出功能

越来越多的配电箱项目要求带内门,内门不仅可以有效减少外界灰尘、异物进入配电箱内部,保障配电箱正常运行,还能够隔离操作人员意外触摸导电部件,减少触电事故的发生。但是配电箱在配置内门后,会给设计带来更多的要求&a…

Linux虚拟主机cPanel重置密码

我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板,这边自购买后一直未重新设置过cPanel面板的密码,但是了解到要定期重置一下cPanel面板的密码,以确保主机数据安全,因此想要进行重置cPanel面板的密码&#xff…

Leecode热题100---3:无重复字符的最长子串

题目&#xff1a;给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 C&#xff1a; 指针法&#xff0c;使用at读取字符串中的值&#xff1b; #include <iostream> #include <string> #include <vector> #include <windows.…

数据结构【顺序表】

文章目录 1.顺序表的概念线性表物理结构逻辑结构 2.顺序表的分类2.1静态顺序表2.2动态顺序表 3.顺序表接口的实现头文件(SQList.h)如下源文件初始化顺序表销毁顺序表插入扩容尾插头插 封装扩容函数删除尾删头删 查找元素在指定位置前插入数据情况一(指定的位置不是首元素)情况二…

淘宝扭蛋机小程序开发:探索未知的惊喜世界

一、引言 在这个充满无限可能的数字时代&#xff0c;每一次点击都可能带来意想不到的惊喜。淘宝扭蛋机小程序&#xff0c;正是为了满足您对惊喜的渴望&#xff0c;将扭蛋的趣味与购物的便捷完美结合&#xff0c;带您进入一个充满未知与乐趣的惊喜世界。 二、产品介绍 淘宝扭…

Redis教程(二):Redis在Linux环境下的安装

Linux环境下安装&#xff1a; 下载地址&#xff1a;Downloads - Redis 安装步骤&#xff1a; 下载得到一个 tar.gz 压缩文件 上传到Linux的/opt/soft目录&#xff0c;使用以下命令解压 tar -zxvf redis-6.2.14.tar.gz Linux安装基本环境gcc&#xff0c;安装命令 yum insta…

Encoder——Decoder工作原理与代码支撑

神经网络算法 &#xff1a;一文搞懂 Encoder-Decoder&#xff08;编码器-解码器&#xff09;_有编码器和解码器的神经网络-CSDN博客这篇文章写的不错&#xff0c;从定性的角度解释了一下&#xff0c;什么是编码器与解码器&#xff0c;我再学习笔记补充的时候&#xff0c;讲一下…

什么是网络端口?为什么会有高危端口?

一、什么是网络端口&#xff1f; 网络技术中的端口默认指的是TCP/IP协议中的服务端口&#xff0c;一共有0-65535个端口&#xff0c;比如我们最常见的端口是80端口默认访问网站的端口就是80&#xff0c;你直接在浏览器打开&#xff0c;会发现浏览器默认把80去掉&#xff0c;就是…

dfs记忆化搜索,动态规划

动态规划概念&#xff1a; 给定一个问题&#xff0c;将其拆成一个个子问题&#xff0c;直到子问题可以直接解决。然后把子问题的答案保存起来&#xff0c;以减少重复计算。再根据子问题的答案反推&#xff0c;得出原问题解。 821 运行时间长的原因&#xff1a; 重复大量计算…

Cadence 16.6 绘制PCB封装时总是卡死的解决方法

Cadence 16.6 绘制PCB封装时总是卡死的解决方法 在用Cadence 16.6 PCB Editor绘制PCB封装时候&#xff0c;绘制一步卡死一步&#xff0c;不知道怎么回事儿&#xff0c;在咨询公司IT后&#xff0c;发现是WIN系统自带输入法的某些热键与PCB Editor有冲突&#xff0c;导致卡死。 …

融资融券最低利率4.0!,融资融券利息计算公式,怎么开通?

融资融券的费率&#xff1a; 融资融券的费率主要包括融资利率和融券费率&#xff0c;这些费率的高低主要取决于证券公司的成本、政策倾向以及投资者的资金量大小。 融资利率方面&#xff0c;多数券商的优惠融资利率在5.5%到7.5%之间&#xff0c;与券商的成本和政策有关。一些…

带你了解AI大模型的前世今生

过去&#xff0c;开发者用代码来改变世界&#xff0c;未来&#xff0c;自然语言将成为通用的编程语言。大模型是如何成功的&#xff1f;有哪些应用&#xff1f;现在如何入局&#xff1f;一个全知全能的大模型能适配一切吗&#xff1f;在这个 AI 时代&#xff0c;什么样的工具才…

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

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