当前位置: 首页 > 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…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...