CVPR 2021
University of Michigan
论文及代码:
https://arxiv.org/pdf/2006.06666v2.pdf
https://github.com/kdexd/virtex
1. 摘要
目前许多方法是用无监督学习的方法在大规模的无标签图片上进行预训练。相反,文章则希望从少量的图片中学习高质量的视觉表示。文章用图片描述来学习视觉特征(预训练)。然后用于下游任务包括图片分类,目标检测,实体分割。最终在所有任务上都取得好的效果,而该方法使用的图片数量仅为对比的1/10.
2. 特点
文章创新在于与众不同的预训练方法,与现在流行的无监督大规模预训练方法形成对比,给出了新的预训练方法的一种可选方案。
这种方法使用更少的预训练数据、降低预训练成本,同时也获得了非常好的效果。
3. 方法
---------- 预训练 --------
- 训练目标:将图片描述任务作为预训练,学习图片的视觉特征用于下游任务。(大部分是反过来的)
- 动机:图片描述包含更多的图片信息,可以学到更多的信息,包括:多目标(如猫、蛋糕)、属性(如橘黄色多猫)、动作(目标的关系,如盯着苹果)、空间布局(如猫在盘子旁边)。因此,该预训练方法可以学到更丰富有效的视觉特征。
- 两个模块:(如图,左边是视觉模块,中间是语言模块,右边是语言模块内部结构)
预训练包含两个模块:视觉模块和语言模块
- 视觉模块: ResNet-50
这个模块学习视觉特征,随机初始化(不用预训练好的模型)
经过ResNet-50后输出的视觉特征
,
经过全连接层映射到目标大小的向量
,
的size为
,其中
为语言模块的隐藏层大小,如BERT-base为512。
(需要注意的是预训练的时候使用作为视觉特征输入到语言模块,而在训练下游任务时使用的是
作为视觉特征)
- 语言模块:双向transformer
这里采用的是transformer的Decoder部分,输入为视觉特征,训练目标是生成图片描述。
双向生成:
从左向右:不断根据前面的词来预测后面的词(只能看到左边的词)
从右向左:与上面相反
文中提到为什么不采用BERT的masked方法进行生成,而用双向预测,原因是MLM每次只预测一小部分单词,效率低。
------------ 下游任务 ---------------
(这里只要视觉模块)两种方式:
1. 冻结模型,在视觉特征后加全连接层训练下游任务
2.不冻结模型,根据下游任务对模型进行微调
4. 实验&结论
文中做了很多实验,以及充分的对比分析。
在各个下游任务效果表现都很优秀,说明了文章方法的有效性。文中的目标不是学习图片描述而是视觉特征,但是图片描述的效果也是非常好的。