前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文献阅读:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

文献阅读:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

作者头像
codename_cys
发布2022-11-02 18:19:31
1.2K0
发布2022-11-02 18:19:31
举报
文章被收录于专栏:我的充电站

1. 内容简介

这篇文章算是我司今年发表的一篇颇有影响力的文章了,连不做cv的我都有所耳闻,毕竟刷指标刷的委实是有点厉害,简直堪比18年bert刚出来时候的状况,所以就来跟风看一下这篇文章,看看他到底是怎么做的,然后能不能在nlp还有推荐领域给一些参考思路。

具体而言,这篇文章提出了一个Beit3模型,其模型的本身其实本质上还是一个Transformer的架构,和近年来非常流行的将transformer引入到cv领域的思路是一脉相承的,倒是没啥特别创新的思路,所以一开始也没有非常的get这个Beit3模型怎么就突然获得了如此牛逼的结果。

不过事实证明还是跨领域对领域内技术背景的了解不够深,参考了下面的参考链接1之后才算是真的搞明白了文章中的优化思路的脉络。

具体而言,Beit3模型的核心点包括以下三点:

  1. 在transformer的基础上引入MLM预训练,这个思路似乎在前作Beit当中就已经有了,这里算是继承了前作的优化思路;
  2. 将图片信息视为文本,这种处理方式对于图片多少有些粗暴,但是好处在于说是统一了文本和图片的处理方式,从而避开了VLMO那种分阶段训练的方式,训练上更加优雅;
  3. 扩展了模型规模,这个主要好像是借鉴了我司之前在DeepNet当中的工作,使得模型可以更大,而众所周知,大模型如果可以得到充分的训练,往往就能够获得更好的效果表达。

我们给出文中给出的这张颇为震撼的结果图如下:

下面,我们来具体看看模型的结构细节以及其在实验上的效果。

2. 模型结构

首先,我们来看一下Beit模型的具体模型结构。

这部分事实上又主要包含以下几个部分:

  1. 图片信息作为类文本的处理方法;
  2. 一体化的模型结构设计;
  3. 模型预训练方法;

下面,我们分别来考察一下这些内容。

1. 数据处理

首先,我们来看一下输入数据的处理,其实主要就是图片信息的处理上面。

Beit3模型作为要给Multiway Transformer,一个重要的特征就在于说模型对于图片和文本信息的处理一致性,因此文本与图片的数据处理之后要求为相同的格式。

对于文本的处理,事实上就是常规的文本处理方法,用一个分词器(这里使用sentence piece)将文本分为tokens,然后用一个embedding layer映射为一个embedding的序列。

但是,对于图片的处理,这里多多少少会有一点区别,毕竟图片是一个二维的信息载体,要强硬的处理成一维数据多多少少会有一点问题,但是也不是完全不行,这里的处理方法还是基本的分块强行构成序列,将

224 \times 224

清晰度的图片拆分为

14 \times 14

的patch,然后通过patch的embedding映射构成sequence。

当然,这里的position embedding应该会需要多少变得特殊一些,这里得去看看Beit那篇文章或者直接考察一下源码,这里暂时还没有深入地去看,也只是个人的感觉而已。

不过言归正传,通过上述方式,我们就可以统一的将文本和图片处理为完全相同的数据输入格式,后面就可以对其使用相同的模型进行处理了。

2. 模型结构设计

然后,到了模型的细节处理上面,其实本质上还是transformer那一套,就是标准的self-attention加上ffn结构,不过不同的是,模型对于文本和图片,还是准备了不同的ffn层结构,具体可以参考下图:

可以看到,本质上模型的输入还是一个self-attention + ffn layer的设计,不同的是,ffn层的选择对于不同的层以及不同的输入会有所区分,V-FFN用于处理图片信息,L-FFN用于处理文本信息,而VL-FFN用于处理两者的联合信息。文中提到在最上方的三层会使用VL-FFN,而对于下方的网络,则会一起使用V-FFN和L-FFN,具体的网络设计可以参考下图:

对应的模型参数以及训练数据可以参考下表:

不过需要提一嘴的是,这里为了将模型做大,也就是文中提到的scale-up,Beit3优化了参数的初始化过程。具体而言,就是参考了DeepNet的参数初始化方法,这部分内容之前我们其实也写了篇博客(文献阅读:DeepNet: Scaling Transformers to 1,000 Layers)对其进行了整理,所以这里就不具体展开了。

3. 模型训练

最后,我们来看一下模型训练的细节。

