本文提出一种名为X-Decoder的模型,它具有广义解码能力,能够同时处理像素级分割和语言标记任务,并在多个视觉-语言等多模态任务上展现出强大的性能。

Title: X-Decoder: Generalized Decoding for Pixel, Image and Language
Paper: https://arxiv.org/pdf/2212.11270.pdf
Code: https://github.com/microsoft/X-Decoder/tree/main
Demo: https://huggingface.co/spaces/xdecoder/Demo

X-Decoder_编码器

燃炸!一图胜千言。X-Decoder 经过预训练以后,仅使用同一套参数便可以处理各种图像分割和视觉-语言任务,并且能够处理更复杂的组合任务,例如引用字幕和图像编辑。

简单来说,本文主要贡献在于提出一种名为X-Decoder的模型,它具有广义解码能力,能够同时处理像素级分割语言标记任务,并在多个视觉-语言等多模态任务上展现出强大的性能。该模型通过学习共享的视觉-语义理解空间,无需伪标签即可实现任务之间的交互和迁移学习。它在分割和视觉-语言任务中取得了最新的结果,并且在零样本学习和微调设置下表现出很高的灵活性。

NOTE: Here, ‘X’ denotes versatile, and also represents ‘piXel’.

挑战

1. 不同粒度级别上的视觉理解问题

视觉领域长期以来一直存在着不同粒度级别上的理解问题,涵盖了从图像级任务(例如图像分类、图像-文本检索、图像字幕和视觉问答)到区域级定位任务(例如目标检测和短语定位)再到像素级分组任务(例如图像实例/语义/全景分割)的各种任务。

2. 对像素级理解的重要性和挑战

从像素级别理解图像可以说是最重要且最具挑战性的问题之一,原因如下:(1)像素级注释成本高昂,与其他类型的注释相比无疑更加稀缺;(2)以开放词汇方式对每个像素进行分组和识别的研究较少;(3)更重要的是,在两个明显不同粒度级别上的数据中学习并获得相互的好处是非常复杂的。

3. 现有工作的局限性

现有的一些工作尝试从不同方面弥合像素级理解的差距,但仍存在一些局限性。例如,目前流行的大一统架构,如One-Former等,虽然能够取得一定的性能,但这些任务是在一个封闭集合中进行的。再比如,为了支持开放词汇识别,有些会将CLIPALIGN这类图像级视觉-语言基础模型的丰富语义知识转移或蒸馏到专门的模型中。然而,所有这些初始探索都集中在特定的分割任务上,并没有展示在不同粒度级别上的任务的泛化性能。

方法

X-Decoder_编码器_02

上面是 X-Decoder 的整个架构示意图,乍看之下是不是很简单,一个图像编码器、一个文本编码器和一个精心设计的解码器,完事。

严肃点,这其实就是个广义的解码框架,将所有任务,包括像素级图像分割、图像级检索和视觉-语言任务,都归纳为通用的解码过程,可以套在大多数的多模态框架上。具体而言,X-Decoder基于视觉编码器构建,用于提取多尺度图像特征,整体框架遵循Mask2Former。So,它的关键创新点便是解码器部分。

首先,它接受两组查询作为输入:

  • 通用的非语义查询,旨在解码通用分割的分割掩码,类似于Mask2Former
  • 新引入的文本查询,使解码器对各种与语言相关的视觉任务具备语言感知能力;

其次,X-Decoder预测两种类型的输出:

  • 像素级掩码
  • 标记级语义

这两种类型的不同组合可以无缝地支持所有感兴趣的任务。

最后,作者使用单个文本编码器来编码涉及所有任务的文本语料库,包括分割中的概念,引用分割中的短语,图像字幕中的标记和VQA中的问题等。同时解耦了图像编码器和文本编码器,以适应跨图像任务(例如图像-文本检索)和图像内任务(例如分割和字幕生成)的需求。因此,本文方法可以自然地促进任务之间的协同作用,并倡导学习共享的视觉-语义空间,同时很好兼容不同任务的异质性。

