3D Semantic Occupancy Prediction

3D 语义占用预测(3D Semantic Occupancy Prediction)旨在将真实世界环境划分为规则的三维体素(voxel)网格,并对每个体素同时预测:

  • 占用状态(Occupancy):该体素是否被物体占据
  • 语义类别(Semantic):若被占据,属于哪一种对象类别(如行人、车辆、建筑等)

此任务不仅重建空间几何,更补充了语义信息,使得每个体素都携带完整的环境感知信号

  • 全场景高精度感知:相比传统的鸟瞰图(BEV)或 3D 边界框检测,语义占用预测可在体素级别恢复垂直结构和微小物体,实现更细粒度的场景重建
  • 自主导航与规划:机器人或自动驾驶系统可基于完整的占用-语义图进行路径规划与避障决策,提高安全性与鲁棒性
  • 下游任务融合:融合占用预测结果,可增强 3D 目标检测、路径预测、地图构建等任务的表现,形成统一感知框架
  • 增强环境理解:比仅有 BEV(鸟瞰平面)或 3D 边界框更细致,垂直结构也被明确建模

技术架构流程

  1. 传感器输入:常见源包括单目/多目相机、LiDAR 点云,或两者的多模态融合。
  2. 特征提取:对图像采用卷积网络(CNN)或 Transformer,点云则利用稀疏卷积(SparseConv)等方法提取特征。
  3. 3D 表示构建:将 2D 特征“提升”(lifting)至 3D 体素空间,或直接在 3D 点云上构建体素化表示。
  4. 体素预测网络:基于 3D CNN、Transformer 或注意力机制,对每个体素进行占用与语义标签预测。
  5. 后处理与融合:可融合多帧、多传感器结果,或应用体渲染技术进一步细化预测。

典型方法分类

  • LiDAR 驱动方法 :直接在点云体素上应用稀疏卷积网络进行分类与分割,具有高精度但计算和存储开销较大。

  • Vision-Only 方法

    • TPVFormer:提出三视图(Tri‑Perspective View, TPV)表示,将 BEV 平面扩展为三个正交平面,并使用 Transformer 进行特征聚合,实现仅用相机输入即可预测稠密语义占用
    • OccFormer:Dual‑path Transformer 架构,将 3D 处理拆分为水平局部与全局两条路径,针对稀疏体素及类别不平衡问题提出专门的解码策略
  • 多模态融合方法

    • GaussianFormer3D:以 3D 高斯分布替代稠密体素,利用可变形注意力在点云与图像特征间进行跨模态融合,兼顾精度与内存效率
  • 生成式与不确定性建模

    • OccGen:基于扩散模型,通过逐步“去噪”生成更细致的 3D 占用图;
    • α‑OCC:从不确定性量化角度出发,传播深度与语义不确定性以增强鲁棒性和可解释性

数据集

  • SemanticKITTI:基于 KITTI,提供 360° LiDAR 序列的体素级语义标注,支持时序信息利用
  • nuScenes:涵盖相机与 LiDAR 的多传感器数据集,可用于验证跨传感器方法的泛化性能
  • Occ3D Benchmark:专门针对 3D 占用预测任务构建的大规模评测基准,提供标准化评价协议

评价指标

  • IoU (Intersection over Union):针对二元占用预测
  • mIoU (mean IoU):针对多类别语义预测的平均 IoU
  • Frame Rate (FPS):衡量模型在嵌入式或实时场景下的推理速度

挑战与未来方向

  1. 稀疏标注与类不平衡:体素级标注成本高,常造成少数类欠拟合,需要半/弱监督或伪标签策略。
  2. 计算与存储成本:高分辨率体素网格带来指数级开销,需设计更高效的表示(如高斯、平面投影)与剪枝机制。
  3. 时间和历史先验利用:动态场景下融合短期与长期记忆可提升连续帧一致性,如 LMPOcc 等方法探索历史路径先验 ([ResearchGate][1])。
  4. 不确定性量化:增强系统对“预测可信度”的评估,可用于安全决策与多传感器动态加权。
  5. 生成式技术引入:扩散模型等新范式有望在细节重建与稠密预测上超越传统网络。

3D 语义占用预测通过体素化的占用+语义标签,实现对环境的细粒度重建与理解。随着 TPV、Gaussian、生成式模型与长期记忆先验的出现,该领域正朝着更高精度、更低开销和更强鲁棒性的方向发展,并在自动驾驶、机器人导航等场景中展现出广阔的应用前景。

《SDG-OCC: Semantic and Depth-Guided Bird’s-Eye View Transformation for 3D Multimodal Occupancy Prediction》

在这里插入图片描述

这张图展示了 SDG-OCC 模型的整体架构,其核心目标是融合多视角的图像(Multi-View Image)和激光雷达点云(LiDAR Sweeps)数据,来精确地预测三维空间的占据情况(Occupancy Prediction)。整个框架可以分为三个主要部分:LiDAR 分支图像分支以及多模态融合与预测头

1. LiDAR 分支 (LiDAR Branch)

LiDAR 分支位于图的上方,负责处理和提取激光雷达点云的特征。

  • 输入 (Input): LiDAR Sweeps - 连续多个时刻(T-frame)的激光雷达扫描点云数据。
  • 处理流程:
    1. Voxelization (体素化): 将稀疏、不规则的激光雷达点云转换成规则的三维网格(体素)。这是一种标准操作,便于后续使用 3D 卷积网络进行处理。
    2. 3D Encoder (3D 编码器): 使用 3D 卷积神经网络(如 Sparse Convolution)来处理体素化的点云,提取出丰富的几何和空间特征。输出的是一个三维的特征体(3D feature volume)。
    3. Flatten (扁平化): 将 3D 特征体沿着垂直方向(z-axis)进行压缩或展平,生成一个鸟瞰图(Bird’s-Eye View, BEV)视角的特征图。这个 BEV 特征图 LiDAR Feature 包含了场景的高度和空间布局信息。
    4. FOAD (Fusion+Distillation): 这是一个关键模块,全称可能是 Feature-Oriented Alignment and Distillation。这个模块一方面用于后续的特征融合,另一方面,在训练过程中,它利用强大的 LiDAR 特征作为“教师”信号,通过知识蒸馏(Distillation)的方式来指导图像分支的学习。图中虚线箭头表示其在训练时的指导作用。

