【自监督论文阅读笔记】Unsupervised Learning of Dense Visual Representations

news2024/9/28 9:23:19

Abstract

        对比自监督学习已成为无监督视觉表示学习的一种有前途的方法。通常,这些方法学习全局(图像级)表示,这些表示对于同一图像的不同视图(即数据增强的组合)是不变的。然而,许多视觉理解任务需要密集(像素级)表示。在本文中,我们提出了 视图无关的密集表示 (VADeR),用于密集表示的无监督学习VADeR 通过 强制局部特征在不同的观察条件下保持不变 来学习像素表示。具体来说,这是通过 像素级对比学习 实现的匹配特征(即在不同视图上描述场景相同位置的特征)在嵌入空间中应该靠近,而非匹配特征应该分开。 VADeR 为密集预测任务提供了自然表示,并能很好地迁移到下游任务。我们的方法在多个密集预测任务中优于 ImageNet 监督预训练(和强大的无监督基线)。


1 Introduction

        自从引入像 ImageNet [9] 这样的大规模视觉数据集以来,计算机视觉领域的大部分成功主要是由监督学习驱动的。不幸的是,大多数成功的方法都需要大量标记数据,这使得它们的扩展成本很高。为了利用大量未标记数据并打破这一瓶颈,提出了无监督和半监督学习方法

        最近,基于对比学习的自监督方法 [23] 在计算机视觉问题上显示出可喜的结果 [73、55、30、80、29、63、1、26、49、5]。对比方法 学习 图像视图之间的相似性函数——在表示空间中拉近同一图像的视图,同时将其他图像的视图推开视图的定义因方法而异,但视图通常是从计算机视觉中常用的一组数据增强过程中提取的

        当前的对比自监督方法 有一个共同点相似性分数是在视图的全局表示之间计算的(通常通过最终卷积层上的全局池化操作)。参见图 1a。全局表示的计算效率很高,但提供了对 像素级变化 不变 的 低分辨率特征。这对于像图像分类这样的少数任务来说可能已经足够了,但对于密集的预测任务来说还不够

        与全局表示相反,密集表示在像素级别产生编码。它们提供了一种在训练期间利用视觉感知 [70] 中固有空间结构的自然方式(例如,附近的像素往往具有相似的外观,对象边界具有强梯度,以对象为中心的属性)。此外,许多(可以说是大多数)视觉理解任务依赖于结构化、密集的表示(例如像素级分割、深度预测、光流预测、关键点检测、视觉对应)。

        在本文中,我们提出了一种密集表示的无监督学习方法。关键思想利用 perceptual constancy 感知恒常性 [56]——即 局部视觉表征 在不同观察条件下 应保持不变的思想——作为训练神经网络的监督信号。感知恒常性在视觉感知中无处不在,并提供了一种根据光学结构的不变量来表示世界的方法 [18, 69]。场景的局部表示(例如,狗的眼睛)应该 相对于观察场景的视角保持不变

        我们的方法——视图不可知的密集表示法(VADeR)——通过 对比局部表征 来强制知觉恒常性。这里,匹配特征(即,在不同视图上描述场景的相同位置的特征)的表示在嵌入空间中应该是接近的,而非匹配特征应该是分开的。我们的方法 利用 从视图生成过程中 得到的已知像素对应关系,在每对视图中寻找匹配特征。VADeR可以 被视为 先前对比自监督方法的一种泛化在某种意义上,它学习密集(即,每像素)特征,而不是全局特征。图1b描述了我们的通用方法,并将其与常见的对比方法进行了比较。

        VADeR 为密集预测任务提供自然表示。我们通过查看学习到的特征如何转移到下游任务来评估其性能,无论是作为特征提取器还是用于微调。我们表明,密集表示的(无监督)对比学习在许多视觉理解任务(实例和语义分割、对象检测、关键点检测、对应和深度预测)中比其全局表示更有效。也许更有趣的是,VADeR 无监督预训练在不同任务上优于 ImageNet 监督预训练


