当前位置: 首页 > news >正文

BEVFormer v2论文阅读

摘要

本文工作

提出了一种具有透视监督(perspective supervision)的新型鸟瞰(BEV)检测器,该检测器收敛速度更快,更适合现代图像骨干。现有的最先进的BEV检测器通常与VovNet等特定深度预训练的主干相连,阻碍了蓬勃发展的图像主干和BEV检测器之间的协同作用。为了解决这一限制,我们优先考虑通过引入透视图监督(perspective view supervision)来简化BEV探测器的优化。为此,我们提出了一个两阶段的BEV检测器,其中来自透视头的proposals被输入入鸟瞰头进行最终预测。

实验效果

为了评估我们的模型的有效性,我们进行了广泛的消融研究,重点是监督的形式和所建议的探测器的类型。在大规模NUSCENES数据集上,对该方法进行了广泛的传统和现代图像主干的验证,取得了新的SOTA结果。

1. 介绍(Introduction)

鸟瞰识别模型吸引了人们对自动驾驶的兴趣,因为它们可以自然地将多个传感器的部分原始观测集成到一个统一的整体3D输出空间中。一个典型的BEV模型建立在一个图像骨干网络上,然后是一个视图转换模块,该模块将每个特定的图像特征提升为BEV特征,然后由BEV特征编码器和一些特定任务的头进行处理。
虽然在设计视图转换器上投入了很多心血,和不断增加的下游任务并入新的识别框架中,对BEV模型中的图像骨干网络的研究受到的关注要少得多。自动驾驶作为一个前沿、高要求的领域,将现代图像骨干网络引入到自动驾驶中是顺理成章的事情。令人惊讶的是,学术界为了大规模深度预训练,选择坚持Vovnet。在本工作中,我们致力于充分发挥现代图像特征提取器在BEV识别中的作用,为未来研究人员在该领域探索更好的图像骨干网络设计打开大门。

然而,简单地使用这些现代图像骨干网络而不进行适当的预训练是不能产生令人满意的结果的。 例如,ImageNet预先训练的ConvNext-XL主干的性能与DDAD-15M预先训练的用于3D目标检测的Vovnet-99不相上下。尽管后者有前者的3.5倍的参数。

我们需要努力适应现代图像骨干的以下问题:

  • 自然图像和自动驾驶场景之间的领域差距。在一般的二维识别任务中预先训练的骨干对三维场景的感知能力不足,尤其是对深度的估计。
  • 目前BEV探测器结构复杂。拿Bevformer作为一个例子。通过视图编码器和对象解码器将三维包围盒和对象类别标签的监督信号从图像主干中分离出来,每个视图编码器和对象解码器都由多层transformer组成。适用于自动驾驶任务的一般2D图像骨干的梯度流被堆叠的transformer 层扭曲。

为了克服上述困难,采用现代图像主干进行BEV识别,我们在Bevformer中引入透视监督,即从透视任务发出的监督信号,并直接应用于主干。它引导骨干学习二维识别任务中缺少的三维知识,克服了BEV检测器的复杂性,极大地方便了模型的优化。

具体来说,我们构建一个透视3D检测头在主干上,以图像特征为输入,直接预测目标对象的三维边界框和类标签 作为辅助检测损失,将该透视头的损失(perspective loss)添加到从BEV头导出的原始损失(BEV loss)中。用相应的损失项联合训练两个分解头。此外,我们发现可以很自然的将这两个探测头组合成一个两级BEV探测器,BEV-Former V2。由于透视头是完全成熟的,它可以在perspective视图中生成高质量的对象建议,我们将其用作第一阶段建议。我们将它们编码为对象查询,并将它们与原始Bevformer中的可学习查询集合在一起,形成混合对象查询,然后将混合对象查询送入第二级DetectionHead以生成最终预测。

我们进行了大量的实验来证实我们提出的透视超视觉的有效性和必要性。perspective loss 促进了图像骨干的自适应,从而提高了检测效率,加快了模型的收敛速度。如果没有这种监督,即使用更长的时间表训练,该模型也无法实现可比的再输出。因此,我们成功地将现代图像主干与BEV模型相适应,在NUSCENES上获得了63.4%的NDS2]测试集。
我们的贡献可概括如下:

  • 我们指出透视监督是使一般2D图像骨干网络适配到BEV模型的关键。我们通过透视图中的检测损失明确地添加了这种监督。
  • 我们提出了一种新型的两级BEV探测器,BEV-former V2。它由透视3D和BEV检测头组成,前者的建议与后者的对象查询相结合。
  • 我们通过将其与最新的图像骨干网络结合起来,并在Nuscenes数据集上实现了对以前最优结果的显著改进,从而显示了我们方法的有效性。

