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

GFS-VL:融合3D VLM稠密知识与少样本校准的点云分割

三维点云分割在自动驾驶、机器人操作和遥感分析中都很关键,但实际项目里经常面临标注样本少、类别分布不均的问题。GFS-VL 这类广义少样本三维点云分割框架,正是为了把 3D 视觉语言模型(3D VLM)中已经学到的大量稠密知识迁移到只有少量标注点云的新类别上。这里说的“稠密知识”不是一句口号,而是点级或区域级的文本-视觉对齐信息;而“少样本精准校准”也不是简单地在支持集上微调几下,而是要在基类知识不崩塌的前提下,让新类别的决策边界更可靠。

这篇文章不以复现具体实验数据为目标,而是围绕 GFS-VL 的设计动机、模块拆分、训练验证和工程落地展开。我会把这一类少样本点云分割工作通用的概念讲清楚,并给出可以落到代码层的关键思路和排查路径。即使你的实际项目不直接使用 GFS-VL 原仓库,下面的分析也能帮助你理解 3D VLM 与少样本分割结合时的核心难点和最优实践。

1. 少样本三维点云分割的困境,为什么需要 3D VLM 稠密知识

1.1 三维点云分割到底是什么任务

三维点云分割是给点云中的每个点一个语义标签。它不同于目标检测只输出一个包围框,也不同于点云分类只给整片点云一个类别。自动驾驶里,每个激光雷达点都需要区分是车辆、行人、骑行者还是地面;工业视觉里,机械臂抓取前需要把散乱工件的每个点划分到不同零件区域。

常见的处理方式是把原始点云变成规则化表示再处理,比如体素网格或投影到俯视图;也可以直接处理原始点,例如 PointNet++、PointTransformer 这类网络。核心问题是:点云的特点是稀疏、无序、密度不均匀,所以分割网络必须同时利用局部几何结构和全局上下文。传统监督学习依赖大量逐点标注,而逐点标注在三维数据上非常昂贵,这直接催生了少样本点云分割的研究。

1.2 少样本场景下传统方法失效的原因

少样本三维点云分割通常指支持集里每个新类别只有 1 到 5 个样本。传统全监督分割网络把类别当成固定的输出通道数,训练完成后只能分割训练时见过的类别。一旦需要增加新类别,就要重新收集大量标注、重新训练网络,这在真实场景里几乎不可接受。

少样本方法的目标是“学会学习”。训练阶段让模型见过很多基类任务,并学会如何从少量支持集中快速适配;测试阶段再把这种能力迁移到新类别上。常用的原型网络会计算支持集每个类别的原型,然后让查询集点云中的每个点与原型做距离匹配。

但这里有一个深层问题:如果支持集样本太少,原型本身就不稳定。尤其点云是三维空间中的无序点集,不同场景下的视角、遮挡、距离都会造成同类点云之间的较大差异。只用像素或点特征做距离度量,往往会把纹理、密度、局部形状混淆在一起。所以近年来的工作开始引入外部知识,其中 3D VLM 是一种很有潜力的知识来源。

1.3 3D VLM 能带来什么:稠密知识 vs 全局语义

3D VLM 是视觉语言模型在三维领域的延伸。典型的 2D VLM 可以编码图像和文本,让图片内容和自然语言描述在同一个特征空间里可比。3D VLM 则进一步把点云或三维场景与文本对齐,使模型能够理解“红色轿车的左后轮”这种细粒度指令。

从分割的角度看,3D VLM 的知识可以分成两种粒度:

  • 全局语义知识:整段文本描述和整个场景的全局特征对齐。它可以告诉模型“这是一个室内场景”“这里有桌子”,但很难直接决定每个点属于哪个区域。
  • 稠密知识:点级或者区域级特征与文本 token 对齐。它可以告诉模型“这些点对应椅子靠背”“这些点对应座椅面”,甚至能结合文本描述推断未见过的类别外观。

GFS-VL 强调的“稠密知识”正是后者。使用 3D VLM 作为特征提取器,可以把点云映射为逐点或者逐超点的高维特征,并与文本描述中的概念进行对齐。这样当支持集里只有很少的新类别样本时,模型仍然可以利用语言先验判断这些点可能属于什么语义。