2 Related Work

自监督学习。

        自监督学习是一种无监督学习形式,它利用数据的内在结构作为训练的监督信号。它包括制定一个 预测性的前置任务,并 以类似于监督学习的方式 学习特征。最近提出了范围广泛的前置任务。例如,[65, 57, 78, 2] 用噪声破坏输入图像 并 训练神经网络重建输入像素。对抗性训练 [20] 也可用于无监督表示学习 [16、12、13]。其他方法依靠启发式方法来设计前置任务,例如图像着色 [77]、相对块预测 [10]、解决拼图游戏 [52]、聚类 [3] 或旋转预测 [19]

        最近,基于对比学习的方法[23]显示了学习无监督视觉表征的有希望的结果。在这一系列方法中,前置任务是区分图像的兼容(相同实例)和不兼容(不同实例)视图,尽管视图的定义因方法而异。 对比预测编码(CPC) [55,29]已应用于顺序数据(空间和时间),并将视图定义为过去或未来的观察。DeepInfomax [30,1]通过 对比来自同一图像全局(整个图像)和局部(小块)特征 来训练网络。

        其他方法 [11、73] 提出了 [15] 的非参数版本,其中训练网络以区分数据集中的每个实例。特别是,InstDisc [73] 依靠 噪声对比估计 [22] 来 对比同一实例的视图(图像变换的组合)和不同实例的视图。作者提出了一个内存库 来存储每个实例的特征,以在训练期间有效地考虑大量负样本(来自不同图像的视图)许多作品都遵循这种方法并使用内存库对负样本进行采样,无论是考虑相同的视图定义 [80、74、26] 还是不考虑 [63、49] SimCLR [5] 也将视图视为图像变换的随机组合,但不使用内存库,而是通过使用更大的批次来提高性能。我们的方法可以看作是这些方法的改编,我们在其中学习像素级而不是图像级的 对视图不变的特征


密集的视觉表示。

        SIFT [46] 和 HOG [8] 等手工制作的特征已大量 用于涉及密集对应的问题 [43、68、35、32]。 Long 等人 [45] 表明,在大型数据集上进行分类训练的深层特征 可以 找到对象实例之间的对应关系,其性能 与 SIFT Flow [43] 等手工制作的方法 相当。这激发了许多关于训练深度网络以学习密集特征的研究 [25、75、76、6、34、53、60、64、54],但这些方法通常需要标记数据并且具有非常专业的架构。特别是,[34] 利用对应流(由图像转换生成)来解决关键点匹配问题。

        最近,已经提出了 学习结构化表示的 无监督/自监督方法。在 [79] 中,作者提出了一种通过 3D 引导的循环一致性学习密集对应的方法。一些工作通过利用时间信号来学习特征,例如,通过学习光流 [14]、为未来帧着色 [66]、光流相似性 [47]、对比预测编码 [24] 或时间周期一致性 [67、40]。其他人提出了自监督的方法来学习 对关键点 [62、33、61、48] 或 部分 [31] 进行编码的 结构化表示。我们的方法在使用的数据、损失函数 和 总体高级目标方面不同于以前的方法。 VADeR 学习可应用于不同下游任务的一般像素级表示。此外,我们的方法不需要特定数据(例如视频 或人脸分割图像)进行训练。


3 Method

        我们的方法 VADeR 通过 强制 像素表示与视角无关 来学习隐空间。这种不变性是在训练期间通过 对比损失 最大化同一场景的不同视图之间的每像素相似性 而施加的。从概念上讲,一个好的像素级嵌入 应该 将语义相似的像素 映射到彼此靠近的位置。图 2 显示了 VADeR 学习的表示的选定结果。这些定性示例表明,VADeR 可以在一定程度上 独立于视角和外观 且无需任何监督地 聚集少量高级视觉概念(如狗的眼睛、天鹅的喙、猫的耳朵)。在下文中,我们首先描述我们如何学习与视角无关的密集特征。然后我们描述我们的架构和实现细节。


