论文解读:Rectifying the Shortcut Learning of Background for Few-Shot Learning

文章汇总

问题&动机&解决方法

图像背景是一种有害知识的来源,这是少数镜头学习模型容易吸收的(问题)

通过在训练和评估中提取图像中的前景目标而不需要任何额外的监督来解决这个问题(动机)

在训练和评估时将模型的注意力吸引到图像前景上(方法)

摘要

训练和评估之间的类别差距已被定性为少样本学习(FSL)成功的主要障碍之一。本文首次对现实图像中常见的图像背景进行了经验识别,作为一种有助于类内分类的快捷知识,但在FSL中不能推广到训练类别之外。一个新的框架,COSOC,通过在训练和评估中提取图像中的前景目标而不需要任何额外的监督来解决这个问题(动机)。在归纳FSL任务中进行的大量实验证明了我们的方法的有效性。

1介绍

通过对几个样本的一眼观察,人类可以准确地识别出全新的物体。

这种优势来自于人类视觉系统多年积累的经验。受这种学习能力的启发,开发了Few-Shot learning (FSL)来解决从有限数据中学习的问题[24,53]。在训练时,FSL模型从大规模数据集中吸收知识;在随后的评估中,利用学习到的知识来解决一系列下游分类任务,每个任务都包含很少的来自全新类别的支持(训练)图像。

培训和评估之间的类别差距被认为是FSL的核心问题之一[10]。直观地说,在训练中学习到的旧类别的先验知识可能不适用于新类别。[62]考虑从因果关系的角度来解决这个问题。然而,他们的后门调整方法以黑盒方式调整先验知识,无法判断哪些特定的先验知识是有害的,应该被抑制。

在本文中,我们将图像背景识别为FSL的一个特定有害源知识。在[56]中的实证研究表明,背景和图像类别之间存在虚假的相关性(例如,鸟类通常站在树枝上,贝壳经常躺在海滩上;如图1),这是现代基于cnn的视觉系统学习的捷径知识。进一步发现背景知识对类内分类任务的表现有正向影响。如图1的简单示例所示,同一类别的图像更有可能共享相似的背景,这使得背景知识有可能在常见分类任务中从训练推广到测试。而对于FSL而言,品类差距在评价中产生了全新的前景、背景及其组合。因此,在训练中学习到的相关性可能无法推广,并且可能会误导预测(问题)。我们通过对图像前景和背景在外语学习中的作用进行实证研究,揭示了图像背景如何以消极的方式显著影响少样本学习和评价。

由于背景是有害的,如果我们能强迫模型在训练和评估时都集中在前景物体上是很好的,但这并不容易,因为我们没有任何关于前景物体在图像中的实体和位置的先验知识。当人类要识别来自同一类图像的前景对象时,他们通常会寻找在大多数图像中出现的共享局部模式,并将具有该模式的补丁识别为前景

这启发我们设计了一个新的框架COSOC,通过寻找图像之间的共享模式来提取图像前景,用于FSL的训练和评估。该方法不依赖于任何额外的细粒度监督,如边界框或像素级标记。

在训练前对训练集中的图像进行前景提取。相应的算法,称为基于聚类的对象搜索器(COS),首先使用对比学习在训练集上预训练一个特征提取器,在区分真实前景对象的任务上具有出色的性能,在后面的部分中有经验证明。

然后,特征提取器将随机裁剪的图像(前景目标的候选图像)映射到形状良好的特征空间中。接下来是在同一类的所有特征上运行聚类算法,模仿从人类行为中寻找共享的局部模式的过程。然后,根据每个裁剪的斑块到最近的聚类质心的距离,为其分配前景分数,用于确定该斑块在FSL模型的后期正式训练中的采样概率。为了评估,我们开发了共享对象集中器(SOC),这是一种在支持集中应用迭代特征匹配的算法,一次在每张图像中寻找最有可能成为前景的裁剪。进一步利用得到的作物的排序平均特征来匹配查询图像的作物,使前景作物具有更高的匹配分数。最后计算匹配分数的加权和作为每个查询样本的分类逻辑。与其他潜在的前景提取算法(如基于显著性的方法)相比,我们的COS和SOC算法具有捕获共享图像间信息的额外能力,在复杂的多目标场景中表现更好。我们的方法还具有动态分配信念(概率)给所有候选前景对象的灵活性,减轻了过度自信的风险。

我们的贡献可以概括如下。