其实这部分就是一个比较标准的MLM的模式,随机mask掉15%的文本token和40%的图片patch,然后让模型进行完形填空反向预测这部分内容即可。

看下述参考链接1中提到的,似乎在前作Beit当中就已经使用了,然后在VLMO系列模型当中也用到了,只不过他们更多的是分阶段的训练,所以感觉其实也不是什么新方法?

当然,这个因为我之前没怎么做过CV方向的东西,所以就真不太了解了,但是从NLP角度来说,MLM感觉近些年来实在谈不上是什么特别推成出新的方法了。

3. 实验结果

下面,在完成了模型的介绍之后,我们稍微show一下文中展示的Beit3模型在各个任务当中的效果。

1. 图文联合任务

1. Visual Question Answering (VQA)

这个任务是说给定一张图片和一个问题,然后按照图片信息回答问题。

不过问题对应的答案候选集somehow是有限的,因此论文中将其视为了一个多类别的分类问题。具体而言,论文中将图片与问题文本的embedding concat起来之后输入到一个多类别的预测层,然后输出最可能的回答。

论文是在VQAv2数据集上进行的这部分实验的考察,其给出的具体实验结果如下:

2. Visual Reasoning

这个任务同样是给定一张图片和一段文本,不过这里的文本是一段描述,然后要做的就是判断这段描述文本与图片是否相符,因此就是一个是非判断题。由是我们的处理就可以和上面一模一样。

文中采用了NLVR2这个数据集,其结果可以参考上述表4中的第二大列部分。

3. Image Captioning

Image Captioning任务较之上述两者多少显得要难一些,因为需要根据给定的图片生成一段文本,因此上述分类问题的处理方式并不适用,但也不是特别难以修改,只要将其修改为一个unilm,然后对文本进行逐字生成即可。

论文中在COCO数据集上进行了实验,实验结果同样展示在了上面的表4当中。具体就是上述表4中的第三大列。

可以看到,依然基本还是屠榜的效果。

4. Image-Text Retrieval

这个任务其实就是以图搜文或者反过来以文搜图,所以就像推荐任务差不多,用一个双塔分别对文本和图片进行编码,然后计算相似度即可。

文章中在COCO和Flickr数据集上进行了实验,具体结果如下:

更进一步的,文章中还直接在Flickr数据集上进行了zero-shot的考察,同样得到了非常理解的结果。

2. 纯图像任务

1. Object Dectection & Instance Segmentation

纯图像任务方面文中考察的第一个任务就是目标检测,文中在COCO数据集上进行了实验,得到结果如下:

2. Semantic Segmentation

Semantic Segmentation任务就是一个像素级别的实体识别任务,给定150种实体类别,然后对没一个像素识别是否属于某一个类别。

文中在ADE20K数据集上进行了实验,得到结果如下:

可以看到,也是SOTA的结果。

3. Image Classification

Image Classification任务就是对图片进行一下分类,原则上其实只要将其作为一个分类问题即可。

不过文中对于这个问题的处理多少特殊了一点,将其视为一个匹配检索问题,就是对每个类别也进行一个编码,然后计算图片和类别的相似度。

文章在ImageNet数据集下继续了考察,其实验结果如下:

4. 总结 & 思考

综上,这篇文章最核心的还是说对于CV领域内的模型预训练方式进行了优化,优化了图片的编码方式,然后引入了DeepNet的初始化方法从而增强了模型scale-up的能力。在此基础上文中训练得到的Beit3模型基本完成了在所有任务上的屠榜成就。

不过,again,由于我之前没做过CV相关的工作,所以对这个结果其实也就是看看过去,没啥实际的体感。但即便如此,考虑到后续我自己的工作可能会涉及到多模态,这篇文章的结果感觉还是很有必要了解一下的,至少要用的时候也得知道有这么个玩意不是……

5. 参考链接

  1. https://www.zhihu.com/question/549621097
  2. https://zhuanlan.zhihu.com/p/561301594
  3. https://www.mathworks.com/solutions/image-video-processing/semantic-segmentation.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 内容简介
  • 2. 模型结构
    • 1. 数据处理
      • 2. 模型结构设计
        • 3. 模型训练
        • 3. 实验结果
          • 1. 图文联合任务
            • 1. Visual Question Answering (VQA)
            • 2. Visual Reasoning
            • 3. Image Captioning
            • 4. Image-Text Retrieval
          • 2. 纯图像任务
            • 1. Object Dectection & Instance Segmentation
            • 2. Semantic Segmentation
            • 3. Image Classification
        • 4. 总结 & 思考
        • 5. 参考链接
        相关产品与服务
        图片处理
        图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档