本文提出DiffewS框架旨在释放扩散模型在few-shot 语义分割中的潜力
首先明确了将扩散模型应用于少射语义分割的四个关键问题:
- 如何促进查询图像和支持图像之间的交互?
- 如何有效地整合来自支持掩码的信息?
- 来自查询掩码的哪种形式的监督最合理?
- 如何设计一个有效的生成过程,将预先训练好的扩散模型转移到掩码预测任务中?
本文针对每个问题都提出若干解决方案并比较最后建立DiffewS
1、如何促进查询图像和支持图像之间的交互?
首先对于UNet中的第l层可以如下表示:
Xl+1=FFN(CrossAttn(SelfAttn(Xl),CLIPtext(t)))
\mathbf{X}^{l + 1} = \text{FFN} \left( \text{CrossAttn} \left( \text{SelfAttn} \left( \mathbf{X}^l \right), \text{CLIP}_{text}(\mathbf{t}) \right) \right)
Xl+1=FFN(CrossAttn(SelfAttn(Xl),CLIPtext(t)))
第一种方法为KV Fusion Self-Attention
Xq∗=FusionAttn(Xq,Xs)=Attention(Qq,Kqs,Vqs)
\mathbf{X}_q^* = \text{FusionAttn}(\mathbf{X}_q, \mathbf{X}_s) = \text{Attention}(\mathbf{Q}_q, \mathbf{K}_{qs}, \mathbf{V}_{qs})
Xq∗=FusionAttn(Xq,Xs)=Attention(Qq,Kqs,Vqs)
其中KV为查询和支持concat
第二种方法为Tokenized Interaction Cross-Attention
Xq∗=CrossAttn(Xq,Flatten(CLIPimg(Is)))
\mathbf{X}_q^* = \text{CrossAttn}(\mathbf{X}_q, \text{Flatten}(\text{CLIP}_{img}(\mathbf{I}_s)))
Xq∗=CrossAttn(Xq,Flatten(CLIPimg(Is)))
使用CLIP的img编码并扁平化
2、如何有效地整合来自支持掩码的信息?
- 支持掩码转为RGB,随后经过VAE,与支持图像经过VAE的变量拼接再降维到对应维度
- Is∗=Is⋅Ms\mathbf{I}_s^* = \mathbf{I}_s \cdot \mathbf{M}_sIs∗=Is⋅Ms,随后将Is∗\mathbf{I}_s^*Is∗经VAE
- 当作自注意力掩码
- Is∗=0.5Is+0.5Ms\mathbf{I}_s^* = 0.5 \mathbf{I}_s + 0.5 \mathbf{M}_sIs∗=0.5Is+0.5Ms,随后将Is∗\mathbf{I}_s^*Is∗经VAE
经实验发现问题1、2均使用第一种方法最优
3、来自查询掩码的哪种形式的监督最合理?
- White foreground + black background
- Real foreground + black background
- Black foreground + real background
- Adding mask on real image
最后发现简单的White foreground + black background叠加三层就能最优(这也是问题二中方法1将掩码转RGB的方法)
4、如何设计一个有效的生成过程,将预先训练好的扩散模型转移到掩码预测任务中
- Multi-step noise-to-mask generation (MN2M)
- Multi-step image-to-mask generation (MI2M)
- One-step image-to-mask generation (OI2M)
OI2M最优
上述设计针对one-shot,如何扩展到few-shot
- 仅推理时将多个1support image对应的kv拼接
- 训练时也考虑拼接
发现后者更优
实验结果
发布者:admin,转转请注明出处:http://www.yc00.com/web/1754376534a5153414.html
评论列表(0条)