输入增强:起始帧、位姿与 UAV 适配器
English | 简体中文
记忆压缩决定保留多少历史信息,输入增强则决定每张图像携带怎样的信息。SwiftVLN 支持在 system prompt 中保留起始帧,以及在视觉编码后加入相对位姿或 UAV 域适配。参数入口见记忆配置和Stage-A 训练。
1. 起始帧作为固定视觉参照
SYSTEM_PROMPT_SETTING=initial 在每个窗口的 system prompt 中添加 Episode 第一张图像。它使用完整的视觉 token 序列;参考 Qwen2.5-VL 设置下为 256 个 token。历史采样仍独立进行,因此起始图像也可能同时出现在压缩历史中。
起始帧持续提供出发场景的细节,帮助模型将当前视野与旅程起点关联。在线实现只在 Episode 开始时编码并保存 initial_features,后续窗口继续注入。模板沿用 <image> → <current_image> 的完整图像路径。
2. 相对位姿怎样产生
位姿以 Episode 起点和起始朝向为参考。令 \(f\) 表示沿起始前向的位移、\(r\) 表示沿起始右向的位移、\(\theta\) 表示相对航向。执行前进距离 \(\ell\) 时:
右转增加 \(\theta\),左转减小 \(\theta\),转角由所选环境定义。训练使用专家动作序列积分;评测使用已经执行的动作积分,Episode 开始时为零位移与零相对航向。这样,每张图像对应的位姿来源在两条路径中一致。
输入增强模块把每图像位姿转成:
平移归一化把数值压到有限范围,航向用正弦和余弦表达,使角度绕回时特征连续。这里的位移来自离散动作积分,精度随动作模型与实际运动的一致程度变化。
3. FiLM 怎样改变视觉 token
EMBEDDING_MODE=posefilm 选择 FiLM 位姿增强。两层 MLP 为 Linear(4,256) → GELU → Linear(256,2d),输出逐通道的缩放与偏置:
\(X_i\in\mathbb R^{n_i\times d}\) 是一张图像的视觉 token。相同的 \(\gamma_i,\beta_i\) 广播到该图像的所有 token,使模型能根据图像所在的相对位置与朝向调整视觉通道。最后一层权重和偏置初始化为零,因此开始训练时 \(X'_i=X_i\)。
代码还提供 EMBEDDING_MODE=pose,MLP 输出 \(d\) 维向量并直接加到每个 token 上。模块参数 beta 是额外的融合强度,默认值为 1;上面的公式采用这一默认值,FiLM 的偏置在代码中命名为 bias。
增强发生在历史压缩之前,并作用于历史、起始及当前图像:
两条彩色分支表示可选择的增强模式;图中的 FiLM 使用默认融合强度 1。
因此,即使后续 GTC 合并了多个时刻的 token,参与聚合的特征也已经携带位姿信号。
4. Stage-A 如何把 UAV 特征对齐到卫星域
论文使用 24,467 对视野范围与朝向对齐的 UAV—卫星图像,其中 21,216 对训练、3,251 对验证。两张配对图像先经过冻结的 Qwen2.5-VL 视觉编码器 \(f\):
UAV 分支经过可训练适配器,卫星分支提供目标特征。适配器保留 token 数量与维度,默认由 2 层 Transformer 组成,每层 8 个注意力头,MLP 扩张比 4,dropout 为 0;各层包含预归一化、自注意力、残差连接和 MLP,最后再做 LayerNorm。
对变长图像 token 使用带有效位掩码的平均池化,得到 \(\bar u_i\) 与 \(\bar s_i\)。两种损失分别约束原始特征空间和共享投影空间。
余弦损失直接拉近池化后的 UAV 与卫星特征:
双向对比损失先通过共享投影头 \(P_\psi\),再 L2 归一化得到 \(z_i^u,z_i^s\)。以 UAV 检索卫星的方向为例:
交换两个域得到 \(\mathcal L_{s\to u}\),最终:
对比项让同地点的配对特征在一批候选中互相匹配;余弦项保留对卫星原始特征空间的直接约束。Stage-A 优化器只更新适配器与投影头。验证用双向 Recall@1/5/10 和配对余弦相似度,并按 UAV→卫星 Recall@1 选择最佳 checkpoint。
5. 适配器怎样接入导航
导航加载 adapter_kwargs 和 adapter_state_dict 重建适配器,将其插入视觉编码器之后、历史压缩之前。导航使用适配后的逐 token 特征;Stage-A 的投影头服务于对比训练,导航加载器读取适配器部分。
当前 UAVAdapterEnhancement 支持 apply_scope=all_images,选中这一模式后,历史、起始和当前输入图像都经过适配器。输入图像的域由数据和使用流程决定。EMBEDDING_MODE 在 none、pose、posefilm、uav 中选择一种;起始帧由独立的 prompt 设置控制。
增强模块通过 EmbeddingEnhancementPipeline 的 nn.ModuleDict 注册,参数进入模型的 state_dict,因此可以随导航 checkpoint 保存与恢复。
6. 代码与论文对应
环节 |
实现入口 |
|---|---|
相对位姿积分 |
|
归一化、MLP、FiLM 与零初始化 |
|
增强模块注册与调用 |
|
Transformer 适配器 |
|
冻结视觉编码器与投影头 |
|
对比损失与余弦损失 |
|
Stage-A 优化流程 |
|
导航 checkpoint 接入 |
论文依据:SatNav 论文,附录 Memory Design Details → Initial Frame Prompting / Pose Encoding 与 Satellite-to-UAV Adapter Details。