CRIS: CLIP-Driven Referring Image Segmentation论文阅读笔记
摘要
这篇文章要做的任务是RIS(Referring Image Segmentation),就是通过自然的语言表达来分割一个参考物,而整合文本与像素级的特征是非常有挑战性的。作者受到CLIP的启发,设计了一个visual-language decoder以促进两种模态之间的一致性。同时,作者还提出了文本到像素的对比学习。
方法
首先作者使用ResNet和Transformer分别提取图像和文本特征,然后将特征进行融合以获得多模态的特征,之后这些特征和文本特征被送入visual-language decoder,最后使用两个projector(?)来产生最终的预测掩码,并采用文本到像素的对比损失将文本特征与相关的像素级视觉特征对齐。
Image & Text Feature Extraction![截屏2022-10-19 16.48.52](https://lipoicyclic.oss-cn-beijing.aliyuncs.com/img/%E6%88%AA%E5%B1%8F2022-10-19%2016.48.52.png)
Image Encoder
作者使用四个Stage的ResNet进行特征提取,其中\(F_{v2}\in \mathcal{R}^{\frac{H}{8}\times \frac{W}{8}\times C_2}\),..,\(F_{v4}\in \mathcal{R}^{\frac{H}{32}\times \frac{W}{32}\times C_4}\)。
Text Encoder
对于输入\(T\in \mathcal{R}^L\),通过Transfomer提取到的特征为\(F_t\in \mathcal{R}^{L\times C}\)。全局文本表示\(F_s \in \mathcal{R}^{C'}\)。其中\(C,C'\)是特征维度,\(L\)是referring expression的长度。
Cross-modal Neck
给定多个视觉特征和全局文本表示\(F_s\),可以通过融合\(F_{v4}\)以及\(F_s\)得到简单的多模态特征\(F_{m4}\in\mathcal{R}^{\frac{H}{16}\times \frac{W}{16}\times C}\):
其中Up是上采样两倍,·表示对应元素相乘,\(\sigma\)表示ReLU,\(W\)是可学习的变换矩阵,用于将两个模态的特征变换到同一个特征空间。随后的\(F_{m3}\)和\(F_{m2}\):
Avg表示核尺寸为(2, 2),步长为2的平均池化,[]表示concat操作。拼接后的特征通过\(1\times 1\)卷积进行聚合得到\(F_m\):
其中\(F_{m}\in\mathcal{R}^{\frac{H}{16}\times \frac{W}{16}\times C}\)。最后,作者将2D的空间坐标特征\(F_{coord}\in \mathcal{R}^{\frac{H}{16}\times \frac{W}{16}\times2}\)与\(F_m\)拼接并通过\(3\times 3\)卷积进行融合:
其中\(F_{v}\in\mathcal{R}^{\frac{H}{16}\times \frac{W}{16}\times C}\)。
Vision-Language Decoder
作者设计的视觉语言解码器可以将细粒度的语义信息从文本特征传播到视觉特征。如图3,解码器模块的两个输入分别为\(F_t\in \mathcal{R}^{L\times C}\)以及\(F_v\in \mathcal{R}^{N\times C}\),其中\(N=\frac{H}{16}\times \frac{W}{16}\)。为了捕捉到位置信息,作者还加上了正弦位置编码。vision-language decoder由n个layer组成,用于生成多模态特征序列\(F_c\in \mathcal{R}^{N\times C}\)。和标准的Transformer结构类似,每个layer包括一个多头自注意力,一个多头交叉注意力以及前馈网络。在每个decoder layer中:
对于MHCA,\(F'_v\)映射为Q,\(F_t\)映射为K和V。得到的\(F_c\)被用于最终的分割。
Text-to-Pixel Contrastive Learning
目前学到的知识实际上缺乏精细的视觉概念,这对于分割来说是远远不够的。因此作者还设计了文本-像素对比损失,其将文本特征与相应的像素级视觉特征联系起来。如图3,Text Projector用来转换\(F_s\),Image Projector用来转换\(F_c\):
其中\(z_t\in \mathcal{R}^D,z_v\in \mathcal{R}^{N\times D}, N=\frac{H}{4}\times \frac{W}{4}\)。Up表示四倍上采样(为了尽可能恢复原图的分辨率?)。W和b分别是权重以及偏置。
因此,给定变换后的文本特征\(z_t\)以及一系列变换后的像素级特征\(z_v\),就可以计算对比loss了,目的是让\(z_t\)和与之对应的\(z_v\)尽可能相似:
其中\(\mathcal{P}\)和\(\mathcal{N}\)分别表示gt中类别“1”和类别“0”的数量,\(\sigma\)代表sigmoid函数。为了得到最终的分割结果,作者讲\(\sigma(z_t·z_v)\)reshape为\(\frac{H}{4}\times \frac{W}{4}\)并上采样为原图大小。\(i\in \mathcal{P}\)时要让\(z_t\)和\(z_v^i\)相似度尽可能大,softmax后趋近于1,取负log后趋近于0,即让loss尽可能小;\(i\in \mathcal{N}\)时类似。
实验
实验结果可以查阅论文原文。作者这里列举了一些例子:
比较有趣的是这些failure case。第一种导致failure的原因是输入的表达具有歧义(左上图),其次是标签标注问题()右上图),最后是遮挡问题(右下图)。