X-Decoder_数据_03

如上图所示,X-Decoder可以很方便地用于统一各种视觉和视觉-语言任务:

  • 通用分割:支持实例分割、语义分割和全景分割,均支持开放词汇和零样本设置。
  • 引用分割:根据来自文本编码器的任意文本查询,引用特定图像区域段。
  • 图像-文本检索:解耦图像和文本表示提取,并使用点积计算相似度。
  • 图像字幕生成:使用完全相同的解码器以自回归方式解码文本标记。

实验

定量分析

Zero-Shot Segmentation

X-Decoder_人工智能_04

Segmentation In the Wild

X-Decoder_编码器_05

 

定性分析

Zero-Shot Segmentation

X-Decoder_人工智能_06

Figure 4. Zero-shot semantic segmentation with pretrained X-Decoder on 10 settings of 7 datasets.

Zero-shot Segmentation for Videos

X-Decoder_人工智能_07

Figure 5. Zero-shot panoptic segmentation for YouTubeVOS video dataset.

Referring Segmentation for Videos

X-Decoder_编码器_08

Figure 6. Zero-shot referring segmentation for YouTubeVOS video dataset.

Image Captioning

X-Decoder_ide_09

Figure 7. Zero-shot image captioning on YoutubeVOS video frames.

Referring Image Captioning

X-Decoder_人工智能_10

Figure 8. Zero-shot referring image captioning on COCO 2017 val images (pink regions are referred).

Referring Image Editing

X-Decoder_数据_11

Segmentation in the Wild 

X-Decoder_人工智能_12

Figure 10. Ground Truth visualization of segmentation in the wild datasets from Roboflow for a wider evaluation. 

总结

本文提供了一种广义的解码器X-Decoder,能够无缝支持像素级和图像级视觉-语言理解的模型。通过简洁而通用的设计,X-Decoder 可以轻松地统一和支持通用分割、引用分割和视觉-语言任务,实现了强大的泛化能力和竞争性甚至是最先进的性能。

作者希望这项工作能够为下一代通用视觉系统的设计提供启示,但就目前来看,X-Decoder虽然在实现像素级和图像级视觉-语言理解方面具有很大的潜力,并在多个任务中展现了强大的性能和泛化能力,但是笔者认为还有一些常见的局限性,随便举两个例子:

数据稀缺性

像素级注释是一项昂贵且相对稀缺的资源,这可能限制了X-Decoder在某些任务上的应用。尽管X-Decoder通过预训练和零样本学习减少了对大量注释数据的需求,但在一些特定任务和领域中,可能仍然需要更多的标注数据来实现更好的性能。

开放世界的挑战

另一方面,X-Decoder 是在开放词汇情况下进行图像分割和语义理解。尽管其采取了一些策略来支持开放词汇的识别,但在处理新颖类别和不常见语义的情况下,仍然会面临同样的问题。通过示例可以看出,其实模型解决的大部分场景还是比较单一,或者说语义相对来说非常简单。

基于以上观点,或许我们可以考虑从三个方面入手:

强化泛化能力

例如,进一步研究如何提高X-Decoder的泛化能力,特别是在有限标注数据和开放词汇的情况下。可以探索半监督学习、迁移学习和元学习等技术,以利用未标注数据和先前学习的知识来改善性能。

模型解释性和可解释性

尽管X-Decoder在多任务学习和跨模态理解方面具有强大的能力,但如何解释和理解其内部工作机制仍然是一个有待研究的问题。进一步研究如何增强模型的解释性和可解释性,可以帮助我们更好地理解和信任模型的决策过程。

更广泛的任务支持

X-Decoder的通用性和灵活性为进一步扩展其任务支持提供了机会。因此,我们可以探索将X-Decoder应用于其他视觉和视觉-语言任务,如视频理解、图像生成等,以及在更多领域和数据集上的应用。当然,No money, no talk.