i)通过对图像前景和背景在FSL中的作用进行实证研究,我们发现图像背景是一种捷径知识的来源,对评价效果有一定的危害。

ii)为了解决这一问题,我们提出了COSOC框架,将COS和SOC相结合,使模型在训练和评估时都能关注图像前景。

iii)非转导FSL任务的大量实验证明了我们的方法的有效性。

3实证调查

问题的定义

少样本学习由一个训练集D_B和一个评估集D_v组成,它们没有重叠的类。D_B包含大量标记数据,通常首先用于训练骨干网络f_\theta(\cdot)。训练后,构造一组N-way K-shot分类任务\tau=\{S_{\tau},Q_{\tau}\}^{N\tau}_{\tau=1}

,每个任务首先在D_v中采样N个类,然后从每个类中采样K和M个图像,分别构成S_{\tau}Q_{\tau}。在每个任务\tau中,给定学习到的主干f_\theta(\cdot)和一个小支持集S_{\tau}=\{x_{k,n}^{\tau},y_{k,n}^{\tau}\}_{k,n=1}^{K,N},该支持集由来自
N个类的k张图像x_{k,n}^{\tau}和相应的标签y_{k,n}^{\tau}组成,设计了一种少样本分类算法,对来自查询集
Q_{\tau}=\{x_{mn}^{\tau}\}_{m,n=1}^{M,N}的MN张图像进行分类。

准备

为了研究背景和前景在FSL中的作用,我们需要对真地图像前景进行比较。然而,对整个数据集进行标记是非常耗时的。因此,我们只选择miniImageNet[53]的一个子集D_{new}=(D_B,D_v),并根据包含前景对象的最大矩形边界框手动裁剪每张图像。我们将子集的未裁剪版本表示为
(D_B-Ori,D_v-Ori),将裁剪后的前景版本表示为(D_B-FG,D_v-FG)。在我们的实证研究中选择了两条著名的FSL基线:Cosine Classifier (CC) [14] 和 Prototypical Networks (PN) [48].关于构造D_{new}的详细信息以及CC和PN的正式介绍,请参见附录A。

3.1前景和背景在少拍图像分类中的作用

图2:5-way 5-shot FSL在第3节详细介绍的不同变体的训练和评估数据集上的表现。(a)使用PN和CC两种模型对FSL图像前景和背景进行实证探索。(b) CC与Exemplar在miniImageNet的完整训练集上训练并在Dv-Ori和Dv-FG上进行评估的比较。

图2(a)为在D_B-OriD_B-FG上分别训练CC和PN,并在D_v-OriD_v-FG上分别进行评估得到的5way 5-shot分类准确率的平均值。额外的5-way 1-shot实验见附录F。

类别差距不利于背景知识的泛化

首先可以注意到,在任何条件下,如果在评估阶段去除背景(从D_v-Ori切换到D_v-FG),性能都会得到持续而显著的提高。结果表明,FSL评价阶段的背景是有害的。这与文献[56]的报道相反,该研究表明背景有助于提高传统分类任务的性能,在传统分类任务中,训练和评估之间不存在类别差距。因此,我们可以推断,FSL中的类/分布差距使背景知识的泛化失效并降低了性能。

在训练中去除背景可以防止捷径学习

当评估时只给出前景(D_v-FG)时,仅使用前景(D_B-FG)训练的模型比使用原始图像
(D_B-Ori)训练的模型表现更好。这表明用原始图像训练的模型可能没有足够关注对分类真正重要的前景对象。

训练时的背景信息是模型学习的捷径,不能泛化到全新的类。相比之下,只使用前景训练的模型“学会比较”不同的对象——这是一种可靠的泛化能力,可以用于具有域外类的下游少量学习任务。

背景训练有助于模型处理复杂的场景

在对D_v-Ori进行评价时,使用原始数据D_B-Ori训练的模型略优于使用前景数据
D_B-FG训练的模型。我们将其归因于一种领域转移:使用D_B-FG训练的模型从未遇到过具有复杂背景的图像,并且不知道如何处理它。在附录D.1中,我们进一步验证了上述两种训练情况下每个类的评估准确率。请注意,由于我们在训练时应用了随机作物增强,如果模型在
D_B-Ori上训练并在D_v-FG上评估,则不存在域移位。

简单的融合取样结合了两者的优点