2. 图像分支 (Image Branch)

图像分支位于图的左下方,是该框架的核心创新所在,负责从 2D 图像中提取特征并转换到 3D BEV 空间。

  • 输入 (Input): Multi-View Image - 来自车辆周围多个摄像头的 T-frame 图像。
  • 处理流程:
    1. 2D Encoder (2D 编码器): 使用一个标准的 2D 卷积网络(如 ResNet)作为主干网络(backbone),对每一张输入的多视角图像进行编码,提取出各自的 2D 特征图。
    2. Multi-Task Head (多任务头): 这是该论文的一个关键设计。从 2D 编码器输出的特征被送入一个多任务头,该任务头同时执行两个子任务:
      • Semantic Mask (语义分割): 预测图像中每个像素的语义类别(如车辆、道路、行人等)。这为后续的特征转换提供了丰富的语义先验信息。
      • Depth Distribution (深度分布): 预测每个像素的深度值。不同于直接预测一个单一的深度值,这里预测的是一个深度值的概率分布,这能更好地处理深度估计中的不确定性。
    3. SDG View Transformation (语义和深度引导的视图转换): 这是整个框架的核心创新模块。它的目标是将 2D 图像特征高效且准确地"提升"(lift)到 3D BEV 空间。该过程包含以下几个关键步骤:
      • Co-point Depth & Context Feature: 结合多任务头输出的语义信息和深度分布信息,生成更可靠的特征。
      • SDG-BEV Pooling: 这是实现视图转换的关键操作。它利用预测出的深度分布 (Depth Distribution)语义信息 (Semantic Mask) 作为引导,将 2D 图像上的特征点(pixels)“投射”(pool)到 3D 空间中的对应位置,最终形成一个 BEV 视角的特征图 Camera Feature。语义信息在这里起到了关键的指导作用,例如,模型可以根据语义判断某个像素(比如属于“天空”)是否应该被投影到 3D 空间中,从而避免了无效或错误的投影。

3. 多模态融合与预测 (Fusion and Prediction)

2.5D地图(BEV,鸟瞰图)的含义

BEV(Bird’s Eye View,鸟瞰图)是什么?

BEV 是一种从垂直上方俯视的视角生成的地图或图像,类似于鸟类观察地面的视角。它通常包含地面上物体的平面位置信息(X、Y坐标),并可能叠加其他维度的数据(如高度、深度、语义信息等)。BEV 在自动驾驶、无人机导航、机器人定位等领域广泛应用,因为它能直观展示周围环境的全局空间关系。

为什么称为“2.5D”?

“2.5D”(二维半)的命名源于其介于2D平面3D空间之间的特性,具体体现在以下方面:

(1)基础是二维平面
  • BEV 本质上是一个二维投影平面(X-Y 平面),类似于传统地图的俯视图,仅描述物体在水平方向上的位置和分布。
(2)叠加部分三维信息
  • 高度/深度信息:通过传感器(如激光雷达、摄像头)或算法估计,BEV 中每个点可能包含高度(Z轴)或距离地面的垂直高度差(例如,车辆、行人的高度)。
  • 语义与属性:标注物体类别(如车道线、障碍物)、运动方向、速度等动态信息。
  • 局部三维结构:对关键物体(如车辆、行人)使用边界框(Bounding Box)表示其三维尺寸(长、宽、高),但整体环境仍以二维布局为主。
(3)非完整的三维建模
  • 与全3D点云或三维网格不同,2.5D 地图仅保留部分与垂直视角相关的三维特征,避免了全3D建模的高计算成本和复杂性。
2.5D BEV 的应用场景与优势
(1)自动驾驶中的核心作用
  • 环境感知:通过多传感器融合(摄像头、雷达、激光雷达),BEV 提供车辆周围360°的环境模型,便于目标检测、路径规划。
  • 决策与控制:BEV 的俯视视角直接对应车辆运动平面(如车道线、障碍物位置),简化了路径规划算法。
(2)计算效率与实用性
  • 降低复杂度:相比全3D建模,2.5D 仅需处理二维平面+部分属性,计算资源消耗更低,适合实时系统。
  • 数据融合友好:多视角摄像头或传感器数据可高效投影到统一BEV平面,减少视角畸变问题。
(3)游戏与虚拟仿真
  • 在游戏中,2.5D BEV 可实现伪3D视觉效果(如斜视角地图),兼顾性能与沉浸感。
2.5D 与 3D 的核心区别
维度2.5D BEV全3D
数据结构2D平面 + 局部高度/属性完整的3D空间(X、Y、Z全维度)
应用场景自动驾驶、机器人导航、游戏俯视图三维建模、VR/AR、高精度仿真
计算成本低(适合实时处理)高(需强大算力支持)
  • 2.5D BEV 的本质:通过二维平面承载部分三维信息,平衡了信息丰富度与计算效率。
  • 命名逻辑:“2”代表基础的二维俯视平面,“0.5”表示叠加的有限三维属性,“D”(维度)体现其超越纯2D的能力。
  • 核心价值:在自动驾驶等场景中,2.5D BEV 成为连接感知、决策与控制的“中间表示层”,是复杂环境感知的高效解决方案。

这部分位于图的右侧,负责融合来自两个分支的 BEV 特征,并最终生成占据栅格地图。

  • 处理流程:
    1. 特征融合:
      • LiDAR FeatureCamera Feature 都是 BEV 视角的特征图,因此可以很方便地进行融合。
      • 融合过程受到来自 LiDAR 分支的 FOAD 模块的引导。具体来说,FOAD 模块会识别出 LiDAR 认为重要的区域,然后指导模型更有选择性地将图像特征融合进来,增强这些区域的特征表达。图中从 FOAD 指向 Camera Feature 的箭头就代表了这个引导过程。
    2. BEV Encoder (BEV 编码器): 将融合后的多模态 BEV 特征送入一个 BEV 编码器(通常是 2D 卷积网络),进一步处理和提炼这些特征,捕捉更复杂的空间关系。
    3. Occupancy Head (占据头): 这是网络的最后一个部分。它接收 BEV 编码器输出的增强特征,并将其上采样(upsample)或解码回一个三维的体素空间,最终预测出每个体素被占据的概率。
    4. Occupancy Prediction (占据预测结果): 最终输出一个三维的占据栅格地图(Occupancy Map)。图中用一个立体的网格表示,不同的颜色代表不同的占据状态或语义类别。
    5. Loss (损失函数): 在训练过程中,将模型的预测结果 Occupancy Prediction 与真实的标签(Ground Truth)进行比较,计算损失函数,并通过反向传播来优化整个模型的参数。

