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

消除 BEV 空间中的跨模态冲突,实现 LiDAR 相机 3D 目标检测

Eliminating Cross-modal Conflicts in BEV Space for LiDAR-Camera 3D Object Detection

消除 BEV 空间中的跨模态冲突,实现 LiDAR 相机 3D 目标检测

  • 摘要
  • Introduction
  • 本文方法
    • Single-Modal BEV Feature Extraction
    • Semantic-guided Flow-based Alignment
    • Dissolved Query Recovering Mechanism

摘要

近期,3D目标检测器通常利用多传感器数据和在共享的鸟瞰图(BEV)表示空间中统一多模态特征。然而,我们的实证研究发现,以前的方法在生成无跨模态冲突的融合BEV特征方面存在局限性。这些冲突包括由BEV特征构建引起的外在冲突和源于异质传感器信号的内在冲突。

因此,提出了一种新颖的消除冲突融合(ECFusion)方法,以明确消除BEV空间中的外在/内在冲突,并生成改进的多模态BEV特征。具体而言,设计了一个语义引导的基于流的对齐(SFA)模块,在融合之前通过统一BEV空间中的空间分布来解决外在冲突。此外,我们设计了一个消解查询恢复(DQR)机制,通过保留在融合BEV特征中丢失的目标性线索来弥补内在冲突。

总体而言,ECFusion最大化了每种模态的有效信息利用,并利用了模态间的互补性。ECFusion在竞争激烈的nuScenes 3D目标检测数据集上取得了最先进的表现。

Introduction

三维目标检测对于实现安全高效的自动驾驶至关重要,它让车辆能够准确地在现实世界的三维环境中定位和识别物体。为了达到精确可靠的三维目标检测,一些方法通过多种多模态融合策略结合来自激光雷达点云和摄像头RGB图像的信息。具体来说,点云提供了准确的3D定位信息,而RGB图像则提供了丰富的上下文细节。因此,结合这些互补的模态提高了三维目标检测的准确性和鲁棒性。最近,先进的方法[1, 2]试图在统一的鸟瞰图(BEV)空间中融合激光雷达-相机特征。

通常,鸟瞰图(BEV)空间为多模态特征融合提供了一个合适的中间表示。然而,现有的融合策略仅考虑了模态间互补BEV特征所带来的好处,而忽略了跨模态冲突所引起的干扰。然而,我们认为,受异构跨模态特征间冲突影响的多模态融合操作可能会损害准确预测。特别是,跨模态冲突主要来自两个方面,即外在冲突和内在冲突。

外在冲突源于在不同模态构建BEV特征过程中的变异性。具体来说,由于LiDAR和摄像头模态是由独立编码器分别提取并使用不同的投影方法映射到BEV的,因此它们表现出空间上错位的BEV特征分布。因此,这些错位在合并时不可避免地导致错误的物体信息。例如,图1(a)所示,在LiDAR预测中可以正确定位的汽车,在摄像头BEV中却明显存在空间特征错位,因为基于不确定深度的冗余物体被投影。这种来自特征投影的外在冲突导致融合预测中出现假阳性。
内在冲突源于模态间传感器信号的差异模式。具体而言,由于物体距离、光照、天气状况、遮挡情况等因素的影响,多模态特征对不同物体表现出不对称的感知能力。先前的方法预期具有更优越感知能力的模态将主导融合过程。然而,我们发现另一个模态过弱的物体置信度同样会阻碍正确结果。如图1(b)所示,由于丰富的图像视觉线索,摄像头可以召回远距离和小型的行人和交通锥,而在LiDAR预测中却因稀疏点结构而遗漏。这种来自传感器信号的内在冲突导致融合预测中出现假阴性。因此,在使用多模态特征实现准确和鲁棒检测时,跨模态冲突是一个不容忽视的因素。
在这里插入图片描述
在本文中,我们提出了一种消除冲突融合(ECFusion)方法,以避免融合过程中因冲突造成的感知能力退化。首先,为了消除外在冲突,我们提出了一个基于流的对齐的语义引导(SFA)模块,该模块通过使用从语义对应中导出的空间流,将激光雷达和相机鸟瞰图(BEV)特征对齐到一致的分布。

具体来说,首先将具有类别感知Heatmap语义信息的对应位置与另一种模态进行关联。然后,将这种对应转换为流场,用于传播BEV特征以便对齐。通过这种方式,可以在融合之前通过对齐来减轻由外在冲突引起的融合干扰。其次,为了消除内在冲突,引入了一种消解查询恢复(DQR)机制,旨在发现因内在冲突而在融合Heatmap中溶解的目标查询,并从单独的激光雷达和相机BEVHeatmap中恢复它们。

