如何在没有特定任务微调或任何模型修改的情况下将预训练好的视觉模型适应新的下游任务?

提出一个问题的解决方案:如何在没有特定任务微调或任何模型修改的情况下将预训练好的视觉模型适应新的下游任务? 注意几个关键词:没有微调以及任何模型修改,预训练好的模型,适应不同新的任务。

这个事情在 NLP 的 GPT-3 模型当中做过,解决方案是:Prompt

面对新的任务,在推理时给 GPT-3 输入输出的示例和新的输入 (Prompt),目标是自动生成输出结果,且与给定示例一致。

因此,本文希望在视觉中实现这一点,即:在推理时,给定新任务的输入输出图像示例和新输入图像,目标是自动生成输出图像,与给定示例一致。

那如何解决这个问题呢?本文的结论是:只要在正确的数据进行训练,并将这个问题作为图像修复问题 (image inpainting),就可以解决。

作者在 Arxiv 学术论文的 88k 张无标注数据集上进行训练,并在很多图像到图像的下游任务,比如前景分割,单目标检测,着色,边缘检测上证明了方法的有效性。

本文做了什么工作

  1. 证明许多计算机视觉任务都可以按照图像修复任务来对待,只需给一些任务输入和输出示例和查询图像就可以做成。
  2. 构建了一个包含 88000 量的大型数据集,允许模型能够学习图像修复任务。无需任何标注信息,任务相关的描述。
  3. 展示出为训练数据集增加额外数据 (比如 ImageNet) 能获得更好效果。

1 通过图像修复任务完成视觉提示

论文名称:Visual Prompting via Image Inpainting (NeurIPS 2022)

论文地址:http://arxiv.org/pdf/2209.00647.pdf

论文主页:http://yossigandelsman.github.io/visual_prompt/

1.1 语言模型中一个通用模型做多种下游任务的特点能否迁移到视觉领域?

在过去的几年里,自监督学习在计算机视觉和自然语言处理中越来越受欢迎。现代深度学习模型的容量日益增大,使它们在较小的有标注数据集上训练时容易出现过拟合现象。自监督学习为这个问题提供了很好的解决方案,即解决这些高容量深度学习模型的数据饥饿问题。

但是,自监督学习学到的特征并不是 "拿来即用 (ready for use)" 的,通常需要通过对一些有标注数据集进行微调来适应给定的下游任务。那么,有没有可能去避免这种微调?

其实这个问题在 NLP 中早就已经被解决掉了,解决的方法就是所谓的提示 (Prompt)。Prompt 的意思是对于一种特定的语言理解任务,在测试时为期提供对应于目标任务的示例输入,和 query 信息。比如,下面就是一个 Prompt 的信息:

Je suis désolé I'm sorry
J'adore la glace

模型的结果是:

I love ice cream

对不同的下游任务,在测试时给提示的作法能否推广到视觉领域?换言之,与现在的 CV 任务一个模型做一个任务的范式不同,我们可否拥有一个通用模型,可以执行多种用户指定的任务,且无需任何权重微调?

本文提出:只要在正确的数据上进行训练大规模的图像修复 (image impainting) 模型,就能够成为视觉提示 (Visual Prompting) 的工具。

如下图1所示,作者构建了一个网状图片。其中,任务的输入输出示例和新的 query 使用绿色框,然后模型通过简单地修复图像的其余部分来生成结果,结果使用红色框。作者简单地将它们连接成一个带有黑色孔的单图像。本文方法的唯一要求是任务必须被定义为 image to image translation,这是视觉问题的一个非常大的子集。

Visual Prompt_输入输出

图1:通过图像修复进行视觉提示

通过这样的做法,就可以利用图像修复进行视觉提示。这个问题就能很好地解决。当新的下游任务 (比如 Segmentation) 出现时,只需要给一个输入输出示例,和 query。再把它们排列成网格状送入模型,就能够输出对应的结果。

