前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白系列(2)| 图像识别中的Vision Transformers

小白系列(2)| 图像识别中的Vision Transformers

作者头像
一点人工一点智能
发布2022-12-27 13:05:25
1.1K0
发布2022-12-27 13:05:25
举报

2022 年,Vision Transformers(ViT) 已经成为了卷积神经网络 (CNN) 的最具有竞争力替代品。虽然卷积神经网络目前在计算机视觉中处于领先地位,被广泛用于不同的图像识别任务。但是ViT 模型在计算效率和准确性方面比当前的 SOTA算法(CNN) 高出了近 4 倍。

目前Transformers模型在自然语言处理(NLP)中被广泛应用。最近人们对ViT和多层感知器(MLP)也越来越关注。

本文将涵盖以下内容:

  • 什么是Vision Transformers (ViT)?
  • 图像识别中的ViT模型
  • Vision Transformers是如何工作的?
  • Vision Transformers的应用

01 图像识别中的ViT

虽然Transformer架构已经成为在自然语言处理(NLP)任务中的SOTA算法,但它与计算机视觉(CV)相关的应用仍然很少。在计算机视觉中,注意力机制要么与卷积神经网络(CNN)结合使用,要么用于替换卷积神经网络的某些方面,同时保持其完整构成。主流的图像识别算法包括ResNet、VGG、YOLOv3和YOLOv7。

广受欢迎的卷积神经网络(CNN)结构

然而,这种对CNN的依赖性不是强制性的,直接应用于图像序列的纯Transformer可以在图像分类任务中很好地工作。

最近,Vision Transformers(ViT)在几种计算机视觉应用(如图像分类、目标检测和语义分割)的基准测试中取得了极具竞争力的性能。

1.1 什么是ViT?

Vision Transformers (ViT)模型是在ICLR2021上作为会议论文发表的一篇题为“An Image is Worth 16*16 Words: Transformers for Image Recognition at Scale”研究论文中介绍的。它由Neil Houlsby、Alexey Dosovitskiy和Google研究大脑团队的另外10位作者开发的。