3.1 与视图无关的密集表示

         我们用元组 (x,u) 表示图像  中的像素 u。我们遵循当前的自监督对比学习文献 [73、26、5],并 将 “view视图” 定义为应用于图像(及其像素)的数据变换的随机组合。令 (vx,vu) 为在 (x,u) 上应用 视图 v 的结果。视图 可以修改图像(及其像素)的外观(例如像素级噪声、照明变化、饱和度、模糊、色调)和 几何形状(例如仿射变换、单应性、非参数变换)

        令 f 和 g 为编码器-解码器卷积网络,为图像中的每个像素生成 d 维嵌入,即  。 f 和 g 的参数可以共享、部分共享或完全不同。我们的目标是学习一个嵌入函数,该函数将 (x,u) 编码为 相对于 包含原始像素 u 的任何视图 不变的表示。也就是说,对于每个像素 u 和每个视角对 。为了简化符号,我们将像素级嵌入写为  和 。理想情况下,我们希望满足以下约束: 

其中 u 和 u' 是不同的像素,c(·,·) 是表示之间兼容性的度量。 

        在实践中,上述约束是 通过逐像素特征的对比学习 来实现的。对比损失函数 有不同的实例[39],例如边际损失、对数损失、噪声对比估计(NCE)。在这里,我们 调整 NCE 损失 [22, 55] 以 在逐像素表示之间形成对比。直观上,NCE 可以看作是一个二元分类问题,其目标是区分兼容视图(同一像素的不同视图)和 不兼容视图(不同像素的不同视图)。 

        对于每个像素 (x,u),我们构造 一组 N 个随机负像素 。像素 u 和 u ^{_{}^{-}}损失函数可写为:

        我们认为兼容性度量是温度校准的余弦相似性,,其中 τ 是温度参数。通过使用一个简单的、非参数的兼容性函数,我们将表示学习的所有负担都放在了网络参数上

        这种损失函数 迫使 像素的表示 与同一像素的其他视图 比 其他像素的视图 更兼容。最终损失 包括 最小化数据集每个图像上每个像素的经验风险


3.2 实施细节

Sampling views.

        我们认为视图是 (i) 外观变换(随机高斯模糊、颜色抖动和/或灰度转换)和 (ii) 几何变换(随机裁剪,然后调整大小为 224×224)的组合。在这项工作中,我们 使用与 [26 MoCo] 中相同的变换

        通过对每个训练图像的视图对进行采样 并 确保至少 32 个像素属于两个视图 来生成正训练对(我们尝试了每对不同的最小匹配像素数,并且没有注意到性能上的任何数量差异)。像素级匹配的监督是免费的:这两个视图在它们之间 引入了对应关系图。我们 使用这个对应图 来找到 这对视图之间的匹配特征,并 将每个匹配的视图对 视为正训练样本

        如果我们考虑 逐像素的表示,则 负样本的数量尤为重要,因为现代数据集中的像素数量很容易达到数千亿的数量级。在初步实验中,我们尝试使用同一图像的不同像素作为负样本,但未能成功。我们认为使用来自其他图像的像素 对于负样本 更自然,并且它 非常适合使用 负样本队列 的情况。我们使用最近提出的 动量对比机制 [26] 在训练期间有效地使用大量负样本。关键思想是 将负样本表示为包含一组代表性负样本的大型动态字典队列,并将编码器 g 建模为 f 的基于动量的移动平均值。按照 [26],我们将字典的大小设置为 65,536,并使用 0.999 的动量。我们观察到与 [26] 中报告的内存库大小相关的类似行为。


