Conditional DETR论文笔记

news2024/10/30 9:31:01

原文链接

[2108.06152] Conditional DETR for Fast Training Convergenceicon-default.png?t=O83Ahttps://arxiv.org/abs/2108.06152

原文笔记

What

《Conditional DETR for Fast Training Convergence》

这个工作也是针对于DETR Query的工作 用于解决DETR训练收敛慢(Object query需要长时间才能建立能有效感知图片信息的注意力图,这主要是是因为:1、Object Query的初始化与image feature的无关初始化,2、未能指定Object Query中的位置嵌入正确的关注指定的区域)

Why

DETR存在以下问题

1、对于模型训练时间长,主要原因有两方面,一个是大量的注意力计算,一个是模型的结构复杂,参数量多

2、模型的结构复杂,参数量多,收敛的慢:这是由于decoderquery的全0初始化,导致必须要6decoder去进行cross的信息交互(该论文仍然采用6层的解码器)

3、检测小物体效果不好:DETR是因为不设计多尺度特征,而这个问题并没有解决(该论文仍然采用没有关注多尺度的注意力)

Challenge

检测框的高回归率,分类结果的高准确率

Idea

1、仍然使用全局密集注意力,并提出了一种改进的解码器交叉注意机制来加速训练过程。

(其实他这里是说的比较好听是提出新的解码器交叉注意力机制,实际上是改了一下key进而query的内容编码的组合方式(从add变成了concat,进而将他的最终的交叉注意力权重就可以变成两部分,一部分是内容注意力权重,一部分是空间注意力权重)

2、对于本文提出的重点内容——空间注意力,核心是这段话:一个重要的任务是从前一个解码器层的嵌入 f 计算空间查询 pq。我们首先确定不同区域的空间信息由解码器嵌入和参考点这两个因素共同决定。然后我们展示了如何将它们映射到嵌入空间,形成查询 pq ,以便空间查询与key的2D坐标映射到的空间位于同一空间中。(在第一个交叉注意力层中,没有解码器内容嵌入,我们基于 DETR 实现 [3] 进行了简单的更改:将对象查询(位置嵌入)预测的位置嵌入连接到原始查询(键)。)

3、具体的计算过程见下边的原文

再一个就是

文中的 decoder embedding指的是detr中的tgt,content query指的是detr中的query的pos_embed(也被称为object query)

原文翻译

Abstract

最近开发的DETR方法将变压器编码器和解码器架构应用于目标检测,取得了良好的性能。在本文中,我们解决了关键问题,训练收敛缓慢,并提出了一种条件交叉注意机制来实现快速DETR训练。我们的方法的动机是 DETR 中的交叉注意力高度依赖于内容嵌入来定位四肢并预测框,这增加了对高质量内容嵌入的需求,从而增加了训练难度。

我们的方法名为条件 DETR,从解码器嵌入(decoder embedding)中学习条件空间查询(a conditional spatial query),用于解码器多头交叉注意力。好处是,通过条件空间查询,每个交叉注意力头都能够处理包含不同区域的波段,例如对象末端或对象框内的区域。这缩小了空间范围,用于定位不同区域用于对象分类和框回归的,从而放松了对内容嵌入的依赖并简化了训练。实证结果表明,对于主干R50和R101,条件DETR收敛速度快6.7倍,对于更强的主干DC5-R50和DC5-R101快10倍。代码可在https: //github.com/Atten4Vis/ConditionalDETR获得。

1. Introduction

检测变压器(DETR)方法[3]将变压器编码器和解码器架构应用于目标检测,取得了良好的性能。它有效地消除了对许多手工制作的组件的需求,包括非最大抑制和锚生成。

DETR 方法在训练中收敛缓慢,需要 500 个训练时期才能获得良好的性能。最近的工作,可变形DETR[53],通过将全局密集注意力(自注意力和交叉注意力)替换为处理一小组键采样点并使用高分辨率和多尺度编码器的可变形注意力来处理这个问题。相反,我们仍然使用全局密集注意力,并提出了一种改进的解码器交叉注意机制来加速训练过程。

我们的方法的动机是对内容嵌入的高度依赖性和交叉注意中的空间嵌入做出的微小贡献。DETR [3] 中的实证结果表明,如果从第二个解码器层中删除键中的位置嵌入和对象查询,并且仅使用键和查询中的内容嵌入,则检测 AP 仅仅略有下降 1。

图 1(第二行)显示,在 50 个 epoch 训练的 DETR 中,来自交叉注意力的空间注意力权重图。可以看到,四个映射中的两个不能正确地突出相应四肢的波段,因此,在缩小内容查询的空间范围以精确定位四肢方面很弱。原因是(i)空间查询,即对象查询,只给出一般的注意权重图,而不利用特定的图像信息;(ii)由于训练轮数少,内容查询不够强,无法匹配空间键,因为它们也用于匹配内容键。这增加了对高质量内容嵌入的依赖,从而增加了训练难度。

我们提出了一种条件DETR方法,该方法从相应的先前解码器输出嵌入中学习每个查询的条件空间嵌入,以形成所谓的条件空间查询用于解码器多头交叉注意。通过将用于回归对象框的信息映射到嵌入空间来预测条件空间查询,这与键的二维坐标也映射到的空间相同。

我们凭经验观察到,使用空间查询和键,每个交叉注意力头在空间上关注包含对象四肢或对象框内的区域(图 1,第一行)。这缩小了内容查询的用于定位有效区域去分类和预测边界框的空间范围,因此,放宽了对内容嵌入的依赖,训练更容易。实验结果表明,对于主干R50和R101,条件DETR收敛速度快6.7倍,对于更强的主干DC5-R50和DC5-R101快10倍。图2给出了条件DETR和原始DETR[3]的收敛曲线。

2. Related Work

Anchor-based and anchor-free detection.大多数现有的对象检测方法都是从精心设计的初始猜测中进行预测。有两个主要的初始猜测:锚框对象中心。基于锚框的方法继承了基于提议的方法 Fast R-CNN 的想法。示例方法包括Faster R-CNN[9]、SSD[26]、YOLOv2[31]、YOLOv3[32]、YOLOv4[1]、RetinaNet[24]、Cascade R-CNN[2]、Libra R-CNN[29]、TSD[35]等。

无锚检测器预测对象中心附近的点的框。典型的方法包括YOLOv1[30]、CornerNet[21]、ExtremeNet[50]、CenterNet[49,6]、FCOS[39]等[23,28,52,19,51,22,15,46,47]。

DETR and its variants.DETR成功地将变压器应用于目标检测,有效地消除了对许多手工设计的组件的需求,如非最大抑制或初始猜测生成。由全局编码器自注意引起的高计算复杂度问题在自适应聚类变压器[48]中和在可变形DETR[53]中的稀疏注意处理。

另一个关键问题,训练收敛缓慢,引起了最近的许多研究关注。TSP(基于变压器的集合预测)方法[37]消除了交叉注意模块,并结合了FCOS和R-CNN样检测头。可变形 DETR [53] 采用可变形注意力,它关注从内容嵌入中学习到的稀疏位置,以取代解码器交叉注意力。

与我们的方法同时进行的空间调制共同注意 (SMCA) 方法 [7] 非常接近我们的方法。它使用从解码器嵌入学习的几个(移位)中心周围的高斯图调制 DETR 多头全局交叉注意力,以更多地关注估计框内的几个区域。相比之下,所提出的条件 DETR 方法从解码器内容嵌入中学习条件空间查询,并在不手工制作注意力衰减的情况下预测空间注意力权重图,这突出了框回归的四个末端,以及对象内部的不同区域进行分类。

Conditional and dynamic convolution.所提出的条件空间查询方案与条件卷积核生成有关动态滤波网络[16]从输入中学习卷积核,应用于CondInst[38]和SOLOv2[42]中的实例分割,用于学习依赖于实例的卷积核。CondConv[44]和动态卷积[4]将卷积核与输入学习到的权值混合。SENet [14], GENet [13] abd Lite-HRNet [45] 从输入中学习通道权重。

这些方法从输入中学习卷积核权重,然后将卷积应用于输入。相比之下,我们的方法中的线性投影是从解码器嵌入中学习的,用于表示位移和缩放信息。

Transformers.transformer模型依赖注意力机制,自注意力和交叉注意力,去建立输入和输出之间的全局依赖关系。有几种方法与我们的方法密切相关。高斯变压器[11]和T-GSA(具有高斯加权自我注意的变压器)[18],然后是SMCA[7],根据目标符号和上下文符号与学习或人工高斯方差之间的距离衰减注意权重。与我们的类似,TUPE [17] 也从空间注意力权重和内容注意力权重计算注意力权重。相反,我们的方法主要关注高斯函数以外的可学习形式的注意力衰减机制,并可能有利于语音增强[18]和自然语言推理[11]。

3. Conditional DETR

3.1. Overview

Pipeline.所提出的方法遵循检测转换器 (DETR),这是一种端到端的对象检测器,无需 NMS 或锚点生成即可一次预测所有对象。该架构由一个 CNN 主干、一个转换器编码器、一个转换器解码器和对象类和框位置预测器组成。Transformer 编码器旨在改进 CNN 主干输出的内容嵌入。它是多个编码器层的堆栈,其中每一层主要由自注意力层和前馈层组成。

Transformer 解码器是一堆解码器层。每个解码器层,如图 3 所示,由三个主要层组成:(1)用于去除重复预测的自注意力层,该层执行嵌入之间的交互,从前一个解码器层输出并用于类和框预测,(2)一个交叉注意力层,聚合编码器的输出来细化解码器嵌入以改进类和框预测,以及(3)前馈层。

Box regression.从每个解码器嵌入预测一个候选框,如下所示,

这里,f 是解码器嵌入。b 是一个四维向量 [bcx bcy bw bh]⊤,由框中心、框宽度和框高度组成。sigmoid() 用于将预测 b 归一化到 [0, 1] 的范围内。FFN() 旨在预测非归一化框。s 是参考点的非归一化 2D 坐标,在原始 DETR 中为 (0, 0)。在我们的方法中,我们考虑两种选择:学习参考点 s 作为每个候选框预测的参数或从相应的对象查询中生成它。

Category prediction.每个候选框的分类分数也由通过 FNN 嵌入的解码器预测,e = FFN(f)。

Main work.交叉注意力机制目的在于定位不同的区域,为了框检测定位四个端点,定位框内部的区域去进行物体分类,并且聚合相应的嵌入,我们提出一个条件交叉注意力机制,通过引入条件空间查询来提高定位能力并且加快训练过程。

3.2. DETR Decoder Cross-Attention

DETR 解码器交叉注意机制接受三个输入:查询、键和值。每个都是通过相加一个内容键ck(来自编码器的内容嵌入输出)和空间键pk(对应归一化2D坐标的位置嵌入)来形成的。由内容嵌入组成,像内容键一样,他们都使来自于编码器的输出。

在原始 DETR 方法中,每个查询都是通过相加内容查询 cq(解码器自注意力的嵌入输出)和空间查询 pq(即对象查询 oq )来形成的。在我们的实现中,有 N = 300个对象查询,相对应的有N=300个 查询 每个查询在每一个解码器层输出一个候选的检测结果

注意力权重基于查询和键之间的点积,用于注意力权重计算,

3.3. Conditional Cross-Attention

所提出的条件交叉注意机制通过拼接内容查询 cq (解码器自注意力输出)和空间查询 pq 来形成查询。对应的,键形成为内容键ck和空间键pk的拼接

交叉注意力权重由两部分组成,内容注意力权重和空间注意力权重。这两个权重来自两个点积、内容和空间点积,

与原始 DETR 交叉注意不同,我们的机制分离了内容和空间查询的作用,以便空间查询和内容查询分别关注空间和内容注意力权重。

另一个重要的任务是从前一个解码器层的嵌入 f 计算空间查询 pq。我们首先确定不同区域的空间信息由解码器嵌入和参考点这两个因素共同决定。然后我们展示了如何将它们映射到嵌入空间,形成查询 pq ,以便空间查询与key的2D坐标映射到的空间位于同一空间中。

The decoder embedding contains the displacements

解码器嵌入包含不同区域相对于参考点的位移。等式 1 中的框预测过程包括两个步骤:(1)预测相对于非归一化空间中的参考点的框,以及(2)将预测框归一化到 [0, 1] 的范围内。

步骤 (1) 表示解码器嵌入 f 包含四个末端(形成框)相对于非归一化空间中的参考点 s 的位移。这意味着嵌入 f 和参考点 s 都需要确定不同区域的空间信息、四肢以及用于预测分类分数的区域。

Conditional spatial query prediction.

我们从嵌入 f 和参考点 s 预测条件空间查询,

使其与将键的归一化2D坐标映射到的位置空间对齐,该过程如图 3 的灰色阴影区域所示。

我们对参考点 s 进行归一化,然后将其映射到 256 维正弦位置嵌入,其方式与键位置嵌入相同:

然后,我们通过由可学习的线性投影 + ReLU + 可学习的线性投影组成的 FFN 将解码器嵌入 f 中包含的位移信息映射到同一空间中的线性投影:T = FFN(f)。

条件空间查询是通过将参考点转换到嵌入空间计算得到的Pq=Tps.我们选择选择简单并且计算高效的投影矩阵,即一个对角矩阵。这个256个对角元素被写作向量λq.条件空间查询通过下式的元素间乘法计算得到:

Multi-head cross attention.在 DETR [3] 之后,我们采用标准的多头交叉注意机制。对象检测通常需要隐式或显式地定位四个对象末端,以进行准确的框回归,并对对象区域进行定位,以实现准确的对象分类。多头机制有利于解开定位任务。

我们通过将查询、键和值 M = 8 次通过可学习的线性投射层投影到低维来执行多头并行注意力。空间查询和内容查询(键)通过不同的线性投影层分别投影到每个头部。值的投影与原始 DETR 相同,这个相同仅适用于内容。

3.4Visualization and Analysis

Visualization.图 4 显示了每个头部的注意力权重图:空间注意力权重图、内容注意力权重图和组合注意力权重图。这些映射在空间点积 p⊤q pk、内容点积 c⊤q ck 和组合点积 c⊤q ck + p⊤q pk 上进行归一化。我们展示了 8 个地图中的 5 个,其他三个是重复项,对应于底部和顶部末端,以及对象框 4 内的一个小区域。

我们可以看到,每个头部的空间注意力权重图能够定位一个不同的区域,一个区域包含一个四肢或对象框内的区域。有趣的是,对应于四肢的每个空间注意力权重图都突出了与对象框的相应边缘重叠的空间波段。对象框内区域的其他空间注意力图仅突出显示一个小区域,其表示可能已经编码了足够的信息以进行对象分类。

四肢对应的四个头部的内容注意力权重图除了四肢外,还突出了分散的区域。空间和内容映射的组合过滤掉了其他亮点,并保留四肢亮点以实现准确的框回归。

Comparison to DETR.图 1 显示了我们的条件 DETR(第一行)和使用 50 个 epoch(第二行)训练的原始 DETR 的空间注意力权重图。我们的方法的映射是通过对空间键和查询之间的点积进行软极大归一化来计算的,Pq⊤Pk。DETR的映射是通过软最大值计算的,用空间键(oq + cq)⊤pk对点积进行归一化。

图 1 显示了我们的条件 DETR(第一行)和使用 50 个 epoch(第二行)训练的原始 DETR 的空间注意力权重图。我们的方法的映射是通过对空间键和查询之间的点积进行软极大归一化来计算的,Pq⊤Pk。DETR的映射是通过软最大值计算的,用空间键(oq + cq)⊤pk对点积进行归一化。

可以看出,我们的空间注意力权重图准确地定位了四个四肢的不同区域。相比之下,具有 50 个 epoch 的原始 DETR 的映射无法准确定位两个四肢,500 个训练时期(第三行)使内容查询更强,导致精确定位。这意味着很难学习内容查询 cq 作为两个角色5:同时匹配内容键和空间键,因此需要更多的训练时期。

Analysis.图 4 所示的空间注意力权重图表明,用于形成空间查询的条件空间查询至少有两个影响。(i) 将突出显示位置转换为四个末端和对象框内的位置:有趣的是,突出显示的位置在空间上类似地分布在对象框中。(ii) 缩放四肢高光的空间扩散:大物体的大扩散和小物体的小扩散。

这两个效应是通过在 ps 上应用变换 T 来实现的(通过交叉注意中包含的与图像无关的线性投影进一步解开并分布到每个头部)。这表明变换 T 不仅包含前面讨论的位移,还包含对象尺度。

3.5. Implementation Details

Architecture.我们的架构与 DETR 架构 [3] 几乎相同,包含 CNN 主干、变压器编码器、变压器解码器、预测前馈网络 (FFN),每个解码器层(最后一个解码器层和 5 个内部解码器层),参数共享在 6 个预测 FFN 中。超参数与 DETR 相同。

主要的架构区别是我们引入条件空间嵌入作为条件多头交叉注意的空间查询,空间查询(键)和内容查询(键)通过加法以外的连接组合。在第一个交叉注意力层中,没有解码器内容嵌入,我们基于 DETR 实现 [3] 进行了简单的更改:将对象查询(位置嵌入)预测的位置嵌入连接到原始查询(键)。

Reference points.在原始 DETR 方法中,对于所有解码器嵌入,s = [0 0]⊤ 是相同的。我们研究了形成参考点的两种方法:将非归一化 2D 坐标视为可学习的参数,以及从对象查询 ooq 预测的非归一化 2D 坐标。后一种方法类似于可变形DETR[53],预测单元是一个FFN,由可学习的线性投影+ReLU+可学习线性投影组成:s = FFN(oq)。当用于形成条件空间查询时,二维坐标由 sigmoid 函数归一化。

Loss function.我们遵循 DETR [3] 使用匈牙利算法在预测和地面实况对象之间找到最佳二分匹配 [20],然后形成损失函数来计算和反向传播梯度。我们使用与可变形 DETR [53] 相同的方式来制定损失:相同的匹配成本函数、具有 300 个对象查询的相同损失函数和相同的权衡参数;分类损失函数是焦点损失 [24],框回归损失(包括 L1 和 GIoU [34] 损失)与 DETR [3] 相同。

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

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

相关文章

在Excel中如何快速筛选非特定颜色

Excel中的自动筛选是个非常强大的工具,不仅可以筛选内容,而且可以筛选颜色,例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格(下图右侧所示),其他单元格的填充色不固定,有几种颜色…

C语言中的位操作

第一章 变量某位赋值与连续赋值 寄存器 | 值 //例如&#xff1a;a 1000 0011b a | (1<<2) //a 1000 0111 b 单独赋值 a | (3<<2*2) // 1011 0011b 连续赋值 第二章 变量某位清零与连续清零 寄存器 & ~&#xff08;&#xff09; 值 //例子&#xff1a;a …

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖及性能分析

微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖及性能分析 目录 微信小程序scroll-view吸顶css样式化表格的表头及iOS上下滑动表头的颜色覆盖及性能分析 1、iOS在scroll-view内部上下滑动吸顶的现象 正常的上下滑动吸顶覆盖&#xff1a; iOS及iPa…

详细分析Pytorch中的transpose基本知识(附Demo)| 对比 permute

目录 前言1. 基本知识2. Demo 前言 原先的permute推荐阅读&#xff1a;详细分析Pytorch中的permute基本知识&#xff08;附Demo&#xff09; 1. 基本知识 transpose 是 PyTorch 中用于交换张量维度的函数&#xff0c;特别是用于二维张量&#xff08;矩阵&#xff09;的转置操…

#PCIE#基础知识分解之 CC/SRNS/SRIS 时钟架构

参考资料为PCIe Base Spec和CEM Spec。 1.1 时钟架构分类 PCIe参考时钟的三种架构&#xff1a; Common Refclk (Shared Refclk) ArchitectureData Clocked Rx ArchitectureSeparate Refclk Architecture 下面&#xff0c;我们来简单地聊一聊前面说到的三种参考时钟架构&…

图书管理系统汇报

【1A536】图书管理系统汇报 项目介绍1.用户登录注册功能1. 1用户角色管理2.图书管理功能2.1 添加图书2.2 编辑图书2.3 删除图书 3.图书搜索和筛选3.1 图书搜索3.2 图书筛选 4.图书借阅、图书归还4.1 图书借阅4.2 图书归还 5.用户信息管理5.1上传头像5.2修改头像5.3 修改密码 项…

js 获取当前时间与前一个月时间

// 获取当前时间的毫秒数 var currentTimeMillis new Date().getTime();// 获取前一个月的Date对象 var dateLastMonth new Date(); dateLastMonth.setMonth(dateLastMonth.getMonth() - 1);// 获取前一个月的毫秒数 var timeMillisLastMonth dateLastMonth.getTime();conso…

Flutter InkWell组件去掉灰色遮罩

当InkerWell组件内部获取到焦点时&#xff0c;会展示一层灰色遮罩 将focusColor属性设置为透明即可 Flutter InkWell焦点效果源码分析 问题描述 当 InkWell 组件获得焦点时&#xff0c;会显示一层灰色遮罩效果。需要找出这个效果是由哪些组件控制的&#xff0c;以及具体的…

【SpringMVC】传递json,获取url参数,上传文件

【传递json数据】 【json概念】 一种轻量级数据交互格式&#xff0c;有自己的格式和语法&#xff0c;使用文本表示一个对象或数组的信息&#xff0c;其本质上是字符串&#xff0c;负责在不同的语言中数据传递与交换 json数据以字符串的形式体现 【json字符串与Java对象互转…

逆向 解密接口信息附Demo(二)

目录 前言1. 加密2. 解密 前言 原先写过另外一篇&#xff0c;推荐阅读&#xff1a;逆向 解密接口信息&#xff08;附Demo&#xff09; 下文以 https://login1.scrape.center/ 进行讲解&#xff0c; 1. 加密 登录过程中可以使用断点进行一步一步排查 或者在js文件中搜索enco…

【周末推荐】Windows无缝连接iPhone

关注“ONE生产力”&#xff0c;获取更多精彩推荐&#xff01; 又到了周末推荐时间了&#xff0c;今天我们介绍一个Windows内置的功能&#xff0c;能够帮助大家将自己的电脑和iPhone连接在一起。 很多用Windows的小伙伴羡慕macOS可以和iPhone无缝连接&#xff0c;轻松阅读和回…

015:地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework安装教程

摘要&#xff1a;本文详细介绍地理信息系统开发平台ArcGIS Engine10.2与ArcGIS SDK for the Microsoft .NET Framework的安装流程。 一、软件介绍 ArcGIS Engine 10.2是由Esri公司开发的一款强大的GIS&#xff08;地理信息系统&#xff09;开发平台。该软件基于ArcGIS 10.2 fo…

基于 Java 的 Spring Boot 和 Vue 的宠物领养系统设计与实现

需要代码 vx&#xff1a;Java980320 不收取任何费用 在这个宠物领养系统中&#xff0c;我们可以设定两个角色&#xff1a;管理员和普通用户。每个角色的功能和目标略有不同&#xff0c;以下分别介绍&#xff1a; 管理员 管理员的主要职责是确保平台的高效运行&#xff0c…

ES6 变量的解构赋值

数组的解构赋值 对象的解构赋值 字符串的解构赋值

关于我的数据结构与算法——初阶第二篇(排序)

&#xff08;叠甲&#xff1a;如有侵权请联系&#xff0c;内容都是自己学习的总结&#xff0c;一定不全面&#xff0c;仅当互相交流&#xff08;轻点骂&#xff09;我也只是站在巨人肩膀上的一个小卡拉米&#xff0c;已老实&#xff0c;求放过&#xff09;。 排序的概念及其运…

IDEA连接EXPRESS版本的SQL server数据库

我安装的版本是SQL2019-SSEI-Expr.exe 也就是EXPRESS版本的SQL Server安排非常简单和快速。 但是默认没有启动sa用户。 启动sa用户名密码登录 默认安装完以后没有启用。 使用Miscrosoft SQL Server Management Studio 使用Windows身份连接后。 在安全性》登录名中找到sa并修改…

Unity 实现的背包系统

Hello Inventory System Unity 实现的背包系统。 TEST 点击底部 TEST 按钮随机生成物品到 Chest &#xff1b;点击物品可以将其 “拿起” &#xff0c;按住键盘左侧的 Ctrl 键可以按半数拿起和放下&#xff1b;属于装备的物品可以点击右键装备上&#xff0c;显示在人物装备属性…

net mvc中使用vue自定义组件遇到的坑

自定义一个ButtonCounter.js组件 export default {data() {return {count: 0}},template: <van-button type"primary" click"count">You clicked me {{ count }} times.</van-button> }按照官网文档的意思&#xff0c;组件命名需要大写驼峰命…

docker基础篇(尚硅谷)

学习链接 docker1️⃣基础篇&#xff08;零基小白&#xff09; - 语雀文档 (即本篇) Docker与微服务实战&#xff08;基础篇&#xff09; Docker与微服务实战&#xff08;高级篇&#xff09;- 【上】 Docker与微服务实战&#xff08;高级篇&#xff09;- 【下】 文章目录 学习…

【密码学】CKKS全同态加密方案浅析

本文主要为翻译内容&#xff0c;原文地址&#xff1a;https://www.inferati.com/blog/fhe-schemes-ckks CKKS算法是2017年论文《Homomorphic Encryption for Arithmetic of Approximate Numbers》中提出的近似计算同态加密算法&#xff0c;论文的作者是Cheon等四位韩国研究…