2. 相关工作(Related Works)

2.1. BEV三维物体探测器 (BEV 3D Object Detector)

因为在自动驾驶领域的巨大成功,BEV目标检测器获得了较多的关注。早期的工作主要是利用单目深度估计和逆透视变化生成伪点云。近期的一些工作倾向于把不同视角下的特征通过2D-3D转换得到3D特征。

2.2. 摄像机三维目标检测中的辅助损失 (Auxiliary Loss in Camera 3D Object Detection)

辅助损失在单目3D目标检测中是普遍存在的。但是它们的辅助损失很少在2D监督上有明确的意义。

2.3. 二阶段的三维物体探测器(Two-stage 3D Object Detector)

两阶段检测方法在激光雷达3D目标检测中较为常见,但图像3D目标检测中极为少见。

3. BEVFormer v2

采用现代2D图像骨干网络进行BEV识别,无需进行繁琐的深度预训练,可以提高BEV识别效率,为下游的自动驾驶任务提供了多种可能性。

在这项工作中,我们提出了Bevformer V2,一个两阶段的BEV检测器,它结合了BEV和透视监督,在BEV检测中避免了采用图像骨干的麻烦。

3.1 总体架构(Overall Architecture)

如图1所示 Bevformer V2主要由图像骨干网络、透视3D检测头、空间编码器、改进型时间编码器和BEV检测头五部分组成。与原始Bevformer相比,除了空间编码器以外的所有组件都进行了改造。具体地说,Bevformer V2中使用的所有图像骨干网络都不是用任何自动驾驶数据集或深度估计数据集预先训练的。引入透视3D检测头,以方便2D图像骨干的自适应,并为BEV检测头生成对象proposals。采用了一种新的时域BEV编码器,以更好地融合长期的瞬态信息。BEV检测头现在接受混合对象查询集作为输入。我们将第一阶段的建议和学习到的对象查询结合起来,形成新的混合对象查询,用于第二阶段。

图1: Bevformer V2的整体架构。图像骨干网各生成多视图图像的特征。透视3D头进行透视预测,然后将其编码为对象查询。BEV头为编码器-解码器结构。空间编码器通过聚合多视图图像特征生成BEV特征,其次是时间编码器收集历史BEV特征。译码器以混合对象查询为输入,根据BEV特征进行最终的BEV预测。整个模型用两个检测头的两个损失项L_{pers}L_{bev}训练。

3.2. 透视监督(Perspective Supervision)

我们首先分析了鸟瞰模型的问题,以解释为什么额外的监督是必要的。一个典型的BEV模型在BEV平面上有对应的网格状的特征,其中每个网格聚集来自多视图图像对应的2D像素处的特征的3D信息。它根据BEV特征预测目标对象的3D检测框,我们将这种强加在BEV特征上的监督命名为BEV监督。
以Bevformer作为一个例子,它使用编码器-解码器结构来生成和利用BEV特性。编码器为BEV平面上的每个网格单元分配一组3D参考点,并将它们作为2D参考点投影到多视图图像上。然后,对二维参考点周围的图像特征进行采样,并利用交叉注意力将其聚合为BEV特征。解码器是一个Deformable DETR头,它在BEV坐标中预测3D包围盒,并进行少量固定数量的对象查询。图 2 介绍了由3D到2D视图转换和DETR头引入的BEV监督的两个尚未解决的问题:

  • 对图像特征的监督是隐含的。这种损失直接作用于BEV特征,而经过3D到2D投影和注意力采样(attentive samplin)后,这种损失就间接作用于BEV特征。
  • 对图像特征的监督是稀疏的。只有少量用于目标查询的BEV网格才能导致损失。 因此,只有那些网格的2d参考点周围的稀疏像素获得监督信号。

因此,在训练过程中,BEV检测头依赖于包含在图像特征中的三维信息,但对骨干如何编码这些信息提供了不足的指导。