SDG-OCC 框架通过一个精心设计的双分支结构来解决 3D 占据预测问题。

  • LiDAR 分支提供精确但稀疏的 3D 几何信息。
  • 图像分支是创新的核心,它不依赖于精确的外部相机参数进行 LSS (Lift-Splat-Shoot) 形式的转换,而是通过一个多任务头(预测语义和深度分布)来内部学习如何将 2D 图像特征转换到 3D BEV 空间。这种语义和深度引导 (SDG) 的方式使得视图转换更准确、更鲁棒,能够有效过滤掉无关信息(如天空),并更好地处理深度估计的不确定性。
  • 最后,通过一个由 LiDAR 特征引导的智能融合机制 (FOAD),将两种模态的优势结合起来,并通过后续的 BEV 编码器和占据头生成高精度的三维占据地图。

SDG-OCC 的设计巧妙地利用了语义和深度信息来克服多模态 3D 感知中的核心挑战——即如何有效、准确地进行跨模态和跨视图的特征转换与融合

SDG 视图转换(SDG view transformation)核心在于解答一个问题:如何聪明地、高效地将 2D 图像信息“搬”到 3D 鸟瞰图(BEV)空间中去?

我们先理解传统方法(如 LSS)的痛点,再来看 SDG 是如何巧妙解决的

传统方法 (LSS) 的困境

你想把一张 2D 照片“立”起来,变成 3D 场景。LSS (Lift-Splat-Shoot) 的方法很直接:

  1. Lift (提升): 对图像中的每个像素点,暴力地在摄像头前方的一条射线上,猜测一系列可能的深度值(比如从 1 米到 80 米,每隔 1 米猜一次)。这样,一个像素点就变成了空间中的一长串“候选点”(虚拟点)。
  2. Splat (溅射): 把这些海量的候选点连同它们的图像特征,像泼墨一样“溅射”到一个统一的 3D BEV 网格里。
  3. Shoot (拍摄): 用一个网络来处理这个包含了巨量冗余信息的 BEV 网格,最终生成结果。

我们有一辆自动驾驶汽车,它通过车上的一个前置摄像头拍摄到了一张照片。我们的目标是利用这张 2D 照片,生成一个上帝视角的 2.5D 地图(BEV,鸟瞰图),并在这个地图上标出前方障碍物的位置。LSS 就是实现这个目标的一种非常经典的方法。

第一步:Lift (提升) - 将 2D 像素“提升”为 3D 射线上的“候选点云”

目标: 为图像中的每个像素点,在 3D 空间中创造出一系列可能的“候选点”,并为每个候选点赋予来自图像的特征。