Architecture.

        我们采用 特征金字塔网络(FPN) [41]作为我们的 编码器-解码器架构。FPN向标准网络(我们使用ResNet-50 [28]) 添加了一个轻量级的自上而下的路径,并生成了一个维度为256的特征金字塔(具有从1/32到1/4分辨率的四个比例)。类似于[36]的语义分割分支,我们将FPN的信息合并到单个密集输出表示中在金字塔的每个分辨率下,我们添加多个上采样块使得每个金字塔产生维度为128 且 比例为1/4的特征图 (例如,我们为分辨率为1/32的金字塔添加3个上采样块,为分辨率为1/8的金字塔添加1个上采样)。每个上采样模块由一个3 × 3卷积、group norm[71]、ReLU [50]和 2×双线性上采样组成。最后,我们 对金字塔表示进行逐元素求和,并通过最终的1×1卷积最终图像的维度为128,比例为1/4。由于我们在训练过程中使用大小为224×224的图像,因此由VADeR生成的特征图具有128×56×56的维度。 


Training.

        我们在ImageNet-1K [9] train split上训练我们的模型,包含大约1.28M的图像。用随机梯度下降优化f 的权重,权重衰减为0.0001,动量为0.9。我们使用4个批量大小为128的GPU 进行大约6M次迭代的训练。我们对编码器和解码器分别使用3e-7和3e-3的学习速率。我们将等式2乘以因子10,因为我们观察到,当使用非常少量的标签数据进行微调时,它会提供更稳定的结果。我们将温度τ设置为0.07。

        通过对随机图像和两个视图进行采样来生成训练样本。我们存储属于两个视图变换图像的像素之间的对应流。在通过网络转发每个视图之后,我们应用等式2中的损失将32对匹配的像素视为正对 (我们从所有匹配对中随机选择32对)负样本是来自MoCo队列的元素。然后,我们用SGD更新网络f 的参数,用 f 的权重的移动平均值更新 g 的权重。最后,我们更新动态字典的元素,并重复训练

        我们选择用 MoCo [26] 初始化VADeR编码器的权重,以提高训练速度解码器的权重是随机初始化的。我们认为MoCo是我们最重要的基线,有两个原因:(1)它是无监督视觉表示的当前技术水平,(2) 我们从MoCo初始化开始。我们还将我们的模型与在ImageNet-1K上用标签预先训练的ResNet-50 [28]进行了比较。MoCo包含与ResNet-50相同的容量,而由于解码器的原因,VADeR包含大约2M的额外参数


4 Experimental Results

        无监督学习的一个重要目标是学习可迁移到下游任务的特征。我们评估 VADeR 在 从识别到几何的 各种任务中 学习到的特征的质量(有关评估任务的示例,请参见图 3)。我们考虑两种迁移学习实验协议(i) 特征提取,我们评估固定的学习特征的质量,以及 (ii) 微调,我们使用学习的特征作为权重初始化,并对整个网络进行微调。对于每个实验,我们为 VADeR 和基线考虑相同的模型和超参数,仅更改固定特征或微调初始化。有关下游任务的数据集和实现的更多详细信息,请参阅补充材料。


4.1 Feature Extraction Protocol

语义分割和深度预测

         我们遵循自监督学习 [21、37] 的常见做法,并使用线性预测器 评估固定的图像表示的特征质量。线性分类器是一个 1×1 卷积层,可将特征转换为 logits(后面接 softmax)用于每像素分类(语义分割)或 转换为单个值用于每像素回归(深度预测)。我们用交叉熵训练语义分割任务,用 L1 损失训练深度预测。我们在两个数据集(PASCAL VOC12 [17] 和 Cityscapess [7])和一个深度预测数据集(NYU-depth v2 [51])中测试冻结特征。在所有数据集中,我们在提供的训练集 2 上训练线性模型并在验证集上进行评估。