以前的BEV方法并没有严重地受到这种不一致性的困扰,它们甚至可能没有意识到这个问题。这是因为它们的主干网络要么有相对较小的尺度,要么已经用单目检测头预先训练过3D检测任务。与BEV头相比,透视3D头对图像特征进行每像素预测,为适应2D图像骨干提供更丰富的监督信号。我们将这种强加在图像特征上的监督定义为透视监督。如图2所示,与BEV监督不同的是,透视检测损失直接密集地应用于图像特征。我们假设透视监督显式地引导主干网络感知三维场景并提取有用的信息,如目标的深度和方位。克服了BEV监督的缺点,因此,在训练BEV模型时使用现代图像的主干网路是非常必要的。


透视监督和BEV监督的对比:透视探测器的监督信号密集且直接指向图像特征,而BEV探测器的监督信号稀疏且间接。

下图是BEVformer中采用的是BEV监督:

3.3. 透视损失(Perspective Loss)

正如前一节所分析的,透视监督是优化BEV模型的关键。在Bevformer V2中,我们通过一个辅助透视损失引入透视监督。具体地说,在主干上构建透视3D检测头,以检测透视图中的目标对象。我们采用FCOS3D类似的检测头,它预测3D包围盒的中心位置、大小、方向和投影中心度。该检测头的检测损失被记为透视损失L_{pers}​, 它作为BEV损失L_{bev}的一个组成,用来促进骨干网络的优化。整个模型是以一个总的目标来训练的

3.4. 改进时间编码器(Ravamped Temporal Encoder)

Bevformer使用循环时间自注意力机制来融合历史的BEV特征。但是时间编码器不能充分利用长期的时间信息,简单地将循环步长从4步增加到16步并不能获得额外的性能提高。
我们采用简单的扭曲和联结策略重新设计了Bevformer V2的时间编码器。给定在不同帧k处的BEV特征B_k,我们首先通过第t帧和第k帧之间的转换矩阵T_k^t=[\mathbf{R} \mid \mathbf{t}] \in \mathrm{SE}B_k 双线性变换成B_k^t
然后沿通道方向将先前的BEV特征与当前的BEV特征串联起来,并利用残差块进行维数约简。为了保持与原始设计相似的计算复杂度,我们使用了相同数量的历史BEV特征,但增加了采样间隔。除了从长期时间信息中获益之外,新的时间编码器还打开了在离线三维检测设置中利用未来BEV特征的可能性。

3.5. 两阶段的BEV检测器(Two-stage BEV Detector)

虽然联合训练两个检测头进行训练提供了足够的监督,但我们从不同的角度分别得到了两组检测结果。我们设计了一种新的结构,将两个头集成为两级预测流水线,即两级BEV检测器(two-stage detector),而不是采用BEV头的预测而抛弃透视头的预测或者通过NMS启发式地将两组预测组合。BEV头中的对象解码器,一个detr[3]解码器,使用一组学习到的embeddings作为对象查询,它通过训练来学习目标对象的位置。然而,随机初始化的embeddings需要很长时间来学习合适的位置。此外,学习对象查询对于所有的图像都是固定的,由于对象的分布可能不同,因此可能不够准确。为了解决这些问题,对透视头的预测进行后处理过滤,然后融合到解码器的对象查询中,形成一个两阶段的过程。这些混合对象查询提供了高得分(概率)的候选位置,使BEV头在第二阶段更容易捕获目标对象。
混合对象查询的详细信息将在后面描述。应该注意的是,第一阶段的建议不一定是来自一个透视检测器,例如来自另一个BEV检测器,但实验表明,只有从透视图的预测才对第二级BEV头有帮助。

3.6. 混合对象查询的解码器(Decoder with Hybrid Object Queries)