具体而言,除了像先前方法那样从融合Heatmap中生成目标查询外,我们还探索潜在的单模态目标查询。我们通过Mask Heatmap策略关注那些与融合特征不一致地表现出高对象性的位置。我们的设计旨在确保最大限度地利用单模态特征中的感知能力。

贡献总结如下:

研究了在将多模态特征融合到统一鸟瞰图(BEV)空间时被忽略的跨模态冲突,以及它们如何阻碍激光雷达-相机三维目标检测。

提出了ECFusion方法,以消除多模态BEV特征之间的冲突,包括在融合前进行空间对齐的SFA模块,以及融合后恢复有用对象查询的DQR机制。

广泛的实验表明,ECFusion在nuScenes数据集上实现了激光雷达-相机3D目标检测的最先进性能。

本文方法

如图4所示,ECFusion方法首先利用激光雷达和相机BEV特征提取分支,从各个模态生成特定模态的BEV特征。然后,利用多模态BEV特征融合分支整合激光雷达和相机BEV特征,形成一个统一的融合BEV特征。
在这里插入图片描述
在融合分支中,我们提出了一种基于语义引导的流式对齐(SFA)模块,首先减少激光雷达和相机BEV特征之间的空间分布差异(即外在与冲突),然后再进行融合。接着,基于激光雷达、相机和融合的BEV特征,我们设计了一个消解式查询(Dissolved Query)。

恢复(DQR)机制以生成全面的对象查询。具体来说,DQR机制旨在恢复由于两种模态之间不对称的感知能力(即固有冲突)导致的分解对象查询,这种感知能力来自单模态特征。最后,使用Transformer解码器根据导出的对象查询来预测最终的3D边界框。

Single-Modal BEV Feature Extraction

激光雷达和相机BEV特征提取分支的细节展示在图2中,其中激光雷达和相机BEV特征是分别产生的。
在这里插入图片描述
激光雷达鸟瞰图特征提取。对于输入的点云数据 X p X_p Xp,如图2(a)所示,我们首先将它们划分为规则体素 V p ∈ R X u × X × Z V_p \in \mathbb{R}^{X_u \times X \times Z} VpRXu×X×Z,并使用带有3D稀疏卷积的体素编码器来提取特征 F p ∈ R X ∗ × Y × Z × C F_p \in \mathbb{R}^{X^* \times Y \times Z \times C} FpRX×Y×Z×C,其中 ( X , Y , Z ) (X,Y,Z) (X,Y,Z) 表示3D体素网格的大小。然后,我们沿着Z轴将 F p F_p Fp 投影到鸟瞰图(BEV)上,并采用几个2D卷积层来获得激光雷达鸟瞰图特征图 B p ∈ R X × Y × C B_p \in \mathbb{R}^{X \times Y \times C} BpRX×Y×C
EF
相机BEV特征提取。对于给定的输入N,视角图像Xr,如图2(b)所示,我们首先通过图像编码器提取特征Fr ∈ RN×HxW×C,其中(H,W)表示图像特征图的大小。为了构建相机BEV特征图Br ∈ RX×Y×C,我们通过Lift-Splat-Shoot (LSS)模块对每个视角的图像特征应用2D →3D视图变换。最后,相同BEV网格内的特征通过BEVPool操作进行聚合。

Semantic-guided Flow-based Alignment

在多模态的鸟瞰图(BEV)特征融合分支中,我们旨在将激光雷达的鸟瞰图特征Bp和相机的鸟瞰图特征B结合起来,构建融合的鸟瞰图特征 Br。然而,先前的方法忽略了这两种鸟瞰图特征之间的外在冲突,即不一致的空间/语义分布模式,并直接将两种鸟瞰图特征拼接作为融合结果。
请注意,这种外在冲突是由原始信号坐标的差异、鸟瞰图特征提取流程以及投影过程中的不同造成的。例如,将图像特征投影到鸟瞰图空间需要解决病态的单目深度估计问题,这不可避免地会导致预测的对象深度不准确。因此,由于这种不准确的对象深度,投影的相机鸟瞰图特征将包含错误位置上不存在的/冗余的对象,与激光雷达的鸟瞰图特征形成明显的错位。

