CLIP系列应用
CLIP的研究思想主要是引入了文本-图片对作为数据,使得模型在分类时有了对文字语义信息的理解,鉴于clip训练好的文本编码器和图片编码器都有非常好的zero-shot性能,由此引出了后续的很多工作,但就目前来看,工作重点都在模型的zero-shot能力,而不是下游任务中具体的指标比如精度等。
一 Group ViT
个人理解
作者提出可学习的grouping block模块,指定初始聚类中心,比如64个,用self-attention计算聚类中心(token)和patch embedding的相似度矩阵,依赖transformer的学习,将patch embedding 直接分配给聚类中心,达到分类目的的同时还可以降维,从而实现图像分割。
关于语义分割的训练过程,借鉴了clip的训练方式,将文本通过文本编码器生成的向量与8个token(由64个token融合而来)经过average pooling后的向量进行配对,从而进行对比训练,以此完成语义分割。
Code:https://github.com/NVlabs/GroupViT
Project Page:https://jerryxu.net/GroupViT/
作为图像输入的左端其实就是一个ViT,右端则是初始的一些token中心,用于表示图片特征。
推理
module
Grouping Block:利用注意力的计算方式,结合gumbel softmax进行可学习的训练,达到融合特征的同时降低了维度,从(196+64)* 384,降低到了64*384。这种融合其实是一种assign,是一种自下而上的特征融合的方式,并且取得了非常不错的效果。
思考
1.这个网络更像是一种图像编码器,并没有考虑到很多东西比如:Dilated conv,pyramid pooling,u-net等。
2.在推理时,对于分割出的目标最后的分类,取决于mask编码和文本编码的相似度计算,这里会设定一个阈值,阈值过高,会将目标划分为背景类,阈值过低,则会导致误分类,误分类的原因在于clip本身会输出语义相似的最高的目标,这是优势,也是弊端。
因此如何让模型更好的学到背景类,是一个待解决的工作。