具体操作:

  1. 输入:

    • 一张 2D 图像 (例如,分辨率为 224 x 400 像素)。
    • 这张图像对应的相机内外参数 (Intrinsics and Extrinsics)。内参告诉我们相机的焦距、成像中心等信息;外参告诉我们相机在车身坐标系中的精确位置和朝向。这些是进行 3D 几何转换所必需的。
  2. 主干网络提特征: 首先,将这张 2D 图像输入到一个卷积神经网络 (CNN,例如 ResNet 或 EfficientNet) 中。这个网络会提取图像的深层特征。输出的结果是一个特征图 (Feature Map),它的分辨率可能比原图小 (例如,14 x 25),但通道数更多 (例如,256 个通道)。现在,特征图上的每一个“像素”都包含了一个丰富的上下文特征向量 (Context Vector)。这个向量“理解”了原始图像对应区域的内容(比如,“这里看起来像一辆车的车尾”)。

  3. 生成深度分布 (关键步骤): 这是 LSS 的核心思想。对于特征图上的每一个像素,模型不会只预测一个单一的深度值,而是预测一个概率分布

    • 预设深度“桶”: 我们会预先设定一系列离散的深度值,可以称之为“深度桶 (Depth Bins)”。例如,我们规定深度范围是 [4.0米, 45.0米],总共分为 82 个桶,每个桶的间隔是 0.5 米。所以我们的深度桶就是 4.0, 4.5, 5.0, ..., 45.0
    • 预测概率: 对于特征图上的某个像素,网络会输出 82 个概率值,每个概率值对应一个深度桶。这些概率值加起来等于 1。这就像在进行一个 82 分类的任务,判断这个像素的真实深度最有可能落在哪个桶里。
  4. 创建带特征的 3D 候选点: 现在,我们将上述信息组合起来。

    • 对于特征图上的一个像素 (u, v)
      • 我们知道它的上下文特征向量 C (一个 256 维的向量)。
      • 我们知道它在 82深度桶 d_i 上的概率 p_i
      • 利用相机内外参数,我们可以从像素 (u, v) 和每个深度桶 d_i 计算出其在车身坐标系下的 3D 坐标 (x, y, z)_i
    • “提升”操作: 我们将特征向量 C 与其对应的深度概率 p_i 相乘 (C' = p_i * C),然后将这个加权后的特征 C' 与其 3D 坐标 (x, y, z)_i 关联起来。
    • 我们对所有 82 个深度桶都执行这个操作。这样,图像上的一个像素,就被“提升”成了一条位于 3D 空间中的、由 82 个带特征的“候选点”组成的射线。

假设图像左前方有一个像素点,网络判断它很可能是一辆车的尾部,真实距离是 10 米。那么在 LSS 的 Lift 步骤后,这个像素点会生成一条由 82 个候选点组成的 3D 射线。其中,深度在 10.0 米附近的那个候选点,其被赋予的特征向量权重会非常高(因为深度概率 p 在这里最大),而距离很远或很近的点的特征权重则会非常低。

Lift 步骤:从相机出发,每个像素都生成了一条射线,射线上布满了离散的深度点

第二步:Splat (溅射 / 拍扁) - 将 3D 点云“拍扁”到 BEV 网格中

目标: 将来自所有摄像头、所有像素的海量 3D 候选点,高效地组织到一个统一的、鸟瞰图视角的 2D 网格中。

具体操作:

  1. 定义 BEV 网格: 首先,我们在车辆的 x-y 平面上定义一个网格。例如,一个 200 x 200 的网格,每个格子代表真实世界中 0.5m x 0.5m 的区域。这个网格的每个单元格都初始化为一个零向量(维度与特征向量 C' 相同,即 256 维)。

  2. “溅射” / 累加: 现在,我们遍历在 Lift 步骤中生成的所有 3D 候选点(来自所有像素、所有深度桶)。

    • 对于每一个 3D 候选点,我们查看它的 (x, y) 坐标,确定它落在了 BEV 网格的哪个单元格里。
    • 然后,我们将这个候选点的加权特征向量 C'累加到对应 BEV 单元格的向量上。

这个过程就像是制作一张“数字沙画”:

  • 你的手(相机)里握着不同颜色的沙子(特征)。
  • Lift 步骤告诉你每种颜色的沙子(特征)应该撒向哪个 3D 位置,以及应该撒多少(深度概率)。
  • Splat 步骤就是你把这些沙子按照指示撒到下方的一张画布(BEV 网格)上。同一个位置可能会被撒上好几次沙子(来自不同像素点、不同摄像头的贡献),它们的颜色会混合在一起(特征向量累加)。

关键点: 由于 Lift 步骤中,只有那些深度概率高的候选点才拥有权重显著的特征向量,所以只有它们才能对最终的 BEV 网格产生有意义的贡献。那些“猜错”了深度的点,因为其特征向量权重几乎为零,所以在累加时几乎没有影响。这就巧妙地过滤掉了大量无用信息。

例子小结: 之前那个 10 米远的车辆像素,它生成的 82 个候选点中,只有深度在 10 米附近的那个点(假设其 (x, y) 坐标落入 BEV 网格的第 (i, j) 个单元格),会把一个很强的特征向量累加到 BEV_Grid[i, j] 中。而其他 81 个深度猜错的点,贡献几乎为零。

Splat 步骤:将不同相机(图中为前后两个相机)生成的 3D 点云(Frustum Points)全部“拍扁”到一个统一的 BEV 网格上

第三步:Shoot (拍摄 / 处理) - 在 BEV 图上进行感知任务

目标: 对已经包含了丰富特征的 BEV 网格图进行分析,完成最终任务(如物体检测)。

具体操作:

  1. 输入: 第二步生成的 200 x 200 x 256 的 BEV 特征图。
  2. BEV 编码器: 这个 BEV 特征图本质上就是一张多通道的“伪图像”。我们可以直接把它喂给一个标准的 2D 卷积神经网络(也叫 BEV Encoder)。
  3. 任务头 (Task Head): 在这个 2D CNN 的最后,接上不同的任务头。
    • 如果是物体检测任务: 接一个检测头 (如 CenterPoint 或 YOLO 的检测头),它会在这张 BEV 图上输出物体的 2D 边界框、朝向和类别。
    • 如果是语义分割任务: 接一个分割头 (如 U-Net),它会为 BEV 图上的每个像素点分配一个语义标签(如道路、人行道、障碍物区域等)。

例子小结: 经过 Splat 后,我们得到了一张 BEV 特征图。在车辆前方 10 米左右对应的 (i, j) 格子附近,会有一个由强特征向量构成的“亮斑”。第三步的 2D CNN 看到这个“亮斑”后,就会识别出:“根据这个特征,这里应该是一辆车”,然后输出一个包围该区域的边界框。

  • Lift: (2D 图像特征 + 深度分布) → 3D 候选点云 (带特征)。这是从 2D 到 3D 的过程,核心是学习性的深度分布。
  • Splat: 3D 候选点云 → 2.5D BEV 特征图。这是一个“拍扁”和信息聚合的过程,将不同视角的信息统一到 BEV 视图。
  • Shoot: 2.5D BEV 特征图 → 最终任务结果。这是一个标准的 2D 感知过程,在 BEV 空间完成检测或分割。

LSS 的革命性在于,它将过去需要多步、依赖复杂几何计算的流程,变成了一个端到端可训练的神经网络。整个过程(尤其是深度分布的预测)都是通过梯度下降来学习的,使得模型可以自己学会如何最好地将 2D 图像信息转换到 3D 空间,而不需要过多的人工规则

痛点很明显:

  • 计算量巨大: 为每个像素猜测几十上百个深度点,会产生天文数字般的虚拟点,计算开销非常大。
  • 深度不准: 凭空猜测的深度大部分是错的,导致大量的计算资源被浪费在处理无效的“鬼影”特征上,影响最终精度。BEV 特征也因此变得很稀疏,因为大部分空间位置其实没有有效的特征落入。

SDG 视图转换的智慧解决方案

SDG (Semantic and Depth-Guided) 的思路是:“我不需要暴力猜测,我可以用线索来做出更聪明的判断。” 它利用了两个核心线索:LiDAR 提供的稀疏但精确的深度图像本身提供的丰富语义信息

下面我们结合图中的流程,一步步看它是如何实现的。

在这里插入图片描述

图例解析
  • P (Projection): 投影,指将 LiDAR 点云投影到图像上。
  • G (Gated-attention): 门控注意力机制,一种信息筛选和融合的方式。
  • F (Diffusion): 扩散,指将稀疏的深度信息进行扩展。
  • L (Bi-Linear Discretization): 双线性离散化,一种生成虚拟点的技术。
  • (Outer Product): 外积,一种特征融合的方式。
详细步骤解析

第一步:准备“线索”——初始深度图和图像特征

  1. 左上输入 (LiDAR Sweeps): 首先,获取稀疏但准确的 LiDAR 点云。通过 P (投影) 操作,将这些 3D 点投影到 2D 图像平面上,形成一个稀疏的深度图 (Depth Map)。这个深度图上只有被 LiDAR 点打到的地方才有准确的深度值,其他地方都是空的。
  2. 左侧输入 (1/4 Scale Image Feature): 同时,一个标准的 2D 图像经过主干网络(如 ResNet)提取特征,得到一个 1/4 分辨率的特征图。这个特征图被送入 Depthnet 进行初步处理。

第二步:语义与深度特征的智能交互

这是 SDG 的一个精妙设计。它认为“语义”和“深度”是相辅相成的。比如,识别出这是“天空”,那它的深度就是无穷远;识别出这是“车辆”,那它的深度就应该在一个合理的范围内。

  1. Depthnet & Head 分离: Depthnet 的输出被送入两个并行的头:Semantic Head (语义头) 和 Depth Head (深度头)。
  2. Gated-attention (门控注意力):
    • 语义头先生成初步的语义特征,这些特征会通过一个门控机制去指导深度头。这好比告诉深度头:“注意,这块区域是车辆,你应该更关注车辆可能的深度范围。”
    • 反过来,深度头生成的初步深度特征也会通过门控机制去反哺语义头。这好比告诉语义头:“我在这里检测到了一个很近的深度突变,这很可能是一个物体的边缘,请你更仔细地判断它的语义类别。”
    • 通过这种双向的“商议” (Gated-attention),Semantic HeadDepth Head 能够生成彼此增强、更加准确的语义和深度预测。

第三步:创造精确且高效的“虚拟点”

这是解决 LSS 痛点的核心步骤。我们不再盲目猜测深度,而是基于线索生成少量但高质量的虚拟点。

  1. Semantic Mask (语义掩码): 语义头最终输出一张语义分割图,准确地告诉我们图像中每个像素是什么(车、人、路、天空等)。
  2. Diffusion (扩散 F): 将第一步得到的稀疏 LiDAR 深度图,与 Semantic Mask 结合。在相同语义的区域内,将稀疏的深度值进行“扩散”或插值。例如,在一个被识别为“车辆侧面”的区域,即使 LiDAR 只打到了几个点,我们也可以合理地推断整个侧面的深度是相似的,从而填充这片区域的深度。这就得到了一个半稠密的深度图
  3. Bi-Linear Discretization (双线性离散化 L): 这是生成虚拟点的关键一步。它不再像 LSS 那样在整条射线(几十上百个点)上生成虚拟点。而是根据上一步得到的 半稠密深度图 ,在每个像素对应的 精确深度值附近 ,通过双线性插值的方式,只生成 极少数(例如 2-4 个) 高质量的虚拟点。因为我们的深度估计已经相当准了,所以只需要在真实深度附近小范围采样即可。同时,语义掩码会告诉我们哪些区域(如天空)根本不需要生成虚拟点。
    • 结果: 我们得到了一批数量可控、位置精准的“虚拟点云”。

第四步:特征融合与 BEV 特征生成

现在我们有了精确的虚拟点,需要给它们赋予对应的图像特征,然后汇集到 BEV 空间。

  1. Context Feature & Depth Head Feature: Depthnet 中提取的上下文特征(Context Feature)和 Depth Head 输出的深度相关特征,共同构成了每个虚拟点要携带的丰富信息。
  2. (Outer Product): 通过外积操作,将虚拟点的位置信息和其对应的图像特征(Context Feature + Depth Head Feature)进行高效融合。
  3. BEV Pooling: 最后,将所有携带了丰富特征的、精确的虚拟点,汇集(Pool)到一个统一的 BEV 网格中。由于我们的虚拟点数量少且位置准,这个过程就像是精准地“点描”,而不是 LSS 的“泼墨”。最终生成高质量、信息密集的图像 BEV 特征 (image BEV features)

SDG 如何解决 BEV 稀疏问题

  • 告别盲猜: SDG 不再盲目猜测深度,而是利用 LiDAR 提供的“绝对真理”(稀疏深度)作为锚点。
  • 语义引导: 它利用图像的语义信息(哪里是车、哪里是路)来指导深度的“扩散”和虚拟点的生成,避免了在天空、远景等无关区域浪费计算。
  • 智能交互: 通过门控注意力机制,让语义和深度的预测互相帮助,提升彼此的精度。
  • 精准打击: 最终只在最可能存在物体的位置生成少量、高质量的虚拟点,大大减少了计算量。
  • 密集 BEV 特征: 因为虚拟点的位置和特征都更可靠,最终汇集成的 BEV 特征图自然就更密集、更有效,为下游的 3D 检测或分割任务提供了更高质量的输入,从而提升了最终的精度和速度。

LSS 是“广撒网,捞不上鱼”,而 SDG 则是“用声呐(LiDAR+语义)定位鱼群,再精准下网”,效率和效果自然不可同日而语

在这里插入图片描述

这张图展示的是 SDG-OCC 中最核心的两个“杀手锏”:如何优雅地融合特征以及如何聪明地进行知识蒸馏

我们先抓住核心矛盾:

  • 图像特征(Image Features)色彩纹理丰富,但不知道物体的精确远近和形状。
  • LiDAR 特征(LiDAR Features)有精确的 3D 几何结构,但稀疏且没有颜色。
  • 直接相加/拼接(Naive Fusion) 会出问题,因为由于微小的标定误差或物体运动,两种特征在 BEV 空间上可能无法完美对齐,就像两张没对齐的透明胶片,叠起来图像会模糊。

SDG-OCC 的融合与蒸馏模块就是为了解决这个“对不齐”和“让图像分支变聪明”的问题。

Part 1: 动态邻域特征融合 (解决“对不齐”的问题)

这部分对应图 (c) 的上半部分流程,最终目的是生成高质量的融合特征 F_bev^fuse。它本质上是一个升级版的、更智能的“复制-粘贴”

让我们跟着图 (c) 的上半部分走一遍:

  1. 输入 (Inputs):

    • Source Feature (源特征): 来自图像分支的 BEV 特征图。我们把它想象成一张内容丰富但缺少 3D 信息的“底图”。
    • Cross Feature (交叉特征): 来自 LiDAR 分支的 BEV 特征图。我们把它想象成一张有精确轮廓但内容单一的“轮廓图”。
  2. 定义“查找范围” (Query, Key, Value):

    • Query (查询):Source Feature (图像底图) 中取出一个像素点的特征。这个 Query 就好像在问:“我这个像素点,对应到 LiDAR 轮廓图上,应该是什么样子?”
    • Key (键) & Value (值): Cross Feature (LiDAR 轮廓图) 同时充当 KeyValueKey 用于和 Query 进行匹配,Value 则是匹配成功后要被“复制”过来的内容。这里,作者做了一个巧妙的设计,不是点对点匹配,而是让 QueryCross Feature 中的一个邻域小方块 (patch) 进行匹配。这就解决了轻微的错位问题,因为即使中心点没对准,在周围的小范围内总能找到正确的对应关系。
  3. 计算相似度并加权 (Weight Calculation):

    • Query (图像特征) 与 Cross Feature 邻域小方块中的所有 Key (LiDAR 特征) 进行比较,计算相似度。
    • 同时,加入一个 Positional Bias (位置偏置)。这是一个很关键的修正项,它根据相对位置信息进行补偿,相当于告诉模型:“即使特征本身不太像,但如果它就在你应该在的位置,也请多给点关注”。
    • 将计算出的相似度和位置偏置相加,得到一个权重图 (Weight)。这张权重图表明,LiDAR 邻域小方块中的哪些像素点与当前图像像素点最相关。
  4. 门控注意力机制 (Gated-attention, representada por G):

    • 这是一个“审核”环节。上一步得到的 Weight 会经过一个 Sigmoid 函数(σ),生成一个 0 到 1 之间的“门控信号”。
    • 这个信号就像一个阀门,它会去动态地调整(element-wise multiply)从 Cross Feature 中提取出的 Value。如果门控信号接近 1,说明 LiDAR 的信息非常可信、非常重要,就让它顺利通过;如果接近 0,说明 LiDAR 的信息可能没用甚至是干扰,就把它抑制掉。
  5. 生成融合特征 (Fusion Feature):

    • 经过“审核”后的 Value,再与原始的 Source Feature (图像特征) 进行相加(element-wise add)。
    • 最终得到融合后的特征 F_bev^fuse。这个特征既保留了图像丰富的纹理信息,又通过智能查找和动态审核,精确地融入了 LiDAR 的几何结构信息,而且还克服了错位问题。

小结 (Part 1): 这个过程不是简单地把 LiDAR 特征 + 到图像特征上,而是图像特征作为“向导” (Query),主动地去 LiDAR 特征的邻域中“搜寻” (Key) 并“复制” (Value) 最相关、最可信的几何信息,最后再补充到自己身上。

Part 2: 占用驱动的主动蒸馏 (让图像分支变聪明)

这部分对应图 (c) 的下半部分流程。它的核心思想是:融合特征 F_bev^fuse 虽然效果好,但它依赖 LiDAR,计算成本高。我们能不能在训练时用它来“教会”纯图像分支,让图像分支在推理时(没有 LiDAR 的情况下或为了追求极致速度)也能达到接近融合的效果?这就是知识蒸馏。

  1. 什么是“占用驱动 (Occupancy-driven)”?

    • BEV 空间中,大部分区域是空地(非占用),只有少数区域有车、人等物体(占用)。在空地上,LiDAR 和图像的信息差别不大,没必要花大力气去学习。
    • “占用驱动” 指的是,我们只在那些被物体占据的“活跃”区域,才进行知识的重点转移。这就像老师辅导学生,不会把整本书都划重点,只会把最重要的章节和最难的考点(被占用的区域)圈出来,让学生重点学习。
  2. 什么是“主动蒸馏 (Active Distillation)”?

    • 这里的“主动”体现在方向性上。知识是单向地从“老师”(F_bev^fuse,融合特征)流向“学生”(F_bev^img,纯图像特征)。
    • 如图 (c) 所示,从 F_bev^fuse 出发,经过一个名为 Occupancy-driven active distillation 的模块,去指导 F_bev^img 的更新。
  3. 如何实现 (结合图 (b) 理解)?

    • (b) 展示了 SDG-KL,这里的 KL 指的是 KL 散度 (Kullback-Leibler divergence),这是一种衡量两个概率分布差异的数学工具,在知识蒸馏中常被用作损失函数。
    • 在训练时,模型会计算“老师”输出的特征分布 (Fusion Feature) 和“学生”输出的特征分布 (Image Feature) 之间的 KL 散度。
    • “占用驱动” 在这里体现为:这个 KL 散度损失只在被占用的“活跃”区域进行计算和反向传播。在非占用区域,这个损失的权重会很低甚至是零。
    • 通过最小化这个“有重点的”KL 散度损失,模型被强迫去优化纯图像分支的网络参数,使其生成的 F_bev^img 在关键区域无限接近于融合后的 F_bev^fuse

小结 (Part 2): 这是一个“教学”过程。“老师”(融合模块)把自己最精华的知识(在占用区域的、融合了 LiDAR 信息的特征),通过“划重点”(占用驱动)的方式,“传授”(主动蒸馏)给“学生”(图像分支)。经过反复训练,学生最终学到了老师的精髓,即便以后老师不在(推理时不使用 LiDAR),学生也能独立解决难题。 这极大地提升了模型的鲁棒性和实时性。

整体逻辑总结

  1. SDG-Fusion (图 a): 首先,通过图 (c) 上半部分的动态邻域融合机制,将图像和 LiDAR 特征智能地融合成一个高质量的 F_bev^fuse
  2. SDG-KL (图 b): 然后,在训练阶段,利用图 (c) 下半部分的占用驱动主动蒸馏机制,将 F_bev^fuse 的知识单向地、有重点地蒸馏给纯图像特征 F_bev^img
  3. 最终结果: 我们得到了一个双重优势
    • 在部署时,如果计算资源充足且需要最高精度,我们可以使用完整的融合模型(SDG-Fusion)。
    • 如果需要极致的实时性或在 LiDAR 失效的情况下,我们可以只使用被“教会”了的、性能强大的纯图像分支,因为它已经通过蒸馏学到了 LiDAR 的几何先验知识。

看懂MoCa:如何将“单向生成”的AI模型,调教成“双向理解”的检索大师

现在的AI模型,给它一张图,它能写出一段描述;你给它一段话,它能生成一幅画作。这些模型是出色的**“生成者”“描述者”**。

但这里有个问题:当你让它们去做一些需要深度 “理解” 的任务时,比如“请在我的相册里,找出那张‘傍晚在海边,一只金毛犬追逐红色飞盘’的照片”,它们往往表现不佳。

为什么会这样?MoCa框架正是为了解决这个核心矛盾而生。

核心问题:为什么AI“看得懂”却“找不准”

目前的视觉-语言模型(VLM)存在三大“先天缺陷”,导致它们在图文检索这类理解任务上力不从心。

  • 缺陷一:思维是“单行道”(单向注意力)

    • 问题:这些模型处理信息的方式就像我们阅读一本书,从左到右,一路读下去,无法方便地回头看上下文。这种“因果注意力”机制,让它在生成文本时很流畅,但在需要反复比对图像和文本细节时,就显得笨拙。
    • 比喻:它就像一个只能顺着路标开车的司机,无法随时掉头或查看地图全局,因此很容易错过最佳路线(最佳匹配)。在图文检索中,它要么偏重于看图,要么偏重于读文字,很难将两者完美地结合起来双向思考。
  • 缺陷二:饮食太“单一”(训练数据单一)

    • 问题:传统模型主要靠“一张图 + 一句短描述”这种简单的“图文对”进行训练。这就像一个学生只做选择题,虽然基础扎实,但一遇到需要长篇论述的复杂问题就束手无策。
    • 比喻:这好比一个只吃“米饭+青菜”的人,虽然能活,但营养不均衡,不够强壮。单一的数据让模型无法学会处理真实世界中复杂的图文关系(如一篇带有多张插图的新闻报道)。
  • 缺陷三:食材太“昂贵”(数据获取困难)

    • 问题:制作高质量的“图文对”需要大量人工标注,成本极高。与此同时,互联网上存在海量的、没有配对的图片和文本(比如,一个图片库和一部小说),这些宝贵的数据资源都被浪费了。

MoCa的目标:就是要把这些“单行道”思维的生成模型,通过一种轻量级、低成本的方式,改造成一个能够“双向思考”、精于理解和检索的“全能选手”。

MoCa的“两步改造法”:从单向到双向,从理论到实战

MoCa的设计分为两个核心阶段,就像一个完整的“培训课程”。

阶段一:学会“双向思考” —— 联合重建预训练

这是最关键的一步,目的是打破模型的“单行道”思维模式。

  • 核心思想:玩一个“填空拼图”游戏。
    • 具体做法:研究者从海量无标注数据中,随意拿来一张图和一段文字。然后,随机“遮住”(Mask)图片的一部分区域和文字中的几个词。模型的任务就是,看着没被遮住的部分,同时“猜出”被遮住的图片和文字是什么。
      • 猜文字(MLM):输入“一只[遮住]在草地上奔跑”,模型需要根据图片和上下文猜出“狗”。
      • 猜图片(MAE):遮住图片中狗的头部,模型需要根据文字描述“一只金毛犬”和图片中身体的部分,把头部“画”回来。
  • 为什么有效?
    • 这个“猜谜”任务强迫模型必须同时利用图像和文本的线索。想猜对词,必须看懂图;想补全图,必须读懂文字。一来二去,模型内部就自然而然地建立起了图像与文本之间的“双向立交桥”,学会了同时从两个方向进行理解和推理。
  • 巨大优势:这一步几乎零成本,因为它使用的是海量、免费的无标注数据,解决了数据昂贵的问题。

解释:就像教一个孩子认字,你不仅给他看“苹果”这两个字,还指着真实的苹果。然后你遮住“果”字让他猜,再遮住苹果的一部分让他想象。通过这种互动,他才能真正建立“苹果”这个词和实体苹果之间的双向联系。

阶段二:适应“真实战场” —— 异构对比微调

模型学会了“双向思考”的基本功,但还需要针对“考试”(实际任务)进行强化训练。

  • 核心思想:用多样化的“模拟题”进行实战演练。
    • 传统方法的局限:只用“短图文对”进行微调,好比考生只刷一种题型,容易死记硬背,缺乏泛化能力。
    • MoCa的创新:它把各种不同类型的数据混合在一起,进行“对比学习”。对比学习的目标是让模型拉近“正确配对”的距离,推远“错误配对”的距离。
      • 长文档配图:训练模型处理复杂的逻辑和长篇内容,好比做“阅读理解大题”。
      • 传统短图文对:巩固基础,好比做“看图说话选择题”。
      • 纯文本对:增强模型对语言的理解能力,即使没有图片也能举一反三。
  • 为什么有效?
    • 这种“大杂烩”式的训练,模拟了真实世界中信息的多样性。模型见多识广,就不会在某个特定任务上“偏科”,其生成的向量表示(Embedding)既能捕捉宏观语义,又能识别微观细节,泛化能力和鲁棒性大大增强。

MoCa在各项测试中都取得了优异的成绩。

  • “越级挑战”成功:一个经过MoCa改造的30亿参数(3B)的小模型,其性能竟然可以媲美甚至超越一个未经改造的70亿参数(7B)的大模型。这证明了MoCa框架的高效性轻量化优势。
  • 全面领先:在包含36个任务的MMEB和7个任务的ViDoRe-v2等多个权威基准测试中,MoCa都名列前茅,尤其是在需要深度理解和细节推理的复杂文档检索任务上,表现尤为突出。
  • 每个环节都不可或缺:实验证明,如果去掉第一阶段的“填空拼图”游戏,或者在第二阶段只用单一数据训练,模型性能都会大幅下降。这验证了MoCa设计的科学性和完整性。

MoCa框架的成功之处在于:

  1. 技术创新:它首创性地通过“联合重建任务”(填空+拼图),巧妙地将VLM的“单行道”思维改造成了“双向立交桥”,解决了模型理解能力不足的根本问题。
  2. 方法高效:它充分利用了海量、廉价的无标注数据进行预训练,再通过多样化的数据进行精调,实现了低成本、高性能的完美结合。
  3. 现实意义:MoCa为如何利用现有的强大生成模型,并将它们的能力拓展到更深层次的“理解”领域,提供了一条清晰可行的道路。

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

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

相关文章

在Word和WPS文字中添加的拼音放到文字右边

在Word和WPS文字中,可以方便地为中文汉字添加拼音。默认的是拼音在汉字的上方,而且不方便直接编辑。可以简单操作后把拼音放在汉字的右边,并且可以方便地编辑。一、Word:先为汉字添加拼音,然后选择性粘贴为纯文本即可1…

Torchv Unstrustured 文档解析库

一个强大且开发者友好的文档解析库,专为RAG(检索增强生成)应用优化。基于Apache Tika、Apache POI和PDFBox等业界标准Java库构建,TorchV Unstructured提供了增强的解析能力,具备智能表格结构识别和内容提取功能。 &am…

30天入门Python(基础篇)——第22天:面向对象之继承与多继承

目录 专栏导读 学习目标 1. 继承的基本概念 1.1 继承的优势 2. 单继承 2.1 基本语法 2.2 实际示例 3. super()函数详解 3.1 基本用法 3.2 super()的高级用法 4. 多继承 4.1 多继承语法 4.2 多继承示例 5. 方法解析顺序(MRO) 5.1 查看MRO 5.2 复杂的MRO示例 6. 实际应用案例 6…

学习人工智能所需知识体系及路径详解

一、核心基础知识体系1. 数学基础线性代数关键概念:向量空间、矩阵运算(转置/逆矩阵)、特征值分解、奇异值分解(SVD)应用场景:数据降维(PCA)、图像处理(矩阵变换&#xf…

前端实现银河粒子流动特效的技术原理与实践

文章目录 1,引言 2,特效效果简介 3,技术原理解析 1. 粒子系统基础 2. 银河结构的数学建模 3. 动态流动与旋转 4,实现流程图 5,关键代码实现与详细讲解 1. 初始化Three.js场景 2. 生成银河粒子数据 3. 创建粒子几何体与材质 4. 实现粒子的动态旋转与动画 5. 可选:粒子颜色…

Qt_Gif_Creator 基于Qt的屏幕gif录制工具

本文介绍了一个基于Qt框架的屏幕GIF录制工具的实现。该工具包含XYGifCreator类负责GIF创建逻辑,使用Gif.h库进行GIF编码;XYGifFrame类提供GUI界面,支持设置录制区域大小、帧率以及保存位置。工具采用多线程处理GIF编码,支持Window…

Linux实战:HAProxy全方位指南

一、负载均衡核心概念 1.1 负载均衡定义 负载均衡(Load Balance,简称LB)是一种基于硬件设备或软件服务的高可用反向代理技术。它将特定业务(如Web服务、网络流量)分发到后端的一个或多个服务器/设备,从而提…

22 BTLO 蓝队靶场 Countdown 解题记录

Tools: - ELK - CyberChef - OSINT (whole World Wide Web) Hunt #1: Brute Force DetectedSource: winevent-security (1/3) — 可疑暴力破解流量来自哪个IP地址 What is the IP address from which the suspicious brute force traffic is seen?? 我们需要寻找暴力破解…

文心一言4.5开源模型实战:ERNIE-4.5-0.3B轻量化部署与效能突破

文心一言4.5开源模型实战:ERNIE-4.5-0.3B轻量化部署与效能突破 文心一言4.5开源模型实战:ERNIE-4.5-0.3B轻量化部署与效能突破,本文介绍百度文心一言 4.5 开源模型中 ERNIE-4.5-0.3B 的轻量化部署与效能。该 3 亿参数模型破解大模型落地的算力…

SAP-MM-采购订单批量创建 excel 版

采购订单批量创建程序摘要:不含任何定制字段的导入,直接导入系统即可使用 该SAP ABAP程序实现采购订单的批量创建功能,主要特性包括: 支持通过Excel文件批量导入采购订单数据(XLS/XLSX格式) 提供数据校验功能,包括: 物料号有效性检查 采购凭证存在性验证 科目分配类别…

2_软件重构_一种组件化开发方式

一、碎碎念 首先先考虑下,什么情况下软件需要重构?我觉得答案有很多种,而且还有范围。当日益增长的需求与现有软件结构越来越无法匹配时——①具体表现可能为新增需求所导致的bug越来越多,一个新功能的改动牵一发而动全身&a…

今日行情明日机会——20250728

上证指数量能持续在200天均量线上,最近今天横盘震荡,今天依然收在5天均线上方,个股涨跌个数基本相同。目前依然强势,有望冲击3674的前高。需要注意板块的高低切换。深证指数今天缩量收小阳线,均线多头的趋势明显&#…

【iOS】类和分类的加载过程

目录 前言 _objc_init方法 environ_init tis->init方法 static_init方法 💡 _objc_init 是由 libc 调用的,目的是: ❗️“必须自己实现” 是什么意思? runtime_init exception_init cache_t::init _imp_implementati…

大模型算法面试笔记——常用优化器SGD,Momentum,Adagrad,RMSProp,Adam

常用参数:ttt-步数,α\alphaα-学习率,θ\thetaθ-参数,f(θ)f(\theta)f(θ)-目标函数,gtg_tgt​-梯度,β1\beta_1β1​-一阶矩衰减系数,通常取0.9,β2\beta_2β2​-二阶矩&#xff…

【计算机毕业设计】基于SSM的小型超市管理系统+LW

博主介绍:✌全网粉丝3W,csdn特邀作者、CSDN新星计划导师、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、…

火线、零线、地线

我们可以用 “水流” 来比喻 “电流”,这样理解起来会很简单:想象一下你家的电路就像一个 “闭合的水循环系统”:🔥 1. 火线 (Live Wire) - 好比 “进水管的高压端”作用: 从发电厂或变压器输送 高压电 到你家的插座或…

基于Vue3.0+Express的前后端分离的任务清单管理系统

文章目录 一、前端 0、项目介绍 0.1 主要功能介绍 0.2 UI展示 1、首页 2、待办事项管理 2.1 添加待办事项 2.2 展示待办事项 2.3 修改待办事项 2.4 删除待办事项 3、分类管理 3.1 添加分类 3.2 展示分类 3.3 修改分类 3.4 删除分类 4、团队成员管理 4.1 展示团队成员 二、后端 …

基于单片机智能交通灯设计

传送门 👉👉👉👉其他作品题目速选一览表 👉👉👉👉其他作品题目功能速览 概述 随着城市化进程的加快,城市交通流量日益增大,传统的固定配时交通灯已难以…

Datawhale AI夏令营——列车信息智能问答——科大讯飞AI大赛(基于结构化数据的用户意图理解和知识问答挑战赛)

前言 坐火车的你,遇到过这样的场景吗? 一次又一次查车次信息?赶火车狂奔,找检票口找到怀疑人生…想查“最早到北京的车”?时刻表翻到眼瞎!列车晚点?新出发时间算到脑壳疼! 我们这次将…

UVA11990 ``Dynamic‘‘ Inversion

UVA11990 Dynamic Inversion题目链接题意输入格式输出格式分析CDQ分治嵌套(树状数组套BST)分块k-D Tree题目链接 UVA11990 Dynamic’’ Inversion 题意 给一个 1~n 的排列A,要求按照某种顺序删除一些数(其他数顺序不变&#xff0…