因此,详细阐述了一个基于语义引导流的对齐(SFA)模块,用于对齐激光雷达和相机鸟瞰(BEV)特征,以在融合前获得一致的空间分布。受到光学流方法的启发,通过在不一致区域应用适当的流变换来修正空间差异。
在这里插入图片描述
具体来说,如图3所示,首先建立两种模态之间的空间对应关系。由于激光雷达和相机鸟瞰图特征 B p , B r B_p, B_r Bp,Br 是从两个独立/异构的分支生成的,直接在 B p B_p Bp B r B_r Br 之间建立对应关系是不可行的。因此利用归一化的激光雷达和相机鸟瞰图 Heatmap H p , H r ∈ R X × Y × N H_p, H_r \in \mathbb{R}^{X \times Y \times N} Hp,HrRX×Y×N,其中 N N N 是物体类别的数量,来捕捉逐像素的空间对应关系。在技术上基于 q × q q \times q q×q 邻域内的跨模态语义相似性,为每个像素构建空间对应关系。

首先,从 H p , H r H_p, H_r Hp,Hr 中获得跨模态代价体积 C p , C r ∈ R X × Y × q 2 C_p, C_r \in \mathbb{R}^{X \times Y \times q^2} Cp,CrRX×Y×q2,它们可以表示为:

C p ( i , j ) = ∑ o H p ( i , j ) ⋅ T H ( i + m , j + n ) , C r ( i , j ) = ∑ u H r ( i , j ) ⋅ T H ( i + m , j + n ) . C_p(i,j) = \sum_{o} H_p(i,j) \cdot T_H(i+m,j+n), \\ C_r(i,j) = \sum_{u} H_r(i,j) \cdot T_H(i+m,j+n). Cp(i,j)=oHp(i,j)TH(i+m,j+n),Cr(i,j)=uHr(i,j)TH(i+m,j+n).

其中 m ∈ [ − q / 2 , q / 2 ) , n ∈ [ − q / 2 , q / 2 ) m \in [-q/2, q/2), n \in [-q/2, q/2) m[q/2,q/2),n[q/2,q/2)

然后使用一个轻量级的卷积块来估计流场 Δ p , Δ r ∈ R X × Y × 2 \Delta_p, \Delta_r \in \mathbb{R}^{X \times Y \times 2} Δp,ΔrRX×Y×2,它们在模态间起到空间对应关系的作用:

{ Δ p , Δ r } = Conv ( Concat ( B p , C p , B r , C r ) ) . \{ \Delta_p, \Delta_r \} = \text{Conv}(\text{Concat}(B_p, C_p, B_r, C_r)). {Δp,Δr}=Conv(Concat(Bp,Cp,Br,Cr)).

接下来,采用可微的双线性采样操作,基于 { Δ p , Δ r } \{ \Delta_p, \Delta_r \} {Δp,Δr} 对特征进行扭曲,这种操作线性插值了扭曲位置周围邻域的特征。正式地说,对齐的鸟瞰图(BEV)特征 B p , B r B_p, B_r Bp,Br 获取方式如下:

B p ( p ) = Interp ( B ( p + Δ p ) ) , B r ( p ) = Interp ( B ( p + Δ r ) ) , B_p(p) = \text{Interp}(B(p + \Delta_p)), \quad B_r(p) = \text{Interp}(B(p + \Delta_r)), Bp(p)=Interp(B(p+Δp)),Br(p)=Interp(B(p+Δr)),

其中, p ∈ { P , I } p \in \{ P, I \} p{P,I},在这里, Interp ( ⋅ ) \text{Interp}(\cdot) Interp() 表示邻域双线性插值。然后将它们融合为:

B p = Conv ( Concat ( B p , B r ) ) . B_p = \text{Conv}(\text{Concat}(B_p, B_r)). Bp=Conv(Concat(Bp,Br)).

得益于融合前的基于流的空间对齐,它避免了由外部冲中突引起的特征不协调。

Dissolved Query Recovering Mechanism

