点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者丨Cheng He

来源丨AI公园

Transformer结构已经在许多自然语言处理任务中取得了最先进的成果。Transformer 模型的一个主要的突破可能是今年年中发布的GPT-3,被授予NeurIPS2020“最佳论文“。

在计算机视觉领域,CNN自2012年以来已经成为视觉任务的主导模型。随着出现了越来越高效的结构,计算机视觉和自然语言处理越来越收敛到一起,使用Transformer来完成视觉任务成为了一个新的研究方向,以降低结构的复杂性,探索可扩展性和训练效率。

以下是几个在相关工作中比较知名的项目:

  • DETR(End-to-End Object Detection with Transformers),使用Transformers进行物体检测和分割。

  • Vision Transformer (AN IMAGE IS WORTH 16X16 WORDS: Transformer FOR IMAGE RECOGNITION AT SCALE),使用Transformer 进行图像分类。

  • Image GPT(Generative Pretraining from Pixels),使用Transformer进行像素级图像补全,就像其他GPT文本补全一样。

  • End-to-end Lane Shape Prediction with Transformers,在自动驾驶中使用Transformer进行车道标记检测

结构

总的来说,在CV中采用Transformer的相关工作中主要有两种模型架构。一种是纯Transformer结构,另一种是将CNNs/主干网与Transformer相结合的混合结构。

  • 纯Transformer

  • 混合型:(CNNs+ Transformer)

Vision Transformer是基于完整的自注意力的Transformer结构没有使用CNN,而DETR是使用混合模型结构的一个例子,它结合了卷积神经网络(CNNs)和Transformer。

一些问题

  • 为什么要在CV中使用Transformer?如何使用

  • benchmark上的结果是什么样的?

  • *What are the constraints and challenges of using Transformer in CV?*

  • 哪种结构更高效和灵活?为什么?

你会在ViT、DETR和Image GPT的下面的深入研究中找到答案。

Vision Transformer

Vision Transformer(ViT)将纯Transformer架构直接应用到一系列图像块上进行分类任务,可以取得优异的结果。它在许多图像分类任务上也优于最先进的卷积网络,同时所需的预训练计算资源大大减少(至少减少了4倍)。

Vision Transformer模型结构

图像序列patches

它们是如何将图像分割成固定大小的小块,然后将这些小块的线性投影连同它们的图像位置一起输入变压器的。然后剩下的步骤就是一个干净的和标准的Transformer编码器和解码器。

在图像patch的嵌入中加入位置嵌入,通过不同的策略在全局范围内保留空间/位置信息。在本文中,他们尝试了不同的空间信息编码方法,包括无位置信息编码、1D/2D位置嵌入编码和相对位置嵌入编码。

不同位置编码策略的对比

一个有趣的发现是,与一维位置嵌入相比,二维位置嵌入并没有带来显著的性能提升。

数据集

该模型是从多个大型数据集上删除了重复数据预训练得到的,以支持微调(较小数据集)下游任务。

  • ILSVRC-2012 ImageNet数据集有1k类和130万图像

  • ImageNet-21k具有21k类和1400万图像

  • JFT拥有18k类和3.03亿高分辨率图像

模型的变体

像其他流行的Transformer 模型(GPT、BERT、RoBERTa)一样,ViT(vision transformer)也有不同的模型尺寸(基础型、大型和巨大型)和不同数量的transformer层和heads。例如,ViT-L/16可以被解释为一个大的(24层)ViT模型,具有16×16的输入图像patch大小。

注意,输入的patch尺寸越小,计算模型就越大,这是因为输入的patch数目N = HW/P*P,其中(H,W)为原始图像的分辨率,P为patch图像的分辨率。这意味着14 x 14的patch比16 x 16的图像patch在计算上更昂贵。

Benchmark结果

图像分类的Benchmark

以上结果表明,该模型在多个流行的基准数据集上优于已有的SOTA模型。

在JFT-300M数据集上预训练的vision transformer(ViT-H/14, ViT-L/16)优于所有测试数据集上的ResNet模型(ResNet152x4,在相同的JFT-300M数据集上预训练),同时在预训练期间占用的计算资源(TPUv3 core days)大大减少。即使是在ImageNet-21K上预训练的ViT也比基线表现更好。

模型性能 vs 数据集大小

预训练数据集大小VS模型性能

上图显示了数据集大小对模型性能的影响。当预训练数据集的大小较小时,ViT的表现并不好,当训练数据充足时,它的表现优于以前的SOTA。

哪种结构更高效?