为了将第一阶段的建议融合到第二阶段的对象查询中,基于在BEVFormer 中使用的Deformable DETR编码器,对BEVFormer v2中使用的BEV 检测头的编码器进行修改。
解码器由层叠交替的自注意层和交叉注意层组成。交叉注意力层是一种deformable的注意力模式,它以以下三个元素作为输入。(1)内容查询(content queries):产生抽样偏移量和关注权重的查询特征。(2)参考点(Reference points):作为每个查询的采样参考,在值特征上的2D点。(3)值特征(Value features):即要注意的BEV特征。在原来的Bevformer中,内容查询是一组学习的嵌入,参考点是从一组学习的位置嵌入中用线性层预测的。在Bevformer V2中,我们从每个特定的头部获得建议,并通过后处理选择其中的一部分。如图3所示,将所选提议的BEV平面上的投影框中心作为每幅图像的参考点,并与位置嵌入生成的每数据集参考点相结合。每幅图像的参考点直接指示出目标物体在BEV平面上的可能位置,使解码器更容易地检测到目标物体。 然而,一小部分物体可能由于遮挡而无法被透视头检测到或出现在两个相邻视图的边界处。为了避免丢失这些对象,我们还保留了原始的每个数据集的参考点,以便通过学习空间先验来捕获它们。

图三:BEVformer v2中的BEV头的解码器。第一阶段的提议(perspective proposals)的投影中心(Projected Centers)被用作每个图像的参考点(Reference Points),它们与每个数据集学习的内容查询(Content Queries)和位置嵌入(Positional Embeddings)结合作为混合对象查询。

4. 实验结果

4.1. nuScenes 3D物体检测benchmark

表1:nuScenes test set的3D物体检测结果

BEVFormer v2在自动驾驶权威数据集nuScenes的3D物体检测任务上超越了已有SOTA方法,NDS为63.4,mAP为55.6,比之前最好的方法分别提升了 2.4和3.1。此外,使用InternImage-B作为backbone的模型也超过了之前的方法,InternImage-B和V2-99参数量相近但没有使用3D预训练,这证明了3D预训练不是必须的。

4.2. 不同视角监督信号的比较

表2:不同视角监督信号的组合的对比

• Perspective Only:只使用perspective head

• BEV Only:只使用BEV head

• Perspective & BEV(BEVFormer v2):使用perspective head和BEV head组成二阶段检测器

• BEV & BEV:使用两个BEV head组成二阶段检测器

Perspective Only和BEV Only对比: BEV head使用多个相机视角的信息确定物体位置,因此具有更高的mAP。但是perspective head有更低的mATE和mAOE,表明它对深度和方向这些3D属性的预测更为准确。

BEV Only和Perspective & BEV对比: BEVFormer v2引入perspective supervision取得了NDS 2.5,mAP 1.9的较大提升,且mATE,mAOE和mAVE显著降低,模型能更好地感知3D场景,获取深度、方向和速度这些属性。

BEV & BEV和Perspective & BEV对比: 对two-stage pipeline进行消融实验,表明two-stage本身并不能提升性能,性能提升完全来自于perspective supervision的引入。

4.3. Perspective Supervision的泛化性

表3:使用不同图像backbone对perspective supervision进行消融实验

Perspective supervision可以泛化到多种不同结构和尺寸的2D图像backbone,均能带来NDS约3.0,mAP约2.5的显著提升。

4.4. 其他实验表现

表4:不同训练时长的对比。Perspective supervision能促进模型的优化,加速收敛
表5:Perspective head和BEV head的不同选择对比。在perspective head的选择中,相比DETR3D head的稀疏预测,DD3D head的密集预测能提供更丰富的监督信号,因此效果更好
表6:BEVFormer v2使用的其他技巧的消融实验,包括图像级别的数据增强、输入序列的时间间隔增加、以及使用双向的时序信息。

5. 结论

现有的工作在设计和改进鸟瞰(BEV)识别模型的检测器方面付出了很大的努力,但它们通常停留在特定的预先训练的主干网络上,而没有进一步探索。在本文中,我们的目标是在 BEV 模型上释放现代图像骨干的全部力量。我们将通用 2D 图像主干网适应 BEV 检测器的优化问题。为了解决这个问题,我们通过添加来自额外视角 3D 检测头的辅助损失,将视角监督引入到 BEV 模型中。此外,我们将两个检测头集成到一个两级检测器中,即BEVFormer v2。成熟的透视头提供第一阶段的对象建议,这些建议被编码到 BEV 头的对象查询中以进行第二阶段的预测。大量的实验验证了我们提出的方法的有效性和通用性。透视监督引导2D图像主干感知自动驾驶的3D场景,帮助BEV模型实现更快的收敛和更好的性能,并且适用于广泛的主干。此外,我们成功地将大规模骨干网适应了 BEV-Former v2,在 nuScenes 数据集上取得了新的 SoTA 结果。我们认为我们的工作为未来的研究人员探索更好的 BEV 模型图像主干设计铺平了道路。