基于融合的鸟瞰图(BEV)特征 B p B_p Bp,遵循[3]的方法,大多数先前方法直接生成类特定的融合 Heatmap H p ∈ R X × Y × N e H_p \in \mathbb{R}^{X \times Y \times N_e} HpRX×Y×Ne 并选择 Top-Kp 局部最大候选索引。所选候选者的信息用于初始化对象查询 Q r ∈ R K r × C Q_r \in \mathbb{R}^{K_r \times C} QrRKr×C 的上下文特征和位置嵌入,这些查询通过 DETR 风格的解码层用于聚合相关的上下文和预测框参数。
因此,确保初始查询的高质量对准确检测至关重要,因为如果没有相应的查询,对象是不太可能被回忆起来的。从理论上讲,我们期望融合查询 能够整合来自点云和图像模态的所有有价值的目标性线索,使它们能够继承每种模态的独特检测能力。
在这里插入图片描述
然而,我们发现当前的方法 ( { G T p ∪ G T r } ) ( \{GT_p \cup GT_r\} ) ({GTpGTr}),如图5所示,这意味着在 ( { G T p ∪ G T r } ) ( \{GT_p \cup GT_r\} ) ({GTpGTr}) 中的许多对象,如果未被融合查询匹配,可以通过模态特定查询来回忆。我们的研究显示,尽管当前方法学到的融合策略确实可以识别新对象,但它将牺牲不可忽视的单模态检测能力的一部分。因此,研究如何在利用跨模态互补的同时保持单模态检测能力是至关重要的。

因此,我们提出了一个溶解查询恢复(Dissolved Query Recovering, DQR)机制,以明确保持单一模态的检测能力。我们的基本概念围绕着探索那些因冲突而溶解在融合Heatmap中的查询,但可以从单一模态Heatmap中恢复的查询。此外,我们还全面整合了多源查询,以提高召回率。
在训练过程中,我们采用了文献[1]中提出的匹配成本和损失函数。具体来说,我们优化了所有边界框预测的检测损失 L p L_p Lp,这包括对所有结果的分类损失以及与GT框匹配的正样本对的位置回归损失。此外,我们还使用了Focal Loss L H z ∈ F L_{Hz} \in F LHzF,用于三种Heatmap预测,这些预测由GT框中心生成的具有高斯分布的GT图。需要注意的是,对于 L p L_p Lp L H z L_{Hz} LHz,GT图应该通过融合掩码 M M M 同步进行遮蔽。总损失定义为 L = L d e t + L H L = L_{det} + L_{H} L=Ldet+LH

相关文章:

消除 BEV 空间中的跨模态冲突,实现 LiDAR 相机 3D 目标检测

Eliminating Cross-modal Conflicts in BEV Space for LiDAR-Camera 3D Object Detection 消除 BEV 空间中的跨模态冲突,实现 LiDAR 相机 3D 目标检测 摘要Introduction本文方法Single-Modal BEV Feature ExtractionSemantic-guided Flow-based AlignmentDissolved…...

【免安装的MATLAB--MATLAB online】