4.2 Fine-tuning Protocol

         在本节中,我们比较了微调下游任务的功能有多好。所有基线都具有相同的 VADeR FPN 架构(如第 3.2 节所述),并使用相同的超参数和数据进行训练。除了权重初始化之外,其他一切都保持相同——这允许直接比较不同的初始化方法。我们将 VADeR 与两个编码器初始化进行比较:受监督的 ImageNet 预训练和 MoCo。与基线相反,VADeR 初始化 FPN 的编码器和解码器。在这些实验中,我们使用 [26] 中提出的微调设置:批归一化层使用 Sync Batch-Norm [58] 进行训练,我们在所有 FPN 层上添加批归一化。


目标检测、实例分割和关键点检测。

        我们使用 带有FPN主干 [41] 的Mask R-CNN [27]。所有方法都使用标准指标在 COCO [42] 上进行训练和评估。我们使用 Detectron2 [72] 的实现来进行训练和评估。我们使用 [72] 提供的默认超参数(为 ImageNet 监督预训练选择)训练一种用于目标检测/分割的模型和一种用于关键点检测的模型。所有模型都在大约 12 个时期(schedule 1x)的受控设置上进行训练。

        表 4 将 VADeR 与三项任务的基线进行了比较。 MoCo 已经是一个非常强大的基线,可实现与受监督的 ImageNet 预训练相似的性能。我们观察到 VADeR 在这些实验中始终优于 MoCo(和监督基线),显示出与全局表示相反,学习密集表示的优势


4.3 Ablation Studies

视图的影响。

        我们分析了在训练过程中正确匹配像素的重要性。表 3 显示了考虑三种像素匹配策略的结果。第一行(“不匹配”)忽略了同一场景的视图之间的对应关系图。它将随机像素对视为正对。第二行和第三行使用了正确的对应图。第二行(“相同视图”)始终考虑每对视图使用相同裁剪,而最后一行(“差异视图”)考虑不同的裁剪(具有不同的位置和比例)。 VADeR 默认使用第三种方法。报告了 Pascal VOC(以 mIoU 为单位)的语义分割和 DAVIS-2017(以区域相似性 J 为单位)的密集对应的结果。正如预期的那样,在视图之间使用随机像素匹配比使用正确的像素配对更糟糕(第 1 行与第 2 行和第 3 行)。我们还注意到,在配对视图(第 2 行与第 3 行)之间考虑相同或不同的裁剪时,识别任务的性能几乎没有变化。然而,对于对应关系,每个视图具有不同的裁剪提供了相当大的优势


5 Conclusion

        我们提出了 VADeR——View-Agnostic Dense Representations——用于密集表示的无监督学习。我们的方法通过 像素级对比学习 来学习表征。 VADeR 是 通过 强制匹配像素的表示(即来自描述同一位置的不同视图的特征)在嵌入空间中靠近,而不匹配的特征相距很远 来训练的。我们利用 从随机生成的场景视图中 导出的已知像素对应关系 来生成正对。定性的例子表明,VADeR特征可以发现高级视觉概念,语义分组可以从训练中出现,没有任何标签。我们表明,学习无监督的密集表示 对于下游像素级任务 比全局表示更有效。在从识别到几何的许多结构化预测任务中,与强基线相比,VADeR 取得了积极的成果。我们认为,学习无监督的密集表示对于涉及迁移学习的许多结构化问题 以及无监督或低数据机制问题很有用