1.4 广义少样本的含义

普通少样本分割通常只评估新类别,而广义少样本分割还要同时保持基类性能不下降。换句话说,模型不能为了迁就新类别,就把原来已经学会的类别搞乱。

这正是“少样本精准校准”出现的原因。校准不是简单地在支持集上重训练,而是要让新类别原型在预训练模型的特征空间里被“拉”到正确位置,同时避免扰动基类已有的决策边界。GFS-VL 名字里的 “Generalized” 指向的就是这种既要记得住旧类,又要学得会新类的场景。

2. GFS-VL 整体架构:稠密知识提取与少样本校准两条链路

2.1 总体流程和模块划分

虽然没有看到官方仓库里的逐层结构,但我们可以按同类框架的通用逻辑,把 GFS-VL 理解成四条主要流水线:

  1. 点云特征提取:用 3D 编码器把输入点云编码成逐点特征。
  2. 文本特征提取:用文本编码器把类别名、类别描述、属性短语编码成语义向量。
  3. 稠密知识对齐:把点云特征与文本特征做稠密对齐,形成知识库或上下文特征。
  4. 少样本校准:在支持集上构建原型,并校准原型和查询特征,最终完成分割。

论文标题里的“稠密知识 × 少样本精准校准”可以看作两条深度耦合的链路:一条负责从大规模预训练模型中抽取可迁移的稠密知识,另一条负责在少样本支持集上做稳健的适配。两者缺一不可。

2.2 3D 点云编码与文本语义对齐

点云编码器通常可以选择 PointNet++、PointTransformer、Point-MAE、Point-BERT 等骨干网络。3D VLM 的预训练方法一般包含对比学习,例如让点云特征和文本描述在同一个空间里尽量相似。

在少样本分割任务里,骨架网络通常不重新训练,或者只做轻量级微调。因为少样本支持集太小,从零训练极易过拟合。正确做法是加载在大型三维-文本数据集上预训练好的 3D VLM 权重,用它提取稳定的点特征和文本特征,再在下游分割头中加入少量可学习参数。

文本语义对齐未必只使用类别名称。比如类别是“door”,可以扩展成“a door in indoor scene”“a flat vertical surface for entering or exiting a room”这样的描述。这样文本编码器输出的向量会包含更丰富的几何和上下文先验,帮助点特征朝有区分性的方向靠拢。

2.3 稠密知识的提取与存储

稠密知识通常体现在两种形式:

  • 点级特征图:每个点有一个 d 维特征向量,包含局部几何、颜色、法向量等融合信息。
  • 超点/区域级 token:把点云分割成若干超点或 patch,每个 token 对应一个局部区域。

提取稠密知识时,会让点特征与文本 token 做注意力交互,或者计算逐点与文本类别的相似度图。这个相似度图可以变成伪标签或注意力权重,帮助后续校准模块判断哪些点更可靠。

许多 3D VLM 在预训练时对点云做的是全局对比,但是分割需要逐点输出。因此需要设计一个“上采样”或“特征传播”结构,把点云骨干网络下采样后的特征逐步恢复到原始分辨率。这个结构可以复用 PointNet++ 的特征传播模块,也可以使用 Transformer 解码器。

2.4 少样本精准校准模块的设计思路

少样本校准要解决三个问题:

  1. 原型计算不稳定:支持集样本少时,直接用支持集点特征平均得到的原型噪声很大。可以通过引入文本先验来修正原型,让原型向类别语义描述靠近。
  2. 基类和新类特征空间不一致:预训练模型可能对某些基类非常友好,但对新类别的特征响应可能偏移。校准可以学习一个轻量级变换,把支持集特征和查询集特征统一起来。
  3. 度量方式太粗糙:余弦相似度或欧氏距离各有局限。校准阶段可以学习每个类别一个可学习的尺度参数,甚至使用注意力机制让每个查询点动态组合多个语义相关的原型。