可以在保持模型对复杂场景的适应性的同时,切断对背景的捷径学习。一种简单的解决方案可能是融合采样:给定一张图像作为输入,选择其前景版本的概率为p,选择其原始版本的概率为1 - p。我们简单地将p设为0.5。我们将使用这种采样策略的数据集表示为D_B-Fuse。从图2(a)中可以看出,以这种方式训练的模型确实结合了双方的优势,在D_v-OriD_v-FG上都取得了较好的性能。在附录C中,我们比较了在三种版本的数据集上训练的PN的训练曲线,以进一步研究融合采样的有效性。

以上分析为如何进一步提高FSL提供了新的启示:

(1)前景和原始图像的融合采样可以应用于训练。

(2)由于背景信息会干扰评价,因此需要关注前景对象或为更有可能是前景的图像块分配较大的权重进行分类。因此,在训练(用于融合采样)和评估中都需要一种前景目标识别机制。

3.2对比学习擅长识别对象

在本小节中,我们揭示了对比学习在识别前景对象方面的潜力,我们将在后面的前景提取中使用对比学习。给定一张图像的一个转换视图,对比学习倾向于将同一图像的另一个转换视图从数千个其他图像视图中区分出来。对比学习的更详细的介绍见附录b。同一图像的两个增强视图总是覆盖相同的物体,但可能有不同的部分,大小和颜色。为了从成千上万的图像块中区分两个增强的图像块,该模型必须学会在不同的环境下识别物体的关键判别信息。通过这种方式,显式地对图像之间的语义关系进行建模,从而自动聚类语义相似的内容。不同图像的特征被推开,而不同图像中相似物体的特征被拉近。因此,我们有理由推测,对比学习可以使模型更好地识别中心前景目标。

为了验证这一点,我们在miniImageNet (DB-Full)的整个训练集上训练CC和对比学习模型,并比较它们在Dv-Ori和Dv-FG上的准确率。我们使用的对比学习方法是MoCo[17]的改良版Exemplar[68]。从图2(b)可以看出,虽然Exemplar在Dv-Ori上的评价精度略低于CC,但在评价时只给出图像前景时,Exemplar的表现要好得多,这肯定了对比学习确实具有更好的单中心目标判别能力。在附录D.2中,我们对为什么对比学习具有这些特性进行了更深入的分析,并推断形状偏差和视点不变性可能起重要作用。

4纠正背景的捷径学习

鉴于前一节的分析,我们希望在训练和评估中更多地关注图像前景。受人类如何识别前景物体的启发,我们提出了COSOC,这是一个利用对比学习将模型的注意力吸引到图像前景物体上的框架。

4.1基于聚类的目标搜索器(COS)融合采样训练

由于对比学习在区分前景目标方面比较好,我们利用对比学习在训练前提取前景目标。第一步是使用Exemplar[68]在训练集D_B上预训练主干f_\theta(\cdot)。然后使用基于聚类的算法提取由预训练模型识别的“对象”。其基本思想是,通过对比学习模型提取的一类图像中前景目标的特征是相似的,因此可以通过聚类算法进行识别;请看图3中的一个简单的例子。D_B中第i类中的所有图像形成一个集合
\{x^i_n\}^N_{n=1}

为了清楚起见,我们在下面的描述中省略了类索引\{\textbf{p}_{n,m}\}^L_{m=1}。在某一类中寻找前景目标的具体方案如下:

1)对每张图像\textbf{p}_{n,m},随机裁剪L次,得到L个图像patchf_\theta。然后将每个图像patch
\textbf{p}_{n,m}经过预训练模型f_\theta,得到归一化特征向量\textbf{V}_{n,m}=\frac{f_\theta(\textbf{p}_{n,m})}{||f_\theta(\textbf{p}_{n,m})||_2}\in R^d

2)对该类的所有特征向量运行聚类算法A,得到H个聚类\{\textbf z_j\}^H_{j=1} = A(\{\textbf{v}_{n,m}\}^{N,L}_{n,m=1}),其中
\textbf{z}_j为第j个聚类的特征质心。