6 Broader Impact

        我们的研究属于推进计算机视觉和场景理解的机器学习技术的范畴。我们专注于改善密集预测任务的图像表示,这包含了大量的基本视觉任务,如图像分割和目标检测。虽然使用这些应用程序可能有许多潜在的含义,但我们在这里讨论两个方面。首先,我们强调了在没有或很少标注数据的情况下,图像理解的一些社会含义。其次,我们提供了一些关于通用表征学习方法评估的基础研究问题的见解。

        使用未标记数据提高图像理解能力,特别是对于像素级任务,开辟了广泛的对社会有益的应用,而这些应用是其他方法无法解决的。由于需要非常专业的标记器,医学图像应用程序缺乏标记数据。另一个应用是处理有害的在线内容,包括但不限于恐怖宣传、仇恨言论、假新闻和错误信息,这对政府和企业来说是一个巨大的挑战。让这些问题变得特别困难的是,很难获得干净的标记数据来训练机器学习模型——想象一下在不幸的克赖斯特彻奇袭击中通过直播视频拍摄恐怖袭击。自监督学习可能会推动模型的发展,以检测极其罕见但极具影响力的事件。另一方面,这种技术可能被滥用于侵犯隐私和言论自由。我们承认这些风险是任何非道德技术的一个特征,我们邀请各国政府、决策者和所有公民——包括研究界——努力在这些利益和风险之间取得平衡。

        我们研究的另一个有趣的方面是 强调将表征学习方法与下游应用的性质相结合的重要性。通过我们的方法,我们表明,从未标记的数据学习像素级表示,我们可以在各种密集预测任务中胜过图像级方法。我们的研究结果强调,研究界应该超越有限的测试平台来评估通用表示学习技术。我们邀请进一步研究为此类方法开发综合评估协议。事实上,我们在计算机视觉领域看到了许多研究机会,例如开发一系列跨越各种几何和语义图像理解任务的标准化基准,以及设计可以弥合离线和在线性能差距的方法。

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

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

相关文章

PDF文件怎么转图片格式?转换有技巧

PDF文件有时为了更美观或者更直观的展现出效果,我们会把它转成图片格式,这样不论是归档总结还是存储起来都会更为高效。有没有合适的转换方法呢?这就来给你们罗列几种我个人用过体验还算不错的方式,大家可以拿来参考一下哈。1.用电…

vm 网络配置

点击NAT设置,配置本台虚拟机ip(注意网关要在同一个网段),配置对应端口 然后添加映射端口: 然后选择网络适配器 选择vm8网卡 配置网卡静态ip #查看网卡 ip addr #修改网卡配置 cd /etc/sysconfig/network-scripts…

DevData Talks | 对谈谷歌云 DORA 布道师,像谷歌一样度量 DevOps 表现

本期 DevData Talks 我们请到来自 Google Cloud 谷歌云的 DORA 研究团队的嘉宾 Nathen Harvey与 Apache DevLake、CNCF DevStream 的海外社区负责人 Maxim 进行对谈。如果您关注 DevOps 的话,也许对这个团队有所耳闻。 DORA 的全称是 DevOps Research and Assessme…

mysql lesson1

常用命令 1:exit 退出mysql 2:uroot pENTER键,再输入密码,不被别人看见 3:完美卸载:双击安装包,手动删除program file中的mysql,手动删除Programedate里的mysql 4:use mysql 使用数据库 5:…

InstallAware Multi-Platform updated

InstallAware Multi-Platform updated 原生ARM:为您的内置设置、IDE和整个工具链添加了Apple macOS和Linux ARM构建。 本地化:引擎内多语言感知,可再分发工具,具有资产隔离功能,使您的IP保持安全。 模板:将…

通信算法复习题纲

通信算法复习题1、当信源发送信号满足以下哪一项条件时,接收端采用最小距离准则进行判决等价于采用最大后验概率准则进行判决?2、OFDM系统的正交性体现在哪个方面?3、模拟信号数字化过程中,哪一步会引入量化噪声?4、OF…

考研复试机试 | c++ | 王道复试班

目录n的阶乘 (清华上机)题目描述代码汉诺塔问题题目:代码:Fibonacci数列 (上交复试)题目代码:二叉树:题目:代码:n的阶乘 (清华上机) …

汽车电子社区交流宣传