参考文献

BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision

论文精读:《BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective 》-CSDN博客

BEVFormer v2:让新型图像主干网络在BEV感知中发挥强大能力|论文解读 - 脉脉 

相关文章:

BEVFormer v2论文阅读

摘要 本文工作 提出了一种具有透视监督(perspective supervision)的新型鸟瞰(BEV)检测器,该检测器收敛速度更快,更适合现代图像骨干。现有的最先进的BEV检测器通常与VovNet等特定深度预训练的主干相连,阻碍了蓬勃发展…...

FFMPEG C++封装(二)

4 详细设计 这章是FFMPEG C封装库的详细设计。 4.1 Init 该模块初始化FFMPEG库。 4.1.1 Init定义 namespace media { namespace sdk { void MEDIASDK_EXPORT Init(); } }函数说明: Init 初始化FFMPEG库,该函数可调用多次。 4.1.2 Init实现 name…...

使用unplugin-auto-import页面不引入api飘红

解决方案:. tsconfig.json文件夹加上 {"compilerOptions": {"target": "ES2020","useDefineForClassFields": true,"module": "ESNext","lib": ["ES2020", "DOM", &q…...

八大技术趋势案例(虚拟现实增强现实)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…...

Vue实现SQL语句关键字高亮显示?

SQL关键字高亮 要在Vue中实现SQL语句中关键字的高亮显示&#xff0c;你可以使用类似的方法&#xff0c;但是你需要根据SQL语法的特点来解析并高亮显示关键字。以下是一个示例代码&#xff0c;演示了如何在Vue中实现SQL语句关键字的高亮显示。 <template><div><…...

开始时间大于结束时间

1.dom中代码&#xff0c;监听所选日期值的变化&#xff0c;并把需要比较的时间字段作为参数传到监听方法中&#xff0c; <el-form-item label"起始日期" prop"startTime"><el-date-picker clearable size"small":disabled"isDisa…...

Java中 List 集合,通过 Stream 流进行排序总结

一、数据准备 public class OrderTest {private String channelCode;private BigDecimal rate;// 省略 getter、setter、toString()、constructor }List<OrderTest> orderTestList new ArrayList<>();OrderTest z09 new OrderTest("Z09", new BigDeci…...

1688中国站按关键字搜索工厂数据 API

公共参数 名称类型必须描述keyString是申请免费调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认y…...

YOLOV8逐步分解(2)_DetectionTrainer类初始化过程

接上篇文章yolov8逐步分解(1)--默认参数&超参配置文件加载继续讲解。 1. 默认配置文件加载完成后&#xff0c;创建对象trainer时&#xff0c;需要从默认配置中获取类DetectionTrainer初始化所需的参数args&#xff0c;如下所示 def train(cfgDEFAULT_CFG, use_pythonFalse…...

Java是用什么语言写的?PHP呢?

Java底层是C语言。 Sun公司研发人员根据嵌入式软件的要求&#xff0c;对C进行了改造&#xff0c;去除了留在C的一些不太实用及影响安全的成分&#xff0c;并结合嵌入式系统的实时性要求&#xff0c;开发了一种称为Oak的面向对象语言。而后&#xff0c;经过迭代更新&#xff0c…...

SpringBoot Redis的使用

官方文档&#xff1a; 官方文档&#xff1a;Spring Data Redis :: Spring Data Redis 和jedis一样&#xff0c;SpringBoot Redis 也可以让我在Java代码中使用redis&#xff0c;同样也是通过引入maven依赖的形式。 加速访问github: 使用steam可以免费加速访问github Spring…...

数据仓库——维度表特性

企业信息化工厂 数据集市中的一致性&#xff0c;由于企业信息化工厂的数据集市是从集成仓库中获得信息的&#xff0c;因此至少从维度建模的角度来看&#xff0c;一致性维护的问题减少了。尽管合并不同数据源的问题依然在&#xff0c;但是负担主要在设计者身上。尽管压力降低了…...

从电荷角度理解开关电容中的电荷守恒

目录 一些铺垫电容的电荷量的解释电荷流入流出对节点电压的影响 从电荷角度理解开关电容加法器中的电荷守恒以开关电容积分器为例说明什么样的节点是电荷守恒 一些铺垫 电容的电荷量的解释 对于一个1F的电容&#xff0c;当它的压差为1V时&#xff0c;它所携带的电荷量是QCU1库…...

1.7.1 python 作业 15道

1、求出1 / 1 1 / 3 1 / 5……1 / 99的和 (1分之一1分之三1分支5....) sum0 for i in range(1,100,2): sum 1/i sum; print(sum) 2、用循环语句&#xff0c;计算2 - 10之间整数的循环相乘的值 &#xff08;2*3*4*5....10) sum 1 for i in range(2,11): sum sum *…...

synchronized 和 ReentrantLock 的区别是什么

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:synchronized 和 ReentrantLock 的区别是什么 1. 获取锁的方式 synchronized:synchronized的锁获取是隐式的。当线程进入synchronized修饰的代码…...

大话设计模式之迪米特法则

迪米特法则&#xff0c;也称为最少知识原则&#xff08;Law of Demeter&#xff09;&#xff0c;是面向对象设计中的一个重要原则&#xff0c;其核心思想是降低耦合度、减少对象之间的依赖关系&#xff0c;从而使系统更加灵活、易于维护和扩展。 根据迪米特法则&#xff0c;一…...

KSD测试系统使用方法和注意事项

①下载链接在最顶部&#xff1b; ②安装方法&#xff1a;应该先将测试设备绑定在假人身上&#xff0c;测试设备不能过度往下拉&#xff0c;传感器绑在脖子上&#xff0c;切记最后才开传感器开关&#xff01;&#xff01;&#xff01;开传感器后3秒内不要碰测试设备衣服&#x…...

IT服务营销管理案例分析题

习题一 企业随着业务的蓬勃发展&#xff0c;所投入的基础设施资源不断增加。企业员工数倍数增长&#xff0c;办公场地、办公环境等要求也越来越高。 可是该企业的IT部门人员短缺&#xff0c;对IT管理还处于被动的“救火”阶段&#xff0c;每天至少15个突发故障&#xff0c;故障…...

NRF52832修改OTA升级时的bootloader蓝牙MAC

NRF52832在OTA升级时&#xff0c;修改了APP的蓝牙MAC会导致无法升级&#xff0c;原因是OTA程序的蓝牙MAC没有被修改所以手机扫描蓝牙时无法连接 解决办法 在bootloader的程序里面加入修改蓝牙mac地址的代码实现原理&#xff1a; 在bootloader蓝牙广播开启之前修改蓝牙mac 通…...

# Python 编程入门教程

欢迎来到 Python 编程入门教程!Python 是一种简单易学、功能强大的编程语言,适用于各种应用场景,从简单的脚本到大型软件开发项目。无论你是初学者还是有一定编程经验的开发者,本教程都将为你提供全面的学习路径,帮助你掌握 Python 编程的基础知识和技能。 ## 目录 1. 简…...

Sqoop【实践 02】Sqoop1最新版 全库导入 + 数据过滤 + 字段类型支持 说明及举例代码(query参数及字段类型强制转换)

Sqoop1最新版举例 1.环境说明2.import-all-tables3.query4.字段类型支持 1.环境说明 还是之前的环境&#xff1a; # 不必要信息不再贴出 # JDK [roottcloud ~]# java -version java version "1.8.0_251" # MySQL [roottcloud ~]# mysql -V mysql Ver 14.14 Distrib…...

第十四届蓝桥杯JavaA组省赛真题 - 特殊日期

解题思路&#xff1a; 暴力秒了 public class Main {public static void main(String[] args) {int cnt 0;for (int i 1900; i < 9999; i) {for (int j 1; j < 12; j) {for (int k 1; k < days(i, j); k) {if (sum(i) sum(j) sum(k)) cnt;}}}System.out.print…...

《VulnHub》Lampião:1

title: 《VulnHub》Lampio&#xff1a;1 date: 2024-03-28 21:37:49 updated: 2024-03-28 21:37:50 categories: WriteUp&#xff1a;Cyber-Range excerpt: 关键技术&#xff1a;主机发现&#xff0c;端口扫描、服务探测、操作系统探测&#xff0c;对开放的端口探测漏洞&#x…...

RabbitMq高可用

消息队列高级 服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.2.消息持久化1.3.消费者消息确认1.4.消费失败重试机制1.5.总结 2.死信交换机2.1.初识死信交换机2.2.TTL2.3.延迟队列 3.惰性队列3.1.消息堆积问题3.2.惰性队列 4.MQ集群4.1.集群分类4.2.普通集群4.3.镜像集群…...

降本增效的车间管理大屏,车间主任看了拍手称快,速来领取。

我们老板觉得车间生产效率太低了&#xff0c;还想让我整一套车间管理的&#xff01; 制造业管理的核心在于降本增效&#xff0c;车间管理可以通过【大数据可视化】来提高管理效率&#xff0c;大屏就可以做到生产管理一「屏」了然&#xff0c;这是【车间管理大屏方案】。 一、…...

Open AI要给GPT应用开发者“发钱” 黄金的宏观关系被打破了吗?

内容摘要 为避免GPTs彻底凉凉&#xff0c;Open AI紧急启动了一项“货币化”计划&#xff0c;直接给那些在GPT Store上的应用开发人员发钱。 正文部分 当地时间周四凌晨&#xff0c;OpenAI在社交媒体上发帖称&#xff0c;正在与小部分美国开发者合作&#xff0c;基于用户使用…...

【Docker】Docker安全与最佳实践:保护你的容器化应用程序

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff…...

QT 信号(Signal)与槽(Slot)机制

上学后,人们问我长大了要做什么,我写下“快乐”。他们告诉我,我理解错了题目,我告诉他们,他们理解错了人生。 ——约翰列侬 一、信号(signal)与槽(slot) 在QT中,信号(signal)与槽(slot)机制是一种用于对象间通信的重要机制。它允许一个对象发出信号,而其他对象…...

音频干扰检测(频域方法)

测试音响系统的通路上是否有外部干扰时&#xff0c;可以通过播放1000赫兹的正弦波信号&#xff0c;在输出端采集数字信号&#xff08;I2S&#xff0c;TDD&#xff0c;A2B&#xff09;并保存为.wav文件。 然后通过以下Python代码检测。 import numpy as np import librosa im…...

Rust引用借用 vs 原始指针

let v: i32 10; let v1 &v; let a: *const i32 &v; println!("a{:p}", a); let b a as *mut i32; //无法从&v直接转换成*mut i32&#xff0c;需要从*const i32过度 println!("b{:p}", b); unsafe {*b1; } println!("v{} v1{}"…...

专业的河南网站建设价格/东莞网络公司电话

http://www.zhdba.com/mysqlops/category/mysql-source-code/...

工作室做网站/西安网站建设公司十强

机载计算机电源系统的过压保护电路VICOR电源的DC/DC变换器都是固定输出模式&#xff0c;但为了方便用户&#xff0c;又设置了输出电压调节端。当输出电流较大&#xff0c;传输线路较长时&#xff0c;为弥补线路上的压降&#xff0c;需要将输出电压调高。如某电子组件的&#xf…...

大淘客网站推广位怎么做/制作网站的平台

1、普通索引(加快对数据的访问速度) –直接创建索引(length表示使用名称前1ength个字符)create index index_name on table_name(字段名(length))–修改表结构的方式添加索引alter table table_name add index index_name on (字段名(length))–删除索引 drop index index_name…...

wordpress建企业站教程/培训心得体会100字

这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下删除指定的元素A{a,c,b,d,e}print("原集合&#xff1a;",A)A.remove(a) # 不存在会报错print("删除…...

做网站要注意的/病毒什么时候才能消失

1. 异常检测 VS 监督学习 0x1&#xff1a;异常检测算法和监督学习算法的对比 总结来讲&#xff1a; 1. 在异常检测中&#xff0c;异常点是少之又少&#xff0c;大部分是正常样本&#xff0c;异常只是相对小概率事件 2. 异常点的特征表现非常不集中&#xff0c;即异常种类非常多…...

自己给公司做网站难不难/谷歌seo搜索优化

Python代码中经常会遇到 -1 这个数字&#xff0c;它主要有两个作用&#xff1a; 倒数第一自动推断1 倒数第一 在list, tuple, array中表示倒数第一个。 栗子1&#xff1a; a01 [3, 2] print("a01[:-1]:", a01[:-1]) …...