1.2 MAE-VQGAN 方法介绍

Visual Prompt_输入输出_02

Visual Prompt_输入输出_03

图2:MAE-VQGAN 方法介绍

在训练期间,输入图像被像 ViT 那样分成 Patches,再 mask 掉一些 Patches 并送到 MAE 中。与直接预测像素的 MAE 不同,MAE-VQGAN 通过 softmax 层预测 visual token。作者通过使用 VQGAN Encoder 将图像映射成为 visual token 的 indices 来获得 GT 的 visual token。对于每个 masked token,解码器输出预训练的 VQGAN code book 上的分布。该模型使用交叉熵损失进行训练。

Visual Prompt_数据集_04

1.3 给训练好的图像修复模型加提示

作者构建了一个视觉提示 (Visual Prompt),一个由任务输入输出示例和新的 query 图像组成的网格状图像。修复模型必须修复图像的空白部分。

Visual Prompt_数据_05

1.4 Visual Prompt 的设计

Visual Prompt_数据集_06

1.5 数据集

Visual Prompt_输入输出_07

这个数据集包含 88, 645 张图片,更接近本文视觉提示的结构。该数据集是从 Arxiv 收集的。作者下载了从 2010 到 2022 年的所有论文,并提取了 cs.CV 分区,因为它们包含更类似于网格结构的图像,如下图3所示。

Visual Prompt_输入输出_08

图3:Computer Vision Figures 中的随机图片示例

为了删除不相干的源图片,例如图标,作者手动标记了 2000 张图片,并训练了一个二值图像分类器。分类器为那些具有图形状结构且至少一张自然图像的图片分配高分。然后,作者对整个数据集使用这个分类器,只保留信息量最大的图片,来自 23302 个不同的论文。作者随机划分 90% 的数据用于训练,其余用于验证。

1.6 实验结果

为了研究模型选择对提示结果的影响,作者使用了不同的模型进行实验,包括 MAE-VQGAN 和 VQGAN,BEiT,和 MAE 等等其他几个修复模型。

下游任务实验结果

视觉提示的构建策略: 给定1个示例对和1个查询图像,作者以相同的方式为所有的任务构建视觉提示:作者构建了一个 2×2 的网格,包含4个子图。其中,输入输出示例在第1行,query 图像出现在第2行左下角。如图1所示。

作者在3个视觉任务上面评估图像修复模型。

前景分割 (Foreground Segmentation) 任务: 目标是将查询图像二进制分割为前景和背景。输入输出示例是一张图片及其对应的二值分割掩码,query 图片是新的图像,目标是获得其二值分割掩码。作者使用 Pascal-5i 数据集,并报告 mIoU 指标。

单目标检测 (Single Object Detection) 任务: 与前景分割类似,这个任务的目标是对 query 图像中出现的 Object 进行二进制分割。然而,这项任务比前景分割更具挑战性,因为 mask 是从边界框中获得的。作者使用 Pascal VOC 2012 数据集及其相关的检测框。为简单起见,作者使用 Pascal 注释仅包含具有 Single Object 的图像,并过滤掉那些 Object 覆盖了超过 50% 图像的图像。作者遵循与前景分割类似的过程来获得二进制分割掩码,并报告 mIoU 指标。

图像着色 (Colorization) 任务: 目标是将灰度图像映射到彩色图像。示例对是灰度图像和相应的彩色图像,如图 4 所示。作者从 ImageNet 验证集中随机抽取 1000 个示例对和图像 query,并将它们转换为灰度以获得每个图像的灰度和着色版本,并报告了 MSE 损失和 LPIPS 指标。

Visual Prompt_数据集_09

图4:视觉提示预测示例

实验结果如下图4和5所示。MAE-VQGAN 在检测和分割方面大大优于其他模型,并且生成了比 MAE 更清晰的图像。可以发现 VQGAN 很难输出准确的结果,这可能是由于顺序解码。BEiT 模型的表现优于 MAE。