http://t.csdn.cn/VSLO0http://t.csdn.cn/VSLO0 当今的汽车行业已经进入了数字化时代,汽车电子软件的开发变得越来越重要。在这个领域,开发者们需要应对各种挑战,包括复杂的硬件和软件交互、高效的嵌入式编程和安全性要求。为了帮助汽车电子…

Android Bluetooth(一)——蓝牙的开启和搜索

Android Bluetooth(一)——蓝牙的开启和搜索Android Bluetooth(一)——蓝牙的开启和搜索概览设置蓝牙蓝牙权限设置蓝牙查找设备查询已配对设备发现设备启用可检测性Android Bluetooth(一)——蓝牙的开启和搜…

Git系列——Git理论

概述Git 是一个开源的分布式版本控制系统, 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git没有中央版本库的概念,每个客户端都可成为版本库,内部采用全量方式对文件的每次提交建立快照并存储&#x…

探索开源:获取完整的 GitHub 社区数据集

本篇文章聊聊 GitHub 开放数据集的获取和整理,分享一些数据整理的细节技巧,以及一些相对粗浅的数据背后的事情。 写在前面 分析 GitHub 上的项目和开发者获取是深入、真实的了解开源世界演进的方法之一。 在 GHArchive 项目中,我们能够看到…

什么是知识库,内部知识库和外部知识库各有什么优势?

知识库的定义在互联网的整个历史中多次发生变化。起初,它是一个术语,用于描述比通用关系“数据库”更先进的任何复杂数据存储系统。现在,随着SaaS的出现,知识库一词的含义更加不同。根据定义,知识库是一个自助服务存储…

Java多线程(二)--线程相关内容

1.创建线程的几种方式继承 Thread 类;public class MyThread extends Thread { Override public void run() {System.out.println(Thread.currentThread().getName() " run()方法正在执行..."); }实现 Runnable 接口;public class MyRunnable…

Vue使用ECharts

Vue简介 Vue文档 vue是一款用于构建用户界面的JavaScript框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。 ECharts简介 快…

Elasticsearch7.8.0版本进阶——近实时搜索

目录一、近实时搜索的概述1.1、按段(per-segment)搜索1.2、更轻量的方式搜索二、为什么Elasticsearch是 近 实时搜索三、如何解决索引了一个文档然后却没有搜到四、哪种情况不需要每秒刷新4.1、使用 Elasticsearch 索引大量的日志文件4.2、使用 Elastics…

说一下this,实现apply、call

理解this 在ES5中,this的指向始终坚持一个原理:“this永远指向最后调用它的那个对象”,切记这句话。下面看几个例子。 例一 var obj {name: zhangsan,say: function() {console.log(this.name);} }obj.say() // zhangsan 最基本的使用&am…

突破年薪百万难关!吃透这套Java真题合集

前言我相信大多 Java 开发的程序员或多或少经历过BAT一些大厂的面试,也清楚一线互联网大厂 Java 面试是有一定难度的,小编经历过多次面试,有满意的也有备受打击的。因此呢小编想把自己这么多次面试经历以及近期的面试真题来个汇总分析&#x…

【软考——系统架构师】架构、系分、软设的区别和联系

🔎这里是【软考——系统架构师】,关注我考试轻松过线 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 文章目录👀三科相同点👀三科不同点--上午题&am…

【Classical Network】EfficientNetV2

原文地址 原文代码 pytorch实现1 pytorch实现2 详细讲解 文章目录EfficientNet中存在的问题NAS 搜索EfficientNetV2 网络结构codeEfficientNet中存在的问题 训练图像尺寸大时,训练速度非常慢。train size 512, batch 24时,V100 out of memory在网络浅…

联想笔记本无法下载 Lenovo Vantage

状况 在 Microsoft Store 下载时发生错误,可能是如下代码:0x80070005, 0x80073D05, or 0x80070017. 解决方法 1.在“开始”菜单搜索栏中输入PowerShell 2.当Windows PowerShell出现在“开始”菜单中,右键点击此图标,然后选择以…