3)我们说一个像\textbf x_n\in \textbf z_j,即为存在k \in[L] s.t. \textbf{v}_{n,k}\in{\textbf{z}_j},其中[L]=\{1,2,...,L\}。设
l(\textbf z_j) = \frac{\{\# \textbf x|\textbf x\in \textbf z_j\}}{N}为该类中属于\textbf z_j的图像的比例。如果l(\textbf z_j)很小,则聚类\textbf z_j不能代表整个类,可能是背景。因此我们去掉所有l(\textbf z)<\gamma的聚类\textbf z,其中\gamma是控制聚类一般性的阈值。剩下的h个聚类
\{\textbf z_j\}^{\alpha h}_{j=\alpha_1}表示我们正在寻找的类的“对象”。

4)将图像patchp_{n,m}的前景分数定义为s_{n,m}=1-min_{j \in[h]||\textbf{v}_{n,m}-\textbf{z}_{\alpha_j}||_2}/\eta,其中
\eta=\mathop{max}\limits_{n,m} \mathop{min}\limits_{j\in[h_c]}||\textbf{v}_{n,m}-\textbf{z}_{\alpha_j}||_2用于将分数归一化为[0,1]。然后得到每张图像
\textbf x_n的top-k分数为\{s_{n,m}\}^{\beta_k}_{m=\beta_1}=\mathop{Topk(s_{n,m})}\limits_{m\in [L]}。将对应的\{\textbf{p}_{n,m}\}^{\beta_k}_{m=\beta_1}视为图像\textbf x_n中前景目标的可能作物,前景评分\{​{s}_{n,m}\}^{\beta_k}_{m=\beta_1}作为置信度。然后,我们将其作为先验知识来纠正FSL模型背景的快速学习。

训练策略类似于前面介绍的融合采样。对于图像\textbf x_n,我们选择原始版本的概率为
1-\mathop{max}\limits_{i\in[k]}{s_{n,\beta_i}},从top-k个patch中选择\textbf{p}_{n,\beta_j}的概率为({s_{n,\beta_i}}/\sum_{i\in[k]}{s_{n,\beta_j}})\cdot\mathop{max}\limits_{i\in[k]}{s_{n,\beta_i}}。然后对所选图像进行调整,使最小面积占原始图像的比例保持不变。我们使用该策略使用FSL算法来训练骨干f_\theta(\cdot)

4.2基于共享对象集中器(SOC)的少镜头评估

如前所述,如果在评估时使用图像的前景裁剪,FSL模型的性能将得到很大的提升,作为模型性能的上界。

为了接近这个上限,我们提出了SOC算法,通过在同类支持图像和查询图像之间寻找共享内容来捕获前景目标。

步骤1:在每个类中搜索共享内容。

对于支持集S_{\tau}中c类中的每张图像\textbf x_n,我们随机裁剪V次,得到相应的候选图像
\{\textbf{p}_{k,n}\}_{n=1,...,V}。每个\textbf{p}_{k,n}分别发送到学习主干f_\theta,得到归一化特征向量
\textbf{v}_{k,n}。因此,我们在c类中总共有K × V个特征向量。

我们的目标是得到一个特征向量\omega_1包含c类中所有图像的最大共享信息。理想情况下,\omega_1表示最相似的K个图像块的质心,每个图像块来自一个图像,可表示为

式中cos(·,·)表示余弦相似度,[K]^{[V]}表示以[K]为定义域,以[V]为值域的函数集。而\lambda_{opt}可以通过枚举图像patch的所有可能组合得到,该蛮力方法的计算复杂度为O(V^K),即当V或K很大时,计算是禁止的。因此,当计算负担不起时,我们转而使用一种利用迭代优化的简化方法。而不是寻找最近的图像补丁,我们直接优化ω1,使每个图像到补丁的最小距离之和最小,即:

这可以通过迭代优化算法来实现。我们在实验中应用了SGD。优化后,我们去除每张图像中与ω1最相似的patch,得到K × (V−1)个特征向量。然后我们重复执行上述优化过程,直到没有特征留下,如图4所示。我们最终得到V个经过排序的特征向量\{\omega_n\}_{n=1}^V

,用来表示类c。对于shot K =1的情况,类内部没有共享的图像间信息,因此与PN和DeepEMD[63]中的处理类似,我们直接跳过第1步,使用原来的V个特征向量。

步骤2:查询图像聚焦前景目标的特征匹配。

一旦确定了前景类表示,下一步就是使用它们通过特征匹配来隐式地关注查询图像的前景。对于查询集Q_{\tau}中的每张图像x,我们也随机裁剪V次,得到V个候选特征\{u_n\}_{n=1}^V。对于每个c类,我们有V个经过排序的代表性特征向量\{\omega_n\}_{n=1}^V,这些特征向量是在步骤1中得到的。然后我们匹配查询特征和类特征之间最相似的patch,即

其中\alpha <=1是一个重要因子。

因此,权重\alpha^{j-1}在指标n−1中呈指数降低,表明每个表示前景的向量的可信度降低。类似地,删除两个匹配的特征,重复上述过程,直到不留下任何特征。最后是x w.r.t.的分数。

c类是所有相似度的加权和,即S_c=\sum^V_{n=1}{\beta^{n-1}s_n},其中\beta<=1是控制每个作物是前景目标的另一个重要因素。通过这种方式,更早匹配的特征——因此更有可能成为前景——将对得分有更高的贡献。x的预测类别是得分最高的类别。

5实验

5.1实验设置

数据集

我们采用了两个在少镜头学习中最具代表性的基准数据集。

第一个是miniImageNet[53],它是ILSVRC-12[44]的一个小子集,在100个类别中每个类别包含600张图像。这些类别被分为64、16和20类,分别用于培训、验证和评估。第二个数据集tieredImageNet[41]是ILSVRC12的一个更大的子集,更具挑战性。它是通过选择34个超类和608个类别来构建的。超级类分为20、6、8个超级类,确保了培训类和评估类的分离。最终的数据集分别包含351,97,160个用于训练,验证和评估的类。在这两个数据集上,为了公平比较,输入图像大小为84 × 84。

评估协议

我们遵循5-way 5-shot (1-shot) FSL评估设置。具体来说,从评估集Dv中随机抽取2000个任务,每个任务包含15个测试图像和5(1)个训练图像,并计算平均分类准确率。重复5次,报告具有95%置信区间的平均准确度的平均值。

实现细节

我们在整篇文章中使用的主干是ResNet-12,它被广泛用于few-shot学习。我们使用Pytorch[38]在两个NVIDIA 1080Ti gpu上实现我们的所有实验。我们使用具有余弦学习率的SGD训练模型,无需重新启动,以减少超参数的数量(这些超参数会衰减学习率)。训练Exemplar的初始学习率为0.1,CC的初始学习率为0.005。Exemplar、CC的批处理大小分别为256和128。对于miniImageNet,我们训练Exemplar进行150k次迭代,训练CC进行6k次迭代。对于tieredImageNet,我们训练Exemplar进行了大约90万次迭代,训练CC进行了12万次迭代。我们选择k-means[32]作为COS的聚类算法。阈值γ设置为0.5,在训练阶段从每张图像的30个特征中选择前3个特征。在评估阶段,我们将每张图像裁剪7次。重要因子α和β均设为0.8。

5.2模型分析

在本小节中,我们将展示我们的方法的每个组成部分的有效性。表1为在miniImageNet上进行的消融研究。

关于微调的效果。由于特征提取器是使用COS中的对比学习进行预训练的,如果我们直接从预训练的模型中进行微调,而不是从头开始训练,它可能有助于加速收敛。如表1第2-3行所示,与从头开始训练相比,fintuning并没有提高性能。因此,我们采用微调主要是为了加快收敛速度(快5倍)

COS算法的有效性。如表1所示,当在CC上应用COS时,两个版本的数据集的性能都得到了提高。在图5中,我们给出了在有COS和没有COS的训练过程中CC的训练和验证误差曲线。这两个模型都是从头开始训练并在完整的miniImageNet上进行验证的。我们观察到CC陷入过拟合:训练精度下降到零,验证精度在训练结束前停止提高。同时,COS算法有助于减缓收敛速度,防止训练精度趋近于零。这使得验证精度在开始时相当,但在结束时更高。我们的COS算法削弱了学习的“背景捷径”,将模型的注意力吸引到前景对象上,并在泛化上得到改进

SOC算法的有效性。表1的结果表明,SOC算法是最大限度地发挥良好目标识别能力潜力的关键。该模型的性能甚至接近于在ground-truth前景Dv-FG上评价模型得到的上界性能。在我们的SOC算法中,一个潜在的不公平可能在于多裁剪的使用,这也可能导致其他方法的性能提高。

我们在附录G中删除了这个问题,并在后面的小节中与其他方法进行了比较。

请注意,如果我们只在CC上应用SOC算法,性能会下降。这表明COS和SOC都是必要的:COS提供前景对象的识别能力,SOC利用它来最大限度地提高性能。

5.4表现的比较

表3给出了miniImageNet和tieredImageNet上的5路1次和5次分类结果。

我们与最先进的几次学习方法进行比较。为了公平比较,我们重新实现了一些方法,并用多次裁剪对它们进行了评价。复种影响的详细研究见附录G。我们的方法在所有设置下都达到了最先进的性能,除了tieredImageNet上的1-shot任务,我们的方法的性能略低于CA, CA使用WRN-28-10(更深的骨干)作为特征提取器。

5.5可视化

图6和7显示了COS和SOC算法的可视化示例。更多示例见附录h。由于设计良好的捕获图像间共享信息的机制,COS和SOC算法能够定位复杂、多目标场景中包含的前景补丁。

6结论

随着网络和算法设计的日益复杂,少样本图像分类技术得到了越来越多的关注,但对图像本身的关注却越来越少。在本文中,我们揭示了图像背景是一种有害知识的来源,这是少数镜头学习模型容易吸收的(问题)。我们的COSOC框架解决了这个问题,它可以在训练和评估时将模型的注意力吸引到图像前景上(方法)。我们的方法只是一种可能的解决方案,未来的工作可能包括探索无监督分割或检测算法的潜力,这可能是随机裁剪的更可靠的替代方案,或者寻找一种完全不同但更好的前景提取定制算法。

参考资料

文章下载(NeurIPS(A) 2021)

https://proceedings.neurips.cc/paper/2021/file/6cfe0e6127fa25df2a0ef2ae1067d915-Paper.pdf

https://proceedings.neurips.cc/paper_files/paper/2021/file/6cfe0e6127fa25df2a0ef2ae1067d915-Supplemental.pdf

代码地址

GitHub - Frankluox/LightningFSL: LightningFSL: Pytorch-Lightning implementations of Few-Shot Learning models.

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

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

相关文章

Day25:安全开发-PHP应用文件管理模块包含上传遍历写入删除下载安全

目录 PHP文件操作安全 文件包含 文件删除 文件编辑 文件下载 云产品OSS存储对象去存储文件(泄漏安全) 思维导图 PHP知识点 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框…

关于出国留学和考研比较----以本人双非跨考计算机为例

文章目录 中心论点国内就业现状勿让旧认知害了自己那出国留学真的一无是处了吗?1. 藤校仍旧是具有极高价值2. 时间成本低3. 研究生一定比单纯的本科找工作强!4. 很多人说出国读博好,可以无脑入,真是这样吗? 中心论点 如果在选择出国留学还是国内考研的最终核心诉求都是有更好…

向量的内积、长度、正交性

目录 向量的内积 向量的长度&#xff08;模&#xff09; 标准正交基 标准正交化 正交矩阵 向量的内积 向量的长度&#xff08;模&#xff09; 标准正交基 标准正交化 正交矩阵

JavaWeb——014SpringBoot原理(配置优先级、Bean管理、SpringBoot原理)

SpingBoot原理 目录 SpingBoot原理1. 配置优先级2. Bean管理2.1 获取Bean2.2 Bean作用域2.3 第三方Bean 3. SpringBoot原理3.1 起步依赖3.2 自动配置3.2.1 概述3.2.2 常见方案3.2.2.1 概述3.2.2.2 方案一3.2.2.3 方案二 3.2.3 原理分析3.2.3.1 源码跟踪3.2.3.2 Conditional 3.2…

超市小程序有哪些功能 怎么制作

超市小程序是非常有用的工具&#xff0c;可以帮助超市提升用户体验&#xff0c;提高销售额。下面我们来看一下超市小程序可以具备哪些功能&#xff0c;以及如何制作一个高效的超市小程序。 1. **商品展示与搜索功能**&#xff1a;用户可以浏览超市的商品信息&#xff0c;包括价…

同等学力申硕专业介绍——管理学硕士

同等学力申硕的专业很多。 目前有十三大门类&#xff0c;分别是医学、法学、管理学、工学、教育学、经济学、艺术学、文学、历史学、理学、哲学、农学、军事学等&#xff0c;每个大门类中都有很多的细分专业。 今天为大家介绍同等学力申硕专业——管理学。 专业介绍 管理学是…

【学习记录】PointLIO代码 update_iterated_dyn_share_modified 中函数指针的用法

最近在看PointLio的代码&#xff0c;有一部分看了半天没看懂&#xff0c;学习整理如下。 1、PointLio在迭代卡尔曼部分的代码 在esekfom.hpp中&#xff0c;有部分代码如下&#xff1a; void init_dyn_share_modified(processModel f_in, processMatrix1 f_x_in, measurement…

上班族真香副业:工资4500,靠steam游戏搬砖项目月入过w

steam游戏搬砖项目已经存在好多年了&#xff0c;这个项目比较冷门且能持续稳定盈利&#xff0c;是一个非常不错的项目。即使你没玩过steam游戏也没关系&#xff0c;这个steam游戏搬砖项目既不需要你会玩游戏&#xff0c;也不需要你懂英语。 steam游戏搬砖项目的盈利点在汇率差和…

Python的数据库编程基础知识

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;如果停止&#xff0c;就是低谷&#xf…

【代码随想录算法训练营Day29】 491.递增子序列;46.全排列;47.全排列 II

文章目录 ❇️Day 29 第七章 回溯算法 part05✴️今日内容❇️491.递增子序列自己的思路随想录思路自己的代码 ❇️46.全排列思路代码流程 ❇️47.全排列 II思路代码 ❇️Day 29 第七章 回溯算法 part05 ✴️今日内容 491.递增子序列46.全排列47.全排列 II ❇️491.递增子序…

【性能测试】Jmeter+InfluxDB+Grafana 搭建性能监控平台

一、背景 为什么要搭建性能监控平台&#xff1f; 在用 Jmeter 获取性能测试结果的时候&#xff0c;Jmeter自带的测试报告如下&#xff1a; 这个报告有几个很明显的缺点&#xff1a; 只能自己看&#xff0c;无法实时共享&#xff1b;报告信息的展示比较简陋单一&#xff0c;不…

在外包公司搞了2年,出来技术都没了...

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了2年的的功能…

网络工程师笔记9

动态路由 RIP路由协议 配置简单 易于维护 适用于小型网络 周期性是30s发一次

MyBatis-Plus如何娴熟运用乐观锁

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 MyBatis-Plus如何娴熟运用乐观锁 前言乐观锁的基本概念基本概念和原理&#xff1a;为何乐观锁是解决并发问题的有效手段&#xff1a; MyBatis-Plus中乐观锁的支持1. Version 注解&#xff1a;2. 配置乐…

严刑拷打_微服务

文章详情 &#xff1a;&#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a; 微服务相关知识 ⏱️ 创作时间&#xff1a;2024年03月8日 ———————————————— 文章目…

高级语言讲义2014计专(仅高级语言部分)

1. 已知&#xff0c;连续函数在区间[0, 3]有且只有一个实根&#xff0c;编写完整程序&#xff0c;利用二分法计算并输出该实根的近似值&#xff0c;要求结果精确到。 二分法的基本思路是:对于区间[a, b]上的连续函数f(x)&#xff0c;若f(a)和f(b)的正负号不同&#xff0c;则该区…

unicloud where 使用

where介绍 在uniCloud中&#xff0c;WHERE是一个用于指定查询条件的关键字。它允许用户根据特定的条件来筛选和查询云数据库中的数据。WHERE语句的基本语法格式是WHERE condition&#xff0c;其中condition表示查询条件&#xff0c;可以是一个或多个逻辑表达式组成的条件。 在…

达梦数据库将DMHR模式下的表(迁移)导出为EXCEL文件

数据库迁移工具&#xff08;Data Transfer Service&#xff09;位于/dm8/tool/dts.其中/dm8是数据库安装目录。 在创建数据库时我们如果勾选了 “创建示例库DMHR(R)”&#xff0c;数据库实例中就带有这个数据库。 这里是用MobaXterm客户端远程控制ip地址为192.168.148.130的虚…

【C++】C++11---右值引用和移动语义

目录 1、什么是左值引用和右值引用2、左值引用与右值引用比较3、右值引用使用场景和意义4、右值引用引用左值的分析5、完美转发 1、什么是左值引用和右值引用 传统的C语法中就有引用的语法&#xff0c;而C11中新增了的右值引用语法特性&#xff0c;所以从现在开始我们之前学习…

Xilinx 7系列 FPGA硬件知识系列(九)——FPGA的配置

目录 1 .1配置模式 1.1.1 主模式 1.1.2 从模式 1.2 7种配置模式 1.2.1 主串配置模式 1.2.2 从串配置模式 ​编辑1.2.3 主并配置模式 1.2.4 从并配置模式 1.2.5 JTAG配置模式 ​编辑1.2.6 主SPI配置模式 ​编辑1.2.7 主BPI配置模式 1.2.8 FPGA BPI加载时间…