[pdf][arxiv]

Question

CLIP驱动的基于文本的实例分割

基于文本的实例分割,大概就是给出一段文字,然后在图片中标注出符合描述的一片区域,本文中该任务是有监督的,数据集中有文本以及对应的图片和分割出的区域

CLIP驱动,但是和CLIP并不一样,大概就是运用了CLIP的思路,但并不是使用预训练好的CLIP

Method

CLIP是图片级别和文本的对齐,在该任务中并不适用,我们需要更加细粒度的对齐,找出文本对应的像素

上图为本文中与CLIP不一样的地方,当我们使用Image Encoder和Text Encoder提取出特征之后,会使用两个特征经过一个Decoder生成图像和文本相结合的特征VV,按照后文的描述,可知VRN×DV\in \mathbb R^{N\times D},且TRDT\in \mathbb R^{D},其中DD是特征的维度,N=H4×W4N=\frac{H}{4}\times \frac{W}{4},所以VV含有的是整张图片不同位置的特征

综上,TTVV的生成就相当于将文本和图片的不同部位嵌入到同一个空间中,而因为ground truth的存在,我们知道VV中哪些部分的特征应该与TT更加相似,所以该文章采用对比学习,使VV中ground truth覆盖位置与TT的相似度更高,而其他位置的特征与TT的相似度更低

下面是该方法的详细流程

Image Encoder,输入图片IRH×W×3I\in \mathbb R^{H\times W\times 3},利用ResNet的第2-4个阶段的视觉特征,并分别定义为Fv2RH8×W8×C2F_{v2}\in \mathbb R^{\frac{H}{8}\times \frac{W}{8}\times C_2}Fv3RH16×W16×C3F_{v3}\in \mathbb R^{\frac{H}{16}\times \frac{W}{16}\times C_3}Fv4RH32×W32×C4F_{v4}\in \mathbb R^{\frac{H}{32}\times \frac{W}{32}\times C_4}

Text Encoder,如下图,没太看懂,总之提取出了FtRL×CF_t \in \mathbb R^{L\times C}FsRCF_s \in \mathbb R^{C'}

Cross-modal Neck,这部分将图片特征与文本特征结合,使用了一些全连接层和卷积层,提取出了特征FvRN×C,N=H16×W16F_v \in \mathbb R^{N\times C},N=\frac{H}{16}\times \frac{W}{16},流程如下

Fm4=Up(σ(Fv4Wv4)σ(FsWs))F_{m4} = Up(\sigma(F_{v4}W_{v4})\cdot\sigma(F_{s}W_{s}))

Up()Up(\cdot)为2倍的上采样

Fm3=[σ(Fm4Wm4),σ(Fv3Wv3)]F_{m3} = [\sigma(F_{m4}W_{m4}),\sigma(F_{v3}W_{v3})]

Fm2=[σ(Fm3Wm3),σ(Fv2Wv2)],Fv2=Avg(Fv2)F_{m2} = [\sigma(F_{m3}W_{m3}),\sigma(F_{v2}'W_{v2})], F_{v2}'=Avg(F_{v2})

Avg()Avg(\cdot)为核大小2×22\times 2且步长为2的平均池化层

Fv=Conv([Fv2,Fv3,Fv4])F_{v} = Conv([F_{v2},F_{v3},F_{v4}])

以上σ\sigmaReLUReLU函数,[][\cdot]为concat操作,WW都为可学习的参数矩阵,此外,还有个FcoordF_{coord}不知道咋来的,文中只说是2D空间坐标特征,且FcoordRH16×W16×2F_{coord}\in\mathbb R^{\frac{H}{16}\times \frac{W}{16}\times 2}

最后提取出的FvRN×C,N=H16×W16F_v\in \mathbb R^{N\times C},N=\frac{H}{16}\times\frac{W}{16}

Vision-Language Decoder,这部分主要是使用注意力机制,使用了自注意力机制MHSA()MHSA(\cdot)和交叉注意力机制MHCA()MHCA(\cdot),流程如下

Fv=MHSA(LN(Fv))+FvF_v'=MHSA(LN(F_v))+F_v

Fc=MHCA(LN(Fv),Ft)+FvF_c'=MHCA(LN(F_v'),F_t)+F_v'

Fc=MLP(LN(Fc))+FcF_c=MLP(LN(Fc'))+Fc'

LN()LN(\cdot)为Layer Normalization,这部分图中还有个超参数nn,但是文中没说,会在实验部分讨论

Text-to-Pixel Contrastive Learning,这部分即是开头说的对比学习部分,用下面公式获得上述的VVTT

zv=FcWv+bv,Fc=Up(Fc)z_v=F_c'W_v+b_v,F_c'=Up(F_c)

zt=FsWt+btz_t=F_sW_t+b_t

ztRD,zvRN×D,N=H4×W4z_t\in \mathbb R^D,z_v\in \mathbb R^{N\times D},N=\frac{H}{4}\times \frac{W}{4}WWbb都是可学习的参数

然后使用以下对比学习loss进行训练

Lconi(zt,zvi)={logσ(zt,zvi)iPlog(1σ(zt,zvi))iNL_{con}^i(z_t,z_v^i)= \begin{cases} -\log\sigma(z_t,z_v^i) \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,i\in\mathcal P \\ -\log(1-\sigma(z_t,z_v^i)) \,\,\,\,\,\,\, i\in\mathcal N \end{cases}

Lcon(zt,zv)=1PNiPNLconi(zt,zvi)L_{con}(z_t,z_v)=\frac{1}{|\mathcal P \cup\mathcal N|}\sum_{i\in\mathcal P \cup\mathcal N}L_{con}^i(z_t,z_v^i)

P\mathcal PN\mathcal N分别是在ground truth中类别为1和0的集合

Results

消融实验如下,前文中的nn是decoder的层数

下面是与其他方法的对比

下面是一些效果图

总结

虽然是用CLIP驱动的,但是和CLIP并不完全相同,将图片换为了不同位置的特征,然后又巧妙地运用了图片和文本特征在同一个空间中的特点,将对比学习融入了进去,感觉是一个值得一看的方法,之后说不定能用上

但是该论文没有代码,实验结果也不多,而且效果看起来也并没有太好,比如滑雪的三个人被遮盖的地方就无法分割出来,这方向论文没有看太多,所以不知道还能不能改进