Visual Prompt_数据集_10

图5:视觉任务的视觉提示结果

合成数据研究**

为了评估修复模型的组合预测能力,作者创建了 3 个简单的合成任务以及它们的组合,并在每个任务 100 个示例上评估每个模型。

视觉提示策略: 给定2个示例对和1个 query 图像,作者以相同的方式为所有的任务构建视觉提示:作者构建了一个 3×2 的网格,包含6个子图。其中,输入输出示例在前2行,query 图像出现在第3行左下角。如下图6所示。

Visual Prompt_输入输出_11

图6:合成数据研究结果

每个示例对都有一个彩色形状的图像,以及另一个相应的带有一些变化的图像。这些变化可以是颜色、形状、大小或两者的组合,示例图详细的描述如下:

Resize: 每个示例对都包含一个圆的图像,以及一个圆圈大小较小的对应图像。目标是在给定图像 query 的情况下使用调整大小的版本预测图像。

Shape: 每个示例对都是一个带圆圈的图像,以及一个带有矩形的相应图像。两者的大小相似,出现在同一个位置。目标是在给定新的图像 query 的情况下,用矩形预测图像。

Color: 每个示例对都包含一个出现在同一位置的圆图像,颜色从绿色变为蓝色。给定一个新的图像 query,目标是预测对应的图像,圆用蓝色着色。

评估: 作者从一组预定义的选项中将每个预测像素映射到其最近邻颜色:黑色、白色、蓝色或绿色。然后通过将出现在 GT 形状颜色中的像素预测视为前景,并将其余部分视为背景来测量和报告颜色感知 mIOU。

实验结果如图7所示。从结果可以发现,如果本文模型没有在本文提出的数据集上面进行预训练,图像修复模型就无法泛化到这些之前从来没有见过的任务。当所有的模型都在本文提出的数据集进行预训练之后,所有的模型性能都会提高。但是由于复杂性增加,相同的模型可能会难以处理任务的组合。VQGAN 模型使用顺序解码,缺乏上下文导致性能不佳。MAE 模型在颜色上优于 MAE-VQGAN,BEiT 在 Resize 上不佳。这些模型需要 dVAE 或者 codebook,可能不适合这些任务。

Visual Prompt_人工智能_12

图7:合成数据研究结果

数据集规模的影响

作者评估了数据集规模对预训练的影响。作者尝试了仅在 ImageNet,或者仅仅使用本文数据集,以及和二者组合这几种情况训练。如下图8所示是 Pascal-5i 上的前景分割实验结果。在 ImageNet 上训练的 MAE-VQGAN 实现了始终低5个点的 mIoU。在组合数据集上训练的模型表现最好,这表明 MAE-VQGAN 可以从大量无标注图像中获益。

Visual Prompt_人工智能_13

图8:Pascal-5i 上的前景分割的实验结果。在更多的数据上预训练 MAE-VQGAN 可以改善视觉提示的结果

视觉提示工程

作者探索了为前景分割任务构建不同的视觉提示及其相应的 MAE-VQGAN 结果。可以发现,模型在更改提示布局,比如水平顺序与垂直顺序 (图8所示) 和更改掩码颜色、纹理或仅使用边缘时 (图9所示) 都可以生成合理的补全。   

Visual Prompt_输入输出_14

图9:视觉提示实验结果。以及所选的 Patch 的平均注意力图 (用黑色边界框注释)

Visual Prompt_数据_15

图10:视觉提示工程

图11中的 mIoU 结果表明,当分割掩码为黑白,且提示为垂直布局的情况下,模型表现最好。有趣的是,通过分析掩码 token 的平均注意力头,可以观察到注意力会随着提示布局的变化而发生变化。

Visual Prompt_数据集_16

图11:使用不同的 Prompt 的提示工程实验结果