【大模型DA】Unified Language-driven Zero-shot Domain Adaptation
Motivation
本文动机在于解决现有方法对 domain-ID 和多模型的依赖问题,提出一个更实用、更通用的新设定 ULDA,使模型仅通过语言描述就能在不访问目标图像的前提下一次性适应多个未知目标域
这篇文章的方法部分提出了一个统一框架来解决Unified Language-driven Zero-shot Domain Adaptation (ULDA)问题。这个框架包含三个核心模块,目标是在不访问目标域图像、没有 domain ID 的情况下,利用语言描述让单个模型适应多个目标域。
🧠 方法总览
目标:给定源域图像 + 目标域文本描述,训练一个能泛化到多个目标域的单一模型
挑战:没有目标图像,只用“语言”进行引导,还不能知道“这张图像来自哪个目标域”
解决方案:提出三大模块👇
🔧 方法组成
1️⃣ Hierarchical Context Alignment(HCA)
解决 语义丢失 问题,提高图像与文本的对齐精度
传统方法只在场景级别(scene-level)对齐图像特征和文本嵌入,这样容易忽略不同对象的语义差异。HCA引入三级对齐策略:
层级 | 对齐方式 | 目的 |
---|---|---|
场景级别(Scene-level) | 整图特征与整体文本对齐 | 粗粒度对齐(类似PØDA) |
区域级别(Region-level) | 以“bus in rain”等描述对区域原型进行对齐 | 保留类间语义结构 |
像素级别(Pixel-level) | 每个像素与对应类别文本对齐 | 精细粒度、增强判别性 |
每层都设计了相应的损失函数,整体损失为:
L H C = λ r L r + λ p L p + L μ , σ \mathcal{L}_{HC} = \lambda_r \mathcal{L}_r + \lambda_p \mathcal{L}p + \mathcal{L}{\mu, \sigma} LHC=λrLr+λpLp+Lμ,σ
2️⃣ Domain Consistent Representation Learning(DCRL)
解决 跨域类别关系不一致 问题,保持语义结构一致性
不同场景中,同一类别(如 “bus”)与其他类别(如 “rider”)的语义关系可能发生变化,DCRL通过计算原型之间的关系矩阵(相似性),在视觉空间和文本空间分别建图,对这两个矩阵做 MSE 最小化,保持结构一致:
L D C = MSE ( C C T ∥ C ∥ 2 , T T T ∥ T ∥ 2 ) \mathcal{L}_{DC} = \text{MSE}\left( \frac{CC^T}{\|C\|^2}, \frac{TT^T}{\|T\|^2} \right) LDC=MSE(∥C∥2CCT,∥T∥2TTT)
3️⃣ Text-Driven Rectifier(TDR)
解决 模拟特征与真实目标域之间存在偏差 的问题
训练中,PØDA 的模拟特征(通过 text-guided normalization)并不完全等于真实目标域特征。TDR通过使用文本嵌入生成一组均值与方差,对模拟特征进行校正,进一步逼近真实分布:
f ~ s → t = β ( f s → t − μ ( f s → t ) σ ( f s → t ) ⋅ σ ~ + μ ~ ) + f s → t \tilde{f}{s \to t} = \beta \left( \frac{f{s \to t} - \mu(f_{s \to t})}{\sigma(f_{s \to t})} \cdot \tilde{\sigma} + \tilde{\mu} \right) + f_{s \to t} f~s→t=β(σ(fs→t)fs→t−μ(fs→t)⋅σ~+μ~)+fs→t
注意:TDR 只用于 Stage-2 的 fine-tuning 阶段,不能用于模拟阶段(Stage-1),否则会导致训练目标被破坏。
⚙️ 总体训练流程
Stage-1:特征模拟阶段
- 输入源图像与文本描述
- 使用 PIN 模拟目标特征
- 应用 HCA + DCRL + Segmentation Loss
L stage1 = λ H C L H C + λ D C L D C + λ s e g L s e g \mathcal{L}{\text{stage1}} = \lambda{HC} \mathcal{L}{HC} + \lambda{DC} \mathcal{L}{DC} + \lambda{seg} \mathcal{L}_{seg} Lstage1=λHCLHC+λDCLDC+λsegLseg
Stage-2:fine-tuning 阶段
- 使用 TDR 修正模拟特征
- 微调共享 segmentation head
- 只使用 cross-entropy segmentation loss
✅ 总结一句话
ULDA 通过 HCA 保留多层次语义、通过 DCRL 保持跨域语义一致性、通过 TDR 弥补模拟误差,最终训练出一个无需 domain ID、可泛化多个场景的统一模型。
CLIP 本身并没有图像分割能力,它只是一个预训练的图文对齐模型(Image-Text Contrastive Model)。但这篇文章巧妙地结合了 CLIP 的文本理解能力和一个标准的图像分割模型,从而实现了“仅通过语言描述”进行语义分割的跨域迁移。
CLIP 在这里的角色是:
提供具有语义结构的“文本嵌入”,作为目标域的语言指导。
🤔 但 CLIP 本身不能做 segmentation?
没错,CLIP 是做分类用的,它输出的是一个图像/文本的全局表示,用于做相似度匹配 —— 它不能输出像素级的分割掩码。
✨ 解决方案:把 CLIP 和 DeepLabV3+ 结合
模型结构如下:
- 编码器(Encoder)
- 使用了 CLIP-ResNet-50 的视觉编码器作为特征提取 backbone
- 把源图像提取成中间特征 f s f_s fs
- PIN模块 + 文本描述
- 用 CLIP 的文本编码器将 prompt(如“driving in snow”)转成嵌入
- 作为引导信号生成归一化参数(μ, σ)
- 对 f_s 做归一化,生成模拟的“目标域特征” f s → t f_{s \rightarrow t} fs→t
- 语义分割头(Segmentation Head)
- 使用标准的 DeepLabV3+ segmentation head
- 输入模拟后的特征 f s → t f_{s \rightarrow t} fs→t,输出像素级分割结果
- 在源域图像 + GT 标签上训练(有监督)
- 文本辅助监督
-
把“bus in rain”“road at night”等文本转成嵌入
-
用于和区域特征、像素特征对齐(通过相似度损失)
-
📌 图示理解(逻辑流程)
Source Image↓┌─────────────────────┐│ CLIP Visual Encoder │ → f_s└─────────────────────┘↓+---------------------------+| Prompt: "driving in snow"|+---------------------------+↓┌──────────────────────┐│ CLIP Text Encoder │ → TrgEmb└──────────────────────┘↓→ 生成 μ, σ → 模拟特征 f_{s→t}↓┌─────────────────────┐│ Segmentation Head │ → Pixel-wise Prediction└─────────────────────┘
✅ 总结一句话:
本文不是用 CLIP 做分割,而是用 CLIP 的语言理解能力作为“目标域提示器”,结合主干分割网络(如 DeepLabV3+),通过多级语义对齐实现“仅靠语言”的跨域语义分割迁移。
📚 数据集使用概览
🔧
训练阶段(Source domain)
- 使用数据集:Cityscapes
- 城市街景语义分割数据集(真实图像)
- 提供图像 + 像素级标签
- 监督方式:有监督训练
- 利用 Cityscapes 中图像和 GT 分割标签对模型进行训练
- 同时利用目标域的**语言描述(text prompt)**来引导模拟特征
- ❗不使用任何目标域图像
🧪
测试阶段(Target domains)
文章设置了两个主要评测场景👇
🧪 1.
Clear-to-Adverse Weather(真实图像 → 恶劣天气)
-
源域:Cityscapes
-
目标域:ACDC 数据集中 4 个子域
-
Night(夜间)
-
Rain(雨天)
-
Snow(雪天)
-
Fog(雾天)
-
-
目标域图像仅用于测试
📌目标域的监督情况:
-
测试时使用目标域图像 + Ground Truth 分割掩码来评估性能(如 mIoU、mAcc)
-
训练过程中从未使用目标域图像或标签
🧪 2.
Synthetic-to-Real(合成图像 → 真实图像)
-
源域:GTA5(合成游戏画面,有语义分割标签)
-
目标域:
-
Cityscapes(真实街景)
-
ACDC(各种真实复杂天气)
-
-
目标域监督情况:
- 同样,训练不使用目标域图像,测试用来评估泛化能力
🧾 补充说明
阶段 | 使用数据 | 是否使用标签 | 是否访问目标域图像 |
---|---|---|---|
训练(源域) | Cityscapes / GTA5 | ✅ 有 | ❌ 不访问目标域图像 |
训练(目标域) | ❌ 无 | ❌ 无 | ❌ 无 |
测试(目标域) | ACDC / Cityscapes | ✅ 有(用于评估) | ✅ 用于评估阶段 |
✅ 总结一句话:
本文采用有监督训练在 Cityscapes 或 GTA5(源域),不使用目标域图像或标签,只提供目标域的语言描述;在测试阶段,使用 ACDC 和 Cityscapes 的图像和标注进行性能评估,完全符合 Zero-shot Domain Adaptation 设定。