目录: 前言账号的注册图片处理的示例准备图片脚本函数 总结 前言 在计算机、数学等相关专业中,或多或少都会与MATLAB产生藕断丝连的联系,如果你需要使用MATLAB,但是又不想要安装到自己的电脑上(它实在是太大了啊&#…...

Flyway 数据库版本管理

一、Flyway简介 Flyway是一款开源的数据库迁移工具,可以管理和版本化数据库架构。通过Flyway,可以跟踪数据库的变化,并将这些变化作为版本控制的一部分。Flyway支持SQL和NoSQL数据库,并且可以与现有的开发流程无缝集成&#xff0…...

lua学习笔记19(面相对象学习的一点总结)

print("*****************************面相对象总结*******************************") object{} --实例化方法 function object:new()local obj{}self.__indexselfsetmetatable(obj,self)return obj end-------------------------如何new一个对象 function object:…...

视觉SLAM学习打卡【10】-后端·滑动窗口法位姿图

本节是对上一节BA的进一步简化,旨在提高优化实时性.难点在于位姿图部分的雅可比矩阵求解(涉及李代数扰动模型求导),书中的相关推导存在跳步(可能数学功底强的人认为过渡的理所当然),笔者参考了知…...

【动态规划 区间dp 位运算】100259. 划分数组得到最小的值之和

本文涉及知识点 动态规划 区间dp 位运算 LeetCode100259. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues,长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组,对于第 ith 个子数…...

CSS核心样式-02-盒模型属性及扩展应用

目录 三、盒模型属性 常见盒模型区域 盒模型图 盒模型五大属性 1. 宽度 width 2. 高度 height 3. 内边距 padding 四值法 三值法 二值法 单值法 案例 4. 边框 border 按照属性值的类型划分为三个单一属性 ①线宽 border-width ②线型 border-style ③边框颜色 bo…...

在 Google Cloud 上轻松部署开放大语言模型

今天,“在 Google Cloud 上部署”功能正式上线! 这是 Hugging Face Hub 上的一个新功能,让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…...

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块,首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中: const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…...

美团笔试复盘

昨天做了美团的笔试,现在复盘一下。 1、将数组按照绝对值大小排序 有道算法题解决思路需要将数组按照绝对值大小进行排序,我使用的是sort方法Comparator比较器实现的,这里记录一下: public static void main(String[] args) {In…...

IntelliJ IDEA - Since Maven 3.8.1 http repositories are blocked

问题描述 新下载的 IDEA 在构建项目时,在下载引用的包时出现 “Since Maven 3.8.1 http repositories are blocked” 的问题。 原因分析 从 Maven 3.8.1 开始,不再支持 http 的包了。由于现在对网络安全的日益重视,都在向 https 转变&#…...

Django的APP应用更名(重命名)流程

将Django中的一个现有APP更名是一个需要谨慎操作的过程,因为它涉及到多个文件和配置的更新。下面是详细的步骤和一些补充细节,帮助你更顺利地完成APP重命名: 1. 修改APP名称及相关引用 更改APP目录名称: 首先,重命名…...

ChatGLM3-6B大语言模型离线执行

ChatGLM3-6B大语言模型离线执行 模型准备 一般而言,模型和模型参数可以通过如下三个模型源进行相应的下载: HuggingFace | ModelScope | WiseModel 本实例中,使用的是HuggingFace的源下载,相应的地址如下: HuggingFa…...

了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步,显著提升了各种任务的完成度。然而,其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数,需要…...

2024.4.14力扣每日一题——设计哈希集合

2024.4.14 题目来源我的题解方法一 链表数组 题目来源 力扣每日一题;题序:705 我的题解 方法一 链表数组 由于给定限制次数为10000,所以构造一个长度为10001的链表数组。对于add操作先看数组对应的位置是否为null或者为空,若是…...

SQL explain 显示子查询A类型为ALL怎么优化

当 SQL EXPLAIN 显示子查询 A 的类型为 ALL 时,这意味着数据库系统正在执行全表扫描,而不是使用索引来执行子查询。全表扫描可能会导致性能下降,特别是在大型表上。 为了优化这种情况,您可以考虑以下几点: 1. **索引…...

网络协议学习——IP协议

IP(Internet Protocol,互联网协议)是网络中最基本的协议之一,负责在互联网中进行数据包的传输。下面是对IP协议的详细讲解: IP协议的作用 IP协议是在网络层(第三层)上工作的协议,它的…...

MATLAB初学者入门(1)—— 基础知识和功能介绍

MATLAB(Matrix Laboratory)是一种用于数值计算、可视化以及编程的高性能语言环境。它广泛应用于工程、科学研究和教育等领域。以下是对MATLAB基础知识和编程技巧的系统性讲解,分为几个主要部分: 1. 基础操作 变量和表达式 在MAT…...

React Css 四种引入方式

React CSS 内联样式 优点 样式之间不会有冲突可以动态获取组件中state的值 缺点 要使用驼峰标识部分样式没有很友好的提示如果大量去写内敛样式 容易造成代码混乱伪类和伪元素无法编写 class HighCom extends PureComponent {constructor(props) {super(props)this.state…...

题目:输入3个数a,b,c,按大小顺序输出。

题目:输入3个数a,b,c,按大小顺序输出。    There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried abou…...

AI预测体彩排3第3弹【2024年4月14日预测--第1套算法开始计算第3次测试】

今天咱们继续测试第1套算法和模型,今天是第3次测试,目前的测试只是为了记录和验证,不建议大家盲目跟买。我的目标仍旧是10次命中3-4次!~废话不多说了,直接上结果! 2024年4月14日排3的七码预测结果如下 第一套&…...

Android 在xml 布局中如何嵌套 Jetpack Compose

最近在项目开发的过程中需要用到 Jetpack Compose,之前没有接触过Compose,所以项目一直没有用到Compose。通过查看官网发现Compose上手比较快,但是准备比较复杂的布局要转换成Compose 不是一件容易的事情。那有没有可能只是对成熟的项目中的x…...

Spring Boot统一功能处理(一)

本篇主要介绍Spring Boot的统一功能处理中的拦截器。 目录 一、拦截器的基本使用 二、拦截器实操 三、浅尝源码 初始化DispatcherServerlet 处理请求(doDispatch) 四、适配器模式 一、拦截器的基本使用 在一般的学校或者社区门口,通常会安排几个…...

我与C++的爱恋:类与对象(二)

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 ​ 本篇着重介绍构造函数和析构函数,剩余内容在下篇解答。 一、类的默认成员函数 如果一个类中什么成员都没有,简称为空类。 任何类在什么都不写时…...

BERT入门:理解自然语言处理中的基本概念

1. 自然语言处理简介 自然语言处理(Natural Language Processing,NLP)是人工智能领域的重要分支,涉及计算机与人类自然语言之间的相互作用。NLP 的应用已经深入到我们日常生活中的方方面面,如智能助理、机器翻译、舆情…...

Discoverydevice.java和activity_discoverydevice.xml

一、Discoverydevice.java public class Discoverydevice extends AppCompatActivity {private DeviceAdapter mAdapter2;private final List<DeviceClass> mbondDeviceList new ArrayList<>();//搜索到的所有已绑定设备保存为列表private final List<Devic…...

华为OD机试 - 最多颜色的车辆(Java JS Python C C++)

须知 哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 文章目录 须知题目描述输入描述输出描述解析代码题目描述 在一个狭小的路口,每秒只能通过一辆车,假设车辆的颜色只有 3 种,找出 N 秒内经过的最多颜色的车辆数量。 三种颜色编…...

【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波——附3个算法源码

效果: MPU6050姿态解算-卡尔曼滤波+四元数+互补滤波 目录 基础知识详解 欧拉角...

NzN的C++之路--构造函数与析构函数

如果一个类中既没有成员变量也没有成员函数&#xff0c;这个类简称为空类。空类中其实并不是什么都没有&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成6个默认成员函数。那今天我们就来学习一下其中两个默认成员函数&#xff1a;构造函数与析构函数。先三连后看…...

【算法刷题day24】Leetcode:216. 组合总和 III、17. 电话号码的字母组合

文章目录 Leetcode 216. 组合总和 III解题思路代码总结 Leetcode 17. 电话号码的字母组合解题思路代码总结 草稿图网站 java的Deque Leetcode 216. 组合总和 III 题目&#xff1a;216. 组合总和 III 解析&#xff1a;代码随想录解析 解题思路 回溯三部曲&#xff1a;确定递归…...

图片上传网站变形的处理/seo网络营销招聘

目录 1. 下载IEDriverServer.exe 2. 将IEDriverServer.exe或IEDriverServer.64.exe放在C:\ProgramData\Anaconda3\Scripts下面 3. 测试代码 1. 下载IEDriverServer.exe 我在太平洋电脑网下载的&#xff0c;得到两个IEDriverServer.exe和IEDriverServer.64.exe&#xff0c;这…...

wordpress滑动相册/域名注册查询网站

背景当前业务存在以下场景&#xff1a;在一个事务内的最后一步是发送kafka消息&#xff0c;消费端收到通知后读取数据并做处理。但是由于kafka几乎是即时收到消息&#xff0c;导致偶尔出现“在发完kafka和提交事务的间隙&#xff0c;消费端收到了消息并读取到了事务提交前的数据…...

电脑网站打不开是什么原因造成的/网络推广网站建设

http://msdn.microsoft.com/en-us/library/9bbdkx3k.aspx ——————————————————————————————————————————————————————————————————...

武进网站建设价格/技术教程优化搜索引擎整站

有时候数组要转为对象操作&#xff0c;用对象的指向操作符&#xff0c;有两种方法 方法一&#xff1a; $arr[a>10,b>100,c>Hello];$obj(Object)$arr;echo output:.$obj->c;方法二&#xff1a;$arr[a>10,b>100,c>Hello];$arr0 json_encode($arr);$arr1 j…...

做3dh春丽网站叫什么/今日头条新闻大事

1. 使用简单事件处理器 可以用几种不同的方式处理事件。最直接的方式是用事件属性创建一个简单事件处理器&#xff08;simple event handler&#xff09;。元素为它们支持的每一种事件都定义了一个事件属性。举个例子&#xff0c;onmouseover事件属性对应全局事件mouseover&…...

视频网站如何做引流/手机百度app最新版下载

兄弟姐妹们好&#xff0c;又是好久没有更新了&#xff0c;今天给大家简单介绍代理模式&#xff0c;一个很简单的设计模式&#xff0c;旨在不改变原对象的情况下通过代理对象来控制对原对象的访问。代理模式根据具体情况还可以分为远程代理、虚拟代理、保护代理等&#xff0c;下…...