校准机制的一个通用形式是:

  • 用支持集所有点的特征计算初始原型p_c
  • 通过文本描述得到文本原型t_c
  • 将初始原型和文本原型加权融合得到校准原型p_c' = α * p_c + β * t_c,其中αβ可以是可学习的门控参数。
  • 对查询集点特征q,使用sim(q, p_c')生成分割 logits。

如果输入材料中的 GFS-VL 有更复杂的校准模块,例如包含多次迭代或梯度优化,也可以把它归纳为“从预训练特征空间到任务特征空间的可学习适配器”。

3. 从论文到实现:关键模块与伪代码示例

3.1 数据准备与支撑模块

假设我们要实现一个和 GFS-VL 思路相近的少样本点云分割系统,第一阶段需要准备:

  • 训练基类数据集,例如 S3DIS、ScanNet 或自定义点云场景。
  • 每个点云的类别标签。
  • 每种类别的文本描述,至少包含类别名称,最好包含几何属性、上下文位置、颜色、材质等。
  • 预训练 3D VLM 权重,常见格式是.pth.pt

实际工程中,文本描述可以手工编写,也可以使用现成的类别标签自动生成模板。模板的质量直接影响文本编码器的特征质量。

下面是一个简化版的数据结构示例:

@dataclass class PointCloudSample: coords: torch.Tensor # (N, 3) 或 (N, 6) 包含颜色 feats: torch.Tensor # (N, C) 可选额外特征 labels: torch.Tensor # (N,) scene_id: str @dataclass class ClassDescription: class_id: int name: str prompts: List[str]

文本描述可以这样组织:

CLASS_PROMPTS = { "chair": [ "a chair", "a seat with a back and four legs", "a piece of furniture for sitting in an indoor scene", ], "table": [ "a table", "a flat horizontal surface supported by legs", "a piece of furniture commonly found in office rooms", ], }

3.2 文本-点云对齐损失示例

稠密对齐的目的是让每个点特征和正确类别的文本描述更近,和错误类别的文本描述更远。如果网络输出逐点特征point_feats,文本编码器输出文本特征text_feats,可以计算逐点对比损失:

def dense_text_point_loss(point_feats, labels, text_feats, temperature=0.07): """ point_feats: (N, D) 逐点特征 labels: (N,) text_feats: (C, D) C 个类别的文本特征 """ # 归一化 point_feats = F.normalize(point_feats, dim=-1) text_feats = F.normalize(text_feats, dim=-1) # 相似度矩阵 (N, C) logits = point_feats @ text_feats.T / temperature # 每个点的真实类别标签 loss = F.cross_entropy(logits, labels) return loss

这个损失很直观,但直接使用可能会受到非语义点的影响。比如地板上的点可以同时匹配 “floor” 和 “ground”,这时需要依赖文本编码器的语义区分能力,或者引入类别关系图来软化标签。

3.3 支持集原型计算与校准示例

少样本校准模块可以在推理阶段运行。假设支持集有 K 个新类别的点云样本,我们要为每个类别建立一个原型。

普通原型网络直接平均:

def compute_prototypes(support_feats, support_labels, num_classes): prototypes = [] for c in range(num_classes): mask = support_labels == c if mask.sum() == 0: prototypes.append(torch.zeros(support_feats.size(-1))) else: proto = support_feats[mask].mean(dim=0) prototypes.append(proto) return torch.stack(prototypes)

这种方式在小样本下不稳定。一种校准方式是把文本原型和点云原型进行加权融合:

def calibrate_prototypes(point_proto, text_proto, alpha, beta): """ point_proto: (C, D) text_proto: (C, D) alpha, beta: 可学习标量或 (C,) 向量 """ return alpha * point_proto + beta * text_proto

更精细的做法是让校准参数依赖支撑集特征分布。比如先计算每个类别的协方差,再对文本原型做“分布偏移修正”,也可以使用一个小型 MLP 从支持集特征中预测校准残差:

class PrototypeCalibrator(nn.Module): def __init__(self, feat_dim, hidden_dim=128): super().__init__() self.mlp = nn.Sequential( nn.Linear(feat_dim * 2, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, feat_dim), ) def forward(self, point_proto, text_proto): fusion_feat = torch.cat([point_proto, text_proto], dim=-1) residual = self.mlp(fusion_feat) calibrated = point_proto + residual return calibrated

这里的核心思路是不要丢弃文本先验,而是让校准器根据支撑集特征决定文本原型应该贡献多少。

3.4 训练和推理伪代码

一个面向广义少样本分割的训练循环可以分成两个阶段:

第一阶段训练稠密对齐,让点云特征和文本语义对齐。第二阶段固定点云骨干网络,只训练校准模块,模拟少样本场景。

# 第一阶段:稠密知识对齐 for batch in train_loader: point_feats = point_encoder(batch.coords, batch.feats) text_feats = text_encoder(batch.prompts) loss = dense_text_point_loss(point_feats, batch.labels, text_feats) loss.backward() optimizer.step() # 第二阶段:少样本校准 for episode in few_shot_loader: support, query = episode support_feats = point_encoder(support.coords, support.feats) query_feats = point_encoder(query.coords, query.feats) point_proto = compute_prototypes(support_feats, support.labels, num_episode_classes) text_proto = text_encoder(support.prompts) calibrated_proto = calibrator(point_proto, text_proto) logits = compute_similarity(query_feats, calibrated_proto) loss = cross_entropy_with_points(logits, query.labels) loss.backward() calibrator_optimizer.step()

需要明确的一点是:基础网络是否参与第二阶段训练取决于显存和过拟合风险。若让 backbone 也参与微调,学习率要设得非常小,例如1e-5;校准模块的学习率可以设置成1e-3

4. 环境准备、评估配置与实验验证

4.1 常见实验环境和依赖

少样本三维点云分割通常需要 GPU 加速,显存建议至少 16GB。常见依赖包括:

  • Python 3.8 或 3.9
  • PyTorch 1.13 或 2.0 以上
  • CUDA 11.x 或 12.x
  • 点云处理库,例如 Open3D、torch-points3d 或 PointNet++ 自带的采样模块
  • 文本编码器通常来自预训练模型库,例如 HuggingFace 的 BertModel 或 CLIP 的文本分支

如果原始仓库没有明确版本,落地前要先确认依赖版本。不同版本的 PyTorch 在球查询、最远点采样等算子上的兼容性差异很大。

安装示例:

conda create -n gfsvl python=3.9 conda activate gfsvl pip install torch==2.0.1 torchvision==0.15.2 --index-url https://download.pytorch.org/whl/cu118 pip install open3d tqdm tensorboard

如果使用分布式训练,还需要安装torch.distributed的相关启动工具,不过单卡调试阶段可以先不用。

4.2 数据集与评测指标

少样本点云分割常用数据集包括:

  • S3DIS:室内场景,有 6 个区域,常用于 3D 语义分割。
  • ScanNet:室内重建场景,带语义标注。
  • PartNet:细粒度零件分割,类别多,适合测试细粒度少样本分割。

评估指标通常以 mIoU 为主:

  • IoU = 预测正确的点数 / (预测为该类点数 + 真实为该类点数 - 预测正确的点数)
  • mIoU = 所有类别 IoU 的平均值

广义少样本设置下,要分别报告:

  • 基类 mIoU(Base mIoU)
  • 新类别 mIoU(Novel mIoU)
  • 调和平均 (H) = 2 * Base * Novel / (Base + Novel)

调和平均是广义少样本分割最关键的指标,因为它同时惩罚基类遗忘和新类别性能差。

4.3 配置示例

可以用 YAML 管理整个实验配置:

exp_name: gfs_vl_s3dis seed: 42 data: dataset: s3dis root_dir: ./data/s3dis num_points: 2048 block_size: 1.0 model: backbone: pointtransformer pretrained_ckpt: ./pretrained/3d_vlm_pointtransformer.pth feat_dim: 256 text_backbone: bert-base-uncased text_dim: 768 few_shot: train_episodes: 20000 eval_episodes: 1000 support_shots: [1, 2, 5] num_base_classes: 10 num_novel_classes: 4 train: lr: 0.001 lr_backbone: 0.00001 weight_decay: 0.0001 epochs: 50 eval: metrics: ["mIoU", "base_mIoU", "novel_mIoU", "h_mean"]

4.4 验证流程:支持集划分、基类/新类评估

验证阶段需要严格区分基类和新类别。一种常见的做法是:

  1. 从训练集中随机采样 N 个类别作为基类,让模型在这部分类别上完成稠密对齐训练。
  2. 从剩余类别中随机抽取若干个作为新类别,构造支持集和查询集。
  3. 一个 episode 中,从新类别里随机选 K 个类别,每个类别随机取 S 个点云作为支持集。
  4. 查询集从同类但不同场景的点云中采样,包含这 K 个新类别,也可能包含基类,视具体广义设置而定。
  5. 模型用支持集构建原型,预测查询集每个点的标签。

验证脚本的关键是保证支持集和查询集不来自同一个样本,否则会变成记忆而不是泛化。

运行一个简单评估的示意命令:

python eval_fewshot.py \ --config configs/gfs_vl_s3dis.yaml \ --ckpt ./checkpoints/best.pth \ --support_shots 5 \ --episodes 1000

预期输出至少包含:

Episode average mIoU: 0.523 Base mIoU: 0.714 Novel mIoU: 0.412 H mean: 0.522

这里数值是假设值,仅用于说明输出格式。真实实验应以论文或仓库为准。

5. 复现和落地中的常见问题与排查路径

5.1 显存不足或 OOM

现象:模型开始训练后很快报CUDA out of memory,尤其在使用 3D VLM 和逐点文本注意力时。

可能原因:

  • 点云采样点数太大,特征图过大。
  • 批量太大或推理时支持集和查询集同时加载。
  • 梯度累积没有正确配置,导致优化器在梯度爆炸时占用额外显存。

排查方式:

nvidia-smi

查看显存占用。然后在代码里打印每个 tensor 的形状和显存占比,找到内存峰值位置。

解决方案:

  • 将单卡点云点数从 10000 降到 4096 或 2048。
  • 减小 batch size,并开启梯度累积。
  • 在推理阶段关闭梯度计算:with torch.no_grad():
  • 使用混合精度训练:
scaler = torch.cuda.amp.GradScaler() with torch.cuda.amp.autocast(): loss = model(...) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update()

预防建议:在做大实验前先做一个 10 步训练测试,确认显存峰值低于 GPU 总显存的 80%。

5.2 精度始终上不去

现象:少样本分割 mIoU 明显低于论文数值,甚至和随机猜测差不多。

可能原因:

  • 预训练 3D VLM 权重没有正确加载,backbone 参数被随机初始化。
  • 文本描述和真实点云特征差距太大,类别名称过于泛化。
  • 支持集和查询集划分错误,训练时使用了测试类别。
  • 校准模块只训练在基类上,但测试时新类别分布和基类差异太大。

检查方式:

  • 打印 backbone 第一层权重是否和预训练权重一致。
  • 在验证集上先测试“多头原型”而不是“少样本原型”,如果多头原型正常,说明模型本身没有问题,问题出在少样本校准。
  • 检查每个 episode 中类别标签是否有重叠。

解决方案:

  • 为文本描述加入更多几何属性,如“直立的平面结构”“有四个腿的支撑物体”。
  • 让校准模块同时在合成的新类别任务上训练,例如从基类中模拟多个少样本 episode。
  • 降低 backbone 微调学习率,避免在少量支持集上过度拟合。

预防建议:每次修改实验配置后,先固定 seed 跑 10 个 episode,确认精度不出现剧烈波动。

5.3 加载预训练 3D VLM 后输出异常

现象:加载预训练模型后,输出的特征全是同一数值或NaN

可能原因:

  • 权重维度不匹配,加载时出现了严格匹配之外的自动形状广播。
  • 输入点云没有做归一化,导致编码器内部出现极端数值。
  • 文本编码器的输出维度和点云特征维度不一致,被强行Linear映射后出现数值不稳定。

检查方式:

for name, param in model.named_parameters(): if torch.isnan(param).any(): print("NaN param:", name)

然后再检查 forward 输出的均值、方差:

feat = point_encoder(coords, feats) print(feat.mean(), feat.std())

解决方案:

  • 对点云坐标做归一化,例如将所有坐标缩放到以质心为中心、半径 1 的球内。
  • 在加载权重时使用strict=False并打印未加载的 key,确认哪些层被重新初始化。
  • 对文本特征再加一层 LayerNorm,再与点云特征对齐。

预防建议:在加载权重后立即跑一个空数据 forward 检查,杜绝带病训练。

5.4 支持集和查询集划分混乱

现象:训练阶段的 loss 非常低,但测试阶段性能很差,疑似数据泄漏。

可能原因:

  • 同一个场景被同时划分为支持集和查询集。
  • episode 采样时没有保证类别样本来自不同场景。
  • 基类和新类别的类别 ID 映射冲突,导致文本特征取错。

检查方式:

  • 打印支持集样本路径和查询集样本路径,查看是否重叠。
  • 检查支持集中每个类别的强标签数量是否确实为 S。
  • 如果使用场景名作为唯一标识,确认同一个场景没有同时出现在两个集合。

解决方案:

  • scene_id作为划分依据,先按场景划分,再从不同场景中采样支持集和查询集。
  • 为每个 episode 生成一个随机种子,便于复现和排查。
  • 如果支持集和查询集的点数不一致,要明确是否需要对查询集做随机降采样。

预防建议:把数据划分逻辑独立成一个工具模块,并在每次生成 episode 后打印统计表。

5.5 校准模块过拟合

现象:支持集上分割准确率接近 100%,但查询集 mIoU 很低。

可能原因:

  • 校准模块参数量远大于支持集样本数。
  • 训练阶段使用了相同支持集反复迭代,导致记忆支持集细节。
  • 文本先验没有约束,校准模块完全覆盖了文本信息。

解决方案:

  • 缩小校准模块容量,一个 MLP 只预测残差的模长或方向,不预测完整特征。
  • 在校准模块输出到原型时加入 dropout 或噪声。
  • 使用早停:在验证 episode 上监控查询集 mIoU,而不是支持集 mIoU。

推荐做法:

calibrated = point_proto + 0.1 * F.tanh(residual) * text_proto

这种形式强制残差不会无限增大,同时文本原型始终参与贡献,降低过拟合风险。

6. 最佳实践与可扩展方向

6.1 从 GFS-VL 设计里可复用的工程清单

这里整理一份可以直接用于少样本点云分割实验的检查清单:

  • [ ] 确认预训练 3D VLM 是否包含点云编码器和文本编码器,权重格式是否匹配。
  • [ ] 确认文本描述是否覆盖类别名称、几何属性、场景上下文。
  • [ ] 将点云坐标归一化到单位球或固定范围,颜色特征按数据集统计做标准化。
  • [ ] 在训练前用 10 个 mini-batch 做前向和反向验证,排除形状和显存问题。
  • [ ] 严格按场景划分支持集和查询集,避免数据泄漏。
  • [ ] 记录每次 episode 的类别列表、支持集样本路径和随机种子。
  • [ ] 使用 Base mIoU、Novel mIoU、H mean 三个指标共同评估广义少样本分割。
  • [ ] 权重加载时使用strict=False,并输出缺失和未匹配的 key。
  • [ ] 校准模块只在与文本特征交互的部分增加参数量,不要堆叠过多全连接层。
  • [ ] 推理阶段强制关闭梯度计算,并保存校准后的原型特征以便分析。

6.2 学习环境与生产环境差异

学习环境主要指单卡 GPU 上跑通一个小数据集,验证思路是否可行。此时可以降低点数、减少 epoch、简化文本描述。

生产环境则要额外考虑:

  • 配置外置化:数据集路径、模型路径、文本模板不要硬编码在代码里。
  • 日志与监控:记录每次 episode 的 mIoU、loss、原型变化和显存占用。
  • 权限与安全:模型文件和数据文件应放到受管控的存储中,不随便加载来源不明的权重。
  • 异常处理:捕获点云为空、文本编码失败、GPU 显存不足等异常,保证长时间训练不中断。
  • 回滚方案:保存多个 checkpoint,并保留生成 checkpoint 的配置和 seed。
  • 版本兼容:固定 PyTorch、CUDA、Python、依赖库的版本,使用 lock 文件。

生产环境下,少样本分割模型往往部署为离线批量任务而不是实时在线推理。此时可以把所有测试场景的点云先输入到 3D VLM 编码器中,缓存逐点特征,然后只对新类别支持集做校准和推理。这样能显著降低重复计算成本。

6.3 可以继续研究的方向

GFS-VL 所代表的“稠密知识 + 少样本校准”思路还有不少可以扩展的点:

  • 文本描述自动生成:手工写 prompt 很费精力,可以尝试用大语言模型为每个类别生成多个候选描述,再用特征一致性过滤冗余描述。
  • 类别关系建模:不是所有类别都彼此独立,利用类别之间的语义关联,可以缓解支持集极小时的原型偏移。
  • 多模态融合:点云之外如果还有 RGB 图像、深度图、雷达图,可以进一步把 2D 视觉语言模型的知识迁移到三维点云。
  • 在线持续更新:真实应用中,新类别会不断出现。广义少样本分割可以结合持续学习算法,让新类别加入时不遗忘旧类别。
  • 更高效的校准器:尝试把 support set 中的少量样本直接作为 Transformer 的 token,让大型预训练模型通过上下文学习完成新类别的分割,减少额外参数。

学习少样本分割最有效的练习不是反复读论文,而是自己动手构造一个 episode 数据加载器。你可以先在 S3DIS 上随机选取 5 个类别作为基类,再选取 2 个类别作为新类别,支持集每个类别取 5 个场景,查询集取其他场景。先把最简单的原型网络跑通,再逐步加入文本原型和校准模块。这样你会更清楚 GFS-VL 中每一步改动的目的,也能更容易判断自己的实验问题出在哪个环节。

http://www.cnnetsun.cn/news/4320356.html

相关文章:

  • AI蜂群逃逸与多智能体系统安全:沙箱防护实践指南
  • 从单片机到ROS2:机器人嵌入式物联网自学路线全攻略
  • 从零训练二次元角色LoRA:Stable Diffusion角色一致性实战全流程
  • 八电HOLOLIVE vs 八门P5X:WS练习局触发轴与资源节奏拆解
  • Hypermesh 2024前处理实战:网格划分、质量检查与节点显示问题
  • ESP8266 与 ESP-01S 到底是什么?从 Wi-Fi SoC 到串口联网模块,新手一篇快速看懂
  • Luckysheet集成实践:从zip解压到Excel转JSON的全流程指南
  • LVGL 9.0移植到STM32F746G-DISCO与性能基准测试实战
  • 用 Scrapy 爬取百家姓与姓氏源流数据:多源采集、数据清洗与结构化存储实战
  • 直播录像处理实战:FFmpeg转码切片与批量归档全流程
  • 266美元+四个AI模型,一天打造AI小镇应用:开源项目实战
  • 阿里编程题4星刷题体验:从算法建模到树状数组的实战解析
  • 【设计模式精讲】5.工厂方法(Factory Method)
  • S7-1200 MODBUS轮询库V15:多从站通信高效封装方案
  • YOLOv8农田作物倒伏识别系统:从环境搭建到部署实战解析
  • 2026 Agentic AI 智能体:让 AI 从“聊天“走向“自己干活“(MonkeyCode 实战)
  • OpenRouter 排障指南:API 网关原理、常见报错与 Claude Code 接入
  • 基于LSTM+CNN的光伏发电功率预测系统实战解析
  • Claude Code控制机械臂:从仿真到真机的安全实践
  • 专业的AI基座机构
  • 从字幕到Anki卡片:构建英语学习自动化流水线
  • 90%新手都踩的Python环境坑!版本冲突彻底解决指南 |数智码力
  • 【架构篇】科来网络流量分析审计系统
  • 数组名不是指针!一文搞懂C语言数组退化与sizeof陷阱
  • MATLAB语音滤波设计全解析:从加噪到频谱分析及滤波器实现
  • Runway AI峰会解读:AI视频生成从模型工具走向可控工作流
  • Duranta——一个开放的、研究级的RAN+UE参考协议栈
  • 1天速通计算机二级C语言:高频考点与上机题模板实战
  • VS Code 中只关闭 AI 生成提交消息而不禁用 Copilot 的完整指南
  • 毕业之家怎么用?论文初稿粘贴降重、对照查重报告针对性降重、定稿保格式,一篇说清