VIT模型预训练代码可以在Github上找到(地址:https://github.com/google-research/vision_transformer);ViT模型在ImageNet和ImageNet-21k数据集上进行了预训练。

1.2 Transformers是一种深度学习方法吗?

机器学习中的Transformer是一种使用注意力机制、以对输入数据的每个部分的重要性进行差异加权的深度学习模型。机器学习中的Transformer是有多个自监督注意层构成的,他们主要用于自然语言处理(NLP)和计算机视觉(CV)领域。

机器学习中的Transformer算法很有可能成为可应用于各种数据模式的通用学习方法,包括最近在计算机视觉方面取得的突破,Transformer算法已经实现了当前最优的标准精度和更好的参数效率。

1.3 CNN与ViT的不同点

与CNN相比,ViT在使用较少的预训练计算资源的情况下取得了显著的效果。不过,ViT通常具有较弱的感应偏差,在较小数据集上训练时对模型正则化或数据增强(AugReg)的依赖性增加。

ViT是一个基于最初为基于文本的任务设计的Transformer架构的视觉模型。ViT模型将输入图像表示为一系列图像块并直接预测图像的类标签,就像使用Transformer进行文本处理时使用的一系列单词嵌入一样。当对足够的数据进行训练时,ViT表现出很好的性能,以四分之一的计算资源打破了类似的CNN的性能。

当涉及NLP模型时,这些Transformer具有很高的成功率,并且现在也应用于图像识别任务中的图像。CNN使用像素阵列,而ViT将图像分割为visual tokens。视觉Transformer将图像分成固定大小的块,正确地嵌入每个块,并连同位置嵌入信息一起作为Transformer编码器的输入。此外,在计算效率和准确性方面,ViT模型的性能几乎是CNN的四倍。

ViT中的自注意层(the self-attention)使得在整个图像中全局嵌入信息成为可能。该模型还学习训练数据以编码图像块的相对位置,从而重建图像的结构。

Transformer编码器包括:

  • Multi-Head Self Attention Laye(MSP):该层将所有注意力输出线性连接到正确的维度。较多的Attention Head有助于训练图像中的局部和全局依赖性。
  • Multi-Layer Percetrons Layer(MLP):该层包含两层高斯误差线性单元(GELU)。
  • Layer Norm(LN):这是在每个块之前添加的,因为它不包括训练图像之间的任何新相关性。这有助于提高训练时间和整体表现。

此外,在每个块之后还有残差连接(Residual Connection),残差连接允许组件直接流过网络而不经过非线性激活。

在图像分类中,MLP层实现分类Head。它在预训练时使用一个隐藏层,并使用一个线性层进行微调。

原始图像(左)和ViT-S/16模型的注意力图(右)

来源:https://arxiv.org/abs/2106.01548

1.4 ViT中的注意力图(Attention Maps)是什么?

注意力(更准确地说是自注意力)是机器学习Transformer的重要组成部分之一。它是一种计算基元(computational primitive),用于量化成对实体交互,帮助网络学习输入数据中存在的层次结构和对齐。注意力已被证明是视觉网络实现更高鲁棒性的关键因素。

ImageNet-A源图像上ViT注意力图的可视化

来源:https://arxiv.org/abs/2105.07581

02 ViT架构

Vision Transformer的总体架构以逐步的方式给出如下:

  1. 将图像拆分为块(固定大小)
  2. 压平图像块
  3. 从这些扁平图像块创建低维线性嵌入
  4. 包括位置嵌入
  5. 将序列作为输入馈送至最先进的Transformer编码器
  6. 使用图像标签预训练ViT模型,然后在大数据集上对其进行全面监督
  7. 微调下游数据集进行图像分类

ViTa架构

来源:https://github.com/google-research/vision_transformer

尽管ViT full-Transformer架构是视觉处理任务的一个很有前景的选择,但当在中等大小的数据集(如ImageNet)上从头开始训练时,ViT的性能仍然不如类似大小的CNN替代方案(如ResNet)。

2021,在ImageNet上从头开始训练时,ViT与ResNet和MobileNet的性能基准比较,来源:https://arxiv.org/abs/2101.11986

03 ViT是怎么工作的?

ViT模型的性能取决于优化器、网络深度和数据集特定的超参数等。与ViT相比,CNN更容易优化一些。

与一个基础的Transformer不用的是需要将一个Transformer与CNN前端结合起来。通常的ViT主线采用stride=16的16*16卷积。相比之下,stride=2的3*3卷积增加了稳定性并提高了精度。

CNN将基本像素转换为特征图。随后,特征图由tokenizer转换为一系列标记,然后输入到Transformer中。然后,Transformer应用注意力技术创建一系列输出标记。最终,投影仪将输出标记重新连接到特征图。后者允许检查潜在的关键像素级细节。这样就减少了需要研究的token数量,大大降低了成本。

特别是,如果在超过1400万张图像的巨大数据集上训练ViT模型,它可以优于CNN。如果不是很大的数据集,最好的选择是ResNet或EfficientNet。即使在微调过程之前,ViT模型也会在一个巨大的数据集上进行训练。唯一的改变是忽略MLP层并添加一个新的D次KD*K层,其中K是小数据集的类数。

为了以更好的分辨率进行微调,需要完成了预训练位置嵌入的2D表示。这是因为可训练线性层可以对位置嵌入进行建模。

04 Vision Transformers的应用

ViTa在诸如目标检测、分割、图像分类和动作识别等主要的图像识别任务中有广泛的应用。此外,ViT还应用于生成建模和多模型任务,包括视觉定位、视觉问答和视觉推理。

视频预测和行为识别都是视频处理中需要ViT的部分。此外,图像增强、着色和图像超分辨率处理也使用ViT模型。此外,ViT在3D分析中也有许多应用,例如分割和点云分类。

05 总结

Vision Transformer模型在计算机视觉中使用多Head自注意力机制,而不需要图像特定的偏差。该模型将图像分割成一系列位置嵌入块,由Transformer编码器处理。这样做是为了理解图像所具有的局部和全局特征。最后,ViT在训练大数据集时,在减少大量训练时间的同时也具有更高的准确率。

原文链接:https://viso.ai/deep-learning/vision-transformer-vit/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点人工一点智能 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 图像识别中的ViT
    • 1.1 什么是ViT?
      • 1.2 Transformers是一种深度学习方法吗?
        • 1.3 CNN与ViT的不同点
          • 1.4 ViT中的注意力图(Attention Maps)是什么?
          • 02 ViT架构
          • 03 ViT是怎么工作的?
          • 04 Vision Transformers的应用
          • 05 总结
          相关产品与服务
          图像识别
          腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档