DenseCLIP:Language-Guided Dense Prediction with Context-Aware Prompting
论文地址:https://arxiv.org/pdf/2112.01518.pdf
受到CLIP的启发,该文作者将CLIP应用到了Dense Prediction任务上,其将原本CLIP中的image-text问题转换成了pixel-text问题,将image上的每个像素点对应K个类别的文本,每个像素点得到K个分数,从而产生了pixel-text score maps来指导密集预测模型。实验证明,DenseCLIP在语义分割、目标检测、实例分割上都取得了不错的效果。
1.DenseCLIP的整体框架:
传统的Dense Prediction模型框架的预训练是使用image进行监督学习或自监督学习,在用于下游任务时使用Image encode和image decoder对预训练的权重进行微调得到预测模型。而DenseCLIP的预训练是选择使用大量的image-text对进行对比学习(CLIP)。在下游任务中,将原text encoder的权重固定为原预训练权重,而是在得到image embedding和text embedding后,用image embedding对text embedding进行调整,最终得到pixel-text的score maps。
2.Language-Guided Fine-tuning结构
这里作者使用的Image Encoder是ResNet50来进行介绍DenseCLIP,具体细节如下:
对于该模型的Image Encoder,其中{xi}4i=1为ResNet50的四个block的输出的feature map,其中最后一层x4的大小为H4W4xC。CLIP中有一个attention pooling layer,其先将x4进行了global avg pooling,得到feature x 4大小为1xC,再对[ x 4,x4]做multi-head self-attention得到[z ,z],此时的z 的大小为1xC,z的大小为H4W4xC。对于text encoder,若有k个类,那么经过encoder得到的特征大小为K x C,于是拿image feature z去query text feature t从而得到相似度score map s:
s
=
z
^
t
^
T
s
ϵ
R
H
4
W
4
∗
K
s=\hat{z}\hat{t} ^{T} \ \ \ s\epsilon R^{H_{4}W_{4}\ast K}
s=z^t^T sϵRH4W4∗K
其中z和t表示z和t经过L2 normalized 的结果。这里的t,可能是先经过text encoder再经过vision information的refine,也可能先经过refine再经过text encoder得到的。
在模型中计算了两个损失分别为Auxiliary loss和task loss。对于Auxiliary loss,是使用score map和真实的segmentation map通过计算cross entropy作为辅助的loss。
对于语义分割任务(每个pixel都要分类正确),所以计算Auxiliary loss的公式为:
对于实例分割或者目标检测任务,计算Auxiliary loss的公式为:
y和y~都是对原尺度进行下采样的结果。
对于task loss,则需要使用score map和image feature经过image decoder后得到预测结果,然后与label进行cross entropy得到最终的loss。
Context-Aware Prompting
其方法与CoOp相似,但对比CoOp,CoOp仅仅是一个可学习的张量,并没有包含视觉信息,而DenseCLIP则采用的是Vision-to-language prompting,即在learnable context中引入一些视觉信息。作者介绍了两种refine方式:pre-model prompting和post-model pronpting。其中pre-model prompting是用视觉信息refine 在 text encoding 之前的context,而post-model prompting是用视觉信息refine在text encoding之后的context。
Pre-model prompting具体操作
这种方法是在进行text encoder之前进行学习视觉信息,首先引入了一个query张量q,q的大小为NxC(N为text中context length,C为图像通道数),和视觉特征(图片执行完image encoding后的特征)做cross-attention得到视觉信息 vpre,其大小为NxC。计算公式如下:
v
p
r
e
=
T
r
a
n
s
D
e
c
o
d
e
r
(
q
,
[
z
ˉ
,
z
]
)
v_{pre} = TransDecoder(q,[\bar{z},z])
vpre=TransDecoder(q,[zˉ,z])
用vpre替换CoOp中的learnable context。
Post-model prompting具体操作
这种方法是在进行text encoder之后进行学习视觉信息,先按照正常计算的带text feature t,t大小为K x C,使用t去query得到的视觉特征[z,z],得到vision context vpost ,其带下为K x C,再拿vpost去refine 文本特征t,计算公式如下:
v
p
o
s
t
=
T
r
a
n
s
D
e
c
o
d
e
r
(
t
,
[
z
ˉ
,
z
]
)
t
←
t
+
γ
y
p
o
s
t
v_{post} = TransDecoder(t,[\bar{z},z]) \\ t\leftarrow t+\gamma y_{post}
vpost=TransDecoder(t,[zˉ,z])t←t+γypost
其中y是可学习的,其用于控制残差的scale。
最终作者在实验中发现,post-model prompting的效果较好,故使用post-model prompting方法。
Limitation:在检测上的效果提升不是特别显著,作者分析的原因是CLIP在预训练时并没有和定位有关的约束。
3.总结
DenseCLIP将CLIP模型应用到了密集预测任务中,将原来的只使用image encoder进行预训练并在下游任务中微调,修改成了使用image encoder和text encoder进行预训练(CLIP),并在微调时,将text encoder的权重固定,只训练image encoder和image decoder中的权重。DenseCLIP成功的将文本信息运用到了图像的密集预测任务中。