如一开始所提到的,使用transformer进行计算机视觉的架构设计也有不同,有的用Transformer完全取代CNNs (ViT),有的部分取代,有的将CNNs与transformer结合(DETR)。下面的结果显示了在相同的计算预算下各个模型结构的性能。

不同模型架构的性能与计算成本

以上实验表明:

  • 纯Transformer架构(ViT)在大小和计算规模上都比传统的CNNs (ResNet BiT)更具效率和可扩展性

  • 混合架构(CNNs + Transformer)在较小的模型尺寸下性能优于纯Transformer,当模型尺寸较大时性能非常接近

ViT (vision transformer)的重点

  • 使用Transformer架构(纯或混合)

  • 输入图像由多个patch平铺开来

  • 在多个图像识别基准上击败了SOTA

  • 在大数据集上预训练更便宜

  • 更具可扩展性和计算效率

DETR

DETR是第一个成功地将Transformer作为pipeline中的主要构建块的目标检测框架。它与以前的SOTA方法(高度优化的Faster R-CNN)的性能匹配,具有更简单和更灵活的pipeline。

DETR结合CNN和Transformer的pipeline的目标检测

上图为DETR,一种以CNN和Transformer为主要构建块的混合pipeline。以下是流程:

  1. CNN被用来学习图像的二维表示并提取特征

  2. CNN的输出是扁平化的,并辅以位置编码,以馈入标准Transformer的编码器

  3. Transformer的解码器通过输出嵌入到前馈网络(FNN)来预测类别和包围框

更简单的Pipeline

传统目标检测pipeline和DETR的对比

传统的目标检测方法,如Faster R-CNN,有多个步骤进行锚的生成NMS。DETR放弃了这些手工设计的组件,显著地简化了物体检测pipeline。

当扩展到全景分割时,惊人的结果

在这篇论文中,他们进一步扩展了DETR的pipeline用于全景分割任务,这是一个最近流行和具有挑战性的像素级识别任务。为了简单解释全景分割的任务,它统一了2个不同的任务,一个是传统的语义分割(为每个像素分配类标签),另一个是实例分割(检测并分割每个对象的实例)。使用一个模型架构来解决两个任务(分类和分割)是非常聪明的想法。

像素级别的全景分割

上图显示了全景分割的一个例子。通过DETR的统一pipeline,它超越了非常有竞争力的基线。

注意力可视化

下图显示了Transformer解码器对预测的注意力。不同物体的注意力分数用不同的颜色表示。

通过观察颜色/注意力,你会惊讶于模型的能力,通过自注意在全局范围内理解图像,解决重叠的包围框的问题。尤其是斑马腿上的橙色,尽管它们与蓝色和绿色局部重叠,但还是可以很好的分类。

预测物体的解码器注意力可视化

DETR的要点

  • 使用Transformer得到更简单和灵活的pipeline

  • 在目标检测任务上可以匹配SOTA

  • 并行的更有效的直接输出最终的预测集

  • 统一的目标检测和分割架构

  • 大目标的检测性能显著提高,但小目标检测性能下降

Image GPT

Image GPT是一个在像素序列上用图像补全训练的GPT-2 transformer 模型。就像一般的预训练的语言模型,它被设计用来学习高质量的无监督图像表示。它可以在不知道输入图像二维结构的情况下自回归预测下一个像素。

来自预训练的图像GPT的特征在一些分类基准上取得了最先进的性能,并在ImageNet上接近最先进的无监督精度。

下图显示了由人工提供的半张图像作为输入生成的补全模型,随后是来自模型的创造性补全。

来自Image GPT的图像补全

Image GPT的要点:

  • 使用与NLP中的GPT-2相同的transformer架构

  • 无监督学习,无需人工标记

  • 需要更多的计算来生成有竞争力的表示

  • 学习到的特征在低分辨率数据集的分类基准上实现了SOTA性能

总结

Transformer在自然语言处理中的巨大成功已经在计算机视觉领域得到了探索,并成为一个新的研究方向。

  • Transformer被证明是一个简单和可扩展的框架,用于计算机视觉任务,如图像识别、分类和分割,或仅仅学习全局图像表示。

  • 与传统方法相比,在训练效率上具有显著优势。

  • 在架构上,可以采用纯Transformer的方式使用,也可以与cnn结合使用混合的方式使用。

  • 它也面临着挑战,比如在DETR中检测小目标的性能较低,在Vision Transformer (ViT)中,当预训练数据集较小时,性能也不是很好。

  • Transformer正在成为学习序列数据(包括文本、图像和时间序列数据)的更通用的框架。

英文原文:

https://towardsdatascience.com/transformer-in-cv-bbdb58bf335e

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

收藏 | 计算机视觉中的Transformer相关推荐

  1. 计算机视觉中的transformer模型创新思路总结

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨仿佛若有光 来源丨CV技术指南 编辑丨极市平台 导读 本文回顾了ViT的结构,总结了计算机视觉 ...

  2. 计算机视觉中的Transformer

    计算机视觉中的Transformer 序 综述 分类 交集 DETR路线 DETR Deformable DETR ViT路线 ViT DieT Tokens-to-Token ViT Pyramid ...

  3. 收藏 | 计算机视觉中的自注意力

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨Branislav Holländer 来源丨CV技术指南     编辑丨极市平台 AI博士笔记系列推荐 ...

  4. 计算机视觉中的Transformer的最新进展!

    在公众号[计算机视觉联盟]后台回复[9076]获取独家200页手推AI笔记:我的微信:PursueWin:    --by Sophia 中科院学霸 | 上市AI算法工程师 | CSDN博客专家 将T ...

  5. Five reasons to embrace Transformer in computer vision/在计算机视觉领域拥抱Transformer的5条理由

    翻译自微软亚洲研究院官网文章Five reasons to embrace Transformer in computer vision 2021.12.5 人工智能的统一建模故事 "大一统 ...

  6. CV中的transformer模型创新思路总结

    前言:本文回顾了ViT的结构,总结了计算机视觉中的transformer的主要改进思路:改进分块,改进位置编码,改进Encoder,增加Decoder.每个思路下都介绍了相关的论文,介绍了这些论文的提 ...

  7. 计算机视觉中的神经网络可视化工具与项目

    前言 本文介绍了一些关于神经网络可视化的项目,主要有CNN解释器,特征图.卷积核.类可视化的一些代码和项目,结构可视化工具,网络结构手动画图工具. 本文来自公众号CV技术指南的技术总结系列 关注公众号 ...

  8. 【深度学习】transformer 真的快要取代计算机视觉中的 CNN 吗?

    我相信你肯定已经在自然语言领域中听说过 transformer 这种结构,因为它在 2020 年的 GPT3 上引起了巨大轰动.Transformer 不仅仅可以用于NLP,在许多其他领域表现依然非常 ...

  9. 当图网络遇上计算机视觉!计算机视觉中基于图神经网络和图Transformer的方法和最新进展...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 可能是目前最全面的<当图网络遇上计算机视觉>综述!近四 ...

最新文章

  1. 最新消息!腾讯紧急宣布再度延期复工时间到24号!附各大企业最新复工时间表...
  2. python为啥这么受欢迎_Python为什么这么受欢迎?原因竟在于它的10个知识点
  3. ICCV 2019《Zero-Shot Grounding of Objects from Natural Language Queries》论文笔记
  4. Bentley MicroStation V8i安装教程
  5. ./ffmpeg: error while loading shared libraries: libavdevice.so.57
  6. 大话设计模式之设计模式遵循的七大原则
  7. 【重难点】【JUC 03】怎么实现一个线程安全的队列、手写模拟实现一个阻塞队列
  8. Wait-for-it之参考
  9. 26个字母大小写的ASCII码值
  10. 搜索引擎的原理以及倒排索引技术
  11. 目标检测(二):OverFeat
  12. request.getParameter()与request.getParameterValues()的区别和使用方式
  13. chm提示 已取消到该网页的导航的解决方法
  14. win10 windows 键(徽标键) 失效解决办法
  15. Securing Wireless LANs with PEAP and Passwords
  16. IC Compiler II(ICC II)后端设计流程——超详细
  17. [网络验证破解]某外挂验证转本地化
  18. 项目实施管理之项目调研
  19. File Associations
  20. 计算机应用基础第三版答案,新版《计算机应用基础》各章课后习题-有答案.doc...

热门文章

  1. 技术不错的程序员,为何面试却“屡战屡败”
  2. 从原理到落地,七大维度详解矩阵分解推荐算法
  3. 程序员假冒AI,印度公司竟骗取2亿元投资
  4. 当谈论迭代器时,我谈些什么?
  5. 阿里AI再摘一冠,大幅提高视觉对话世界纪录
  6. Python3破冰人工智能,你需要掌握一些数学方法
  7. Python文本预处理:步骤、使用工具及示例
  8. 第四范式联合浪潮商用机器发布AI一体机,接入AI像使用手机一样简单
  9. Yann LeCun:距离“真正的” AI,我们还缺什么?
  10. 还在用分页?太Low !试试 MyBatis 流式查询,真心强大!