热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

transformer与视觉

目录综述优秀网文基本transformer视觉transformer原理具体的transformer一般方法ViT:一张图等于16x16个字,计算机视觉

目录

  • 综述
  • 优秀网文
  • 基本transformer
  • 视觉transformer原理
  • 具体的transformer
    • 一般方法
      • ViT :一张图等于 16x16 个字,计算机视觉也用上 Transformer 了
      • DeiT:[Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN](https://mp.weixin.qq.com/s/FmlCX1okXxOiJeBPQ6wuOQ)
      • T2T ViT:Tokens-to-Token ViT: Training Vision Transformers from Scratch on Imagenet (图像patch之间有部分重叠)
      • DeepViT: Towards Deeper Vision Transformer(多个注意力头之间重新生成注意力,增加transformer深度)
    • transformer与CNN结合
      • Bottleneck Transformers for Visual Recognition:resnet的卷积用多头注意力模块替代
      • PiT: Rethinking Spatial Dimensions of Vision Transformers( 结合池化层的视觉Transformer网络).
      • Scalable Visual Transformers with Hierarchical Pooling
      • CvT: Introducing Convolutions to Vision Transformers
      • CeiT: Incorporating Convolution Designs into Visual Transformers
      • ConViT: Improving Vision Transformers with Soft Convolutional Inductive Biases
      • TransFuse:融合Transformers和CNN用于医学图像分割
      • CoTr:基于CNN和Transformer进行3D医学图像分割
    • 多尺度,高分辨率
      • PVT:Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions
      • DPT: Vision Transformers for Dense Prediction
      • CrossViT: Cross-Attention Multi-Scale Vision Transformer for Image Classification
      • Multi-Scale Vision Longformer: A New Vision Transformer for High-Resolution Image Encoding
      • Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
      • M2TR: multi-modal multi-scale transformers for deepfake detection (多模多尺度)
    • Transformer内部机制的探究
      • 充分挖掘patch内部信息:Transformer in Transformer:TNT
      • 探究位置编码的必要性:Do We Really Need Explicit Position Encodings for Vision Transformers?
      • LocalViT---Bringing Locality to Vision Transformers(引入局部性)
      • Transformer升级之路:博采众长的旋转式位置编码
    • 预训练
    • 统一语言与视觉
      • 来自Facebook AI的多任务多模态的统一Transformer:向更通用的智能迈出了一步
    • 应用
      • Lifting Transformer: 基于跨步卷积Transformer的高效三维人体姿态估计
      • SpecTr: Spectral Transformer for Hyperspectral Pathology Image Segmentation
      • 其它
  • 高效transformer
  • 设计
  • 源代码


综述

论文与代码的大合集:Awesome Visual-Transformer
Vision Transformer 超详细解读 (原理分析+代码解读) (目录)

华为联合北大、悉尼大学对 Visual Transformer 的最新综述
又一篇视觉Transformer综述来了! Transformers in Vision: A Survey

优秀网文
基本transformer

Vision Transformer , 通用 Vision Backbone 超详细解读 (原理分析+代码解读) (目录)(xys:有各种类型的视觉transformer,长系列的持续改进)

Transformer 超详细解读,一图胜千言
这么多年,终于有人讲清楚 Transformer 了!
硬核 | 9 种Transformer结构详细解读

视觉transformer原理

3W字长文带你轻松入门视觉transformer
搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了
搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(二)

Vision Transformer(ViT)PyTorch代码全解析(附图解)

具体的transformer

一般方法


ViT :一张图等于 16x16 个字,计算机视觉也用上 Transformer 了

源码1、(https://github.com/lucidrains/vit-pytorch)(有Vit及其很多改进版本的源码)
源码2、https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/vision_transformer.py (.py文件内有预训练模型的地址)
网文:
1、一张图等于 16x16 个字,计算机视觉也用上 Transformer 了

DeiT:Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN

论文地址:https://arxiv.org/pdf/2012.12877.pdf
GitHub 地址:https://github.com/facebookresearch/deit(有预训练模型)

Facebook 提出了一项新技术 Data-efficient image Transformers(DeiT),需要更少的数据和更少的计算资源就能生成高性能的图像分类模型。研究人员仅用一台 8-GPU 的服务器对 DeiT 模型进行 3 天训练,该方法就在 ImageNet 基准测试中达到了 84.2% 的 top-1 准确率,并且训练阶段未使用任何外部数据,该结果可以与顶尖的卷积神经网络(CNN)媲美。

DeiT 首个重要的组件是其训练策略。研究者在最初用于卷积神经网络的现有研究基础上进行了调整与改进,并提出了一种基于蒸馏 token 的新型蒸馏流程,它的作用与 class token 相同,不过其目的在于复制教师网络估计的标签。实验结果表明,这种特定 transformer 策略大幅度优于 vanilla 蒸馏方法。

T2T ViT:Tokens-to-Token ViT: Training Vision Transformers from Scratch on Imagenet (图像patch之间有部分重叠)

论文:Tokens-to-Token ViT- Training Vision Transformers from Scratch on ImageNet
源码(官方pytorch,带预训练模型)
网文:
1、Tokens-to-Token ViT: Training Vision Transformers from Scratch on Imagenet 学习笔记
2、 Tokens-to-Token ViT:真正意义上击败了CNN

依图科技出品
前面提到过ViT,但是ViT在数据量不够巨大的情况下是打不过ResNet的。于是ViT的升级版T2T-ViT横空出世了,速度更快性能更强。T2T-ViT相比于ViT,参数量和MACs(Multi-Adds)减少了200%,性能在ImageNet上又有2.5%的提升。T2T-ViT在和ResNet50模型大小差不多的情况下,在ImageNet上达到了80.7%的准确率。论文的贡献:

  • 证明了通过精心设计的Transformer-based的网络(T2T module and efficient backbone),是可以打败CNN-based的模型的,而且不需要在巨型的训练集(如JFT-300M)上预训练。
  • 提出了一种可以编码局部信息的结构T2T module,并证明了T2T的有效性(图像patch之间有部分重叠)。
  • 展示了在设计CNNs backbone时用到的architecture engineering经验同样适用于设计Transformer-based的模型,通过大量的实验证明深且窄(deep-narrow)的网络能够增加feature的丰富性和减少冗余。

DeepViT: Towards Deeper Vision Transformer(多个注意力头之间重新生成注意力,增加transformer深度)

论文:https://arxiv.org/abs/2103.11886
源码:https://github.com/lucidrains/vit-pytorch/blob/main/vit_pytorch/deepvit.py
网文:
1、DeepViT:迈向更深的视觉Transformer
随着Transformers变深,注意力图在某些层之后逐渐变得相似甚至几乎相同。换句话说,在深度ViT模型的顶层中,特征图趋于相同。这一事实表明,在更深层次的ViT中,自注意力机制无法学习有效的表示学习概念,并且阻碍了模型获得预期的性能提升。

基于以上观察,我们提出了一种简单而有效的方法,称为Re-attention,以可忽略的计算和存储成本重新生成注意图以增加其在不同层的多样性。
在这里插入图片描述

transformer与CNN结合


Bottleneck Transformers for Visual Recognition:resnet的卷积用多头注意力模块替代

论文:https://arxiv.org/abs/2101.11605
源码1,源码2—暂时没有预训练模型
网文:
1、CNN与Transformer的强强联合!谷歌开源BoTNet,ImageNet达84.7%准确率
2、CNN+Transformer!谷歌提出BoTNet:新主干网络!在ImageNet上达84.7%

BoTNet:一种简单却功能强大的backbone,该架构将自注意力纳入了多种计算机视觉任务,包括图像分类,目标检测和实例分割。该方法在实例分割和目标检测方面显著改善了基线,同时还减少了参数,从而使延迟最小化。

通过仅在ResNet中,用Multi-Head Self-Attention (MHSA)来替换3 × 3 convolution,并且不进行其他任何更改(如图1所示)。
在这里插入图片描述

PiT: Rethinking Spatial Dimensions of Vision Transformers( 结合池化层的视觉Transformer网络).

论文:http://arxiv.org/pdf/2103.16302v1
源码:https://github.com/naver-ai/pit(有预训练模型)
网文:
1、加入池化!PiT:重新思考视觉Transformer的空间尺寸

Scalable Visual Transformers with Hierarchical Pooling

a Hierarchical Vision Transformer which progressively pools visual tokens to reduce computational costs.
论文:https://arxiv.org/abs/2103.10619

CvT: Introducing Convolutions to Vision Transformers

introduces convolutions for ViT to get the best of both worlds.
论文:https://arxiv.org/abs/2103.15808
源码:https://github.com/rishikksh20/convolution-vision-transformers
网文:
CNN+Transformer = CvT | ImageNet Top-1 精度突破 87.7%

CeiT: Incorporating Convolution Designs into Visual Transformers

modifies the Transformer to introduce CNN-like modules that are better at modellng locality.
论文:https://arxiv.org/abs/2103.11816
源码:
网文:
1、商汤提出CeiT:将卷积设计整合到视觉Transformers中
本文提出一个新的卷积增强图像Transformer(CeiT),它结合了CNN在提取low-level特征,增强局部性以及Transformer在建立远程依赖项的优势

ConViT: Improving Vision Transformers with Soft Convolutional Inductive Biases

论文:https://arxiv.org/abs/2103.10697
[论文阅读]ConViT: Improving Vision Transformers with Soft Convolutional Inductive Biases
我们创造了GPSA(gated positional self-attention),将CNN的归纳偏置带到transformer中

我们的工作分为以下三步:

  • 引入了一个新的self-attention层叫做gated positional self-attention(GPSA),其可以像卷积层一样被初始化,每个attention head有一个gating参数来调整表达性,可以在focus on局部特征和恢复全局特征间调节
  • 基于DeiT进行了实验,将其的一部分SA(self-attention)层替换为了GPSA层,结果模型在样本利用率和表现上超过了DeiT
  • 定量研究了ViT中attention的local特性,使用消融实验等实验研究了ConViT work的深层原因

TransFuse:融合Transformers和CNN用于医学图像分割

论文:TransFuse: Fusing Transformers and CNNs for Medical Image Segmentation

使用TransFuse,可以以较浅的方式有效地捕获全局依赖性和low-level空间细节。
此外,提出了一种新颖的融合技术-BiFusion模块,用于融合每个分支的多级特征。

CoTr:基于CNN和Transformer进行3D医学图像分割

论文:CoTr: Efficiently Bridging CNN and Transformer for 3D Medical Image Segmentation

卷积运算不可避免地在建模远程依赖项方面存在局限性,这是由于它们的局部性和权重归纳性偏差。尽管Transformer就是为解决这个问题而诞生的,但是在处理高分辨率3D特征图时,它遭受了极大的计算和空间复杂性的困扰。
在本文中,我们提出了一个新颖的框架,该框架可以有效地桥接卷积神经网络和Transformer,以进行精确的3D医学图像分割。在此框架下,构建CNN来提取特征表示,并构建有效的可变形Transformer(DeTrans)来建模对提取的特征图的远程依赖性。与原Transformer(均等地对待所有图像位置)不同,我们的DeTrans通过引入可变形的自注意力机制,仅关注少数关键位置。
因此,大大降低了DeTrans的计算和空间复杂度,从而可以处理通常对于图像分割至关重要的多尺度和高分辨率特征图。

多尺度,高分辨率


PVT:Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions

论文:https://arxiv.org/abs/2102.12122v1
源码:https://github.com/whai362/PVT(带预训练模型)
网文:
1、大白话Pyramid Vision Transformer
2、阅读笔记-PVT-Pyramid Vision Transformer_A versatile backbone for dense prediction without convolutions

文章内容用一句话概括就是给ViT方法装上金字塔结构处理密集预测问题。主要创新点包括两点:1. progressive shrinking strategy 能够实现金字塔结构;2. spatial reduction attention减少self-attention的计算量。

本文方法相对于传统CNN的优势:传统CNN通过层数增加来增加感受野,但相对来说还是局部信息,而transformer机制刻画的是全局的关联关系。
相对于ViT这类方法的优势:ViT一般而言通过将图像划分成不同的patch之后,每个patch提取特征,在后面的若干层transformer layer中还是针对于相同patch区域的特征,两方面劣势1)划分的patch较粗糙难以应用到dense prediction任务中;2)没有金字塔结构对不同尺寸目标同等对待。而本文的方式通过金字塔结构在开始层patch划分相对精细的多,其次通过金字塔的构造很容易作为backbone结构嵌入到已有的结构,比如替换resnet backbone等。
在这里插入图片描述

DPT: Vision Transformers for Dense Prediction

论文:https://arxiv.org/abs/2103.13413
源码: https://github.com/intel-isl/DPT(有预训练模型)
网文:
1、英特尔提出DPT:基于视觉Transformer的密集预测

我们将视觉Transformer各个阶段的token组装成各种分辨率的图像表示形式,并使用卷积解码器将它们逐步组合为全分辨率预测。

CrossViT: Cross-Attention Multi-Scale Vision Transformer for Image Classification

论文:https://arxiv.org/abs/2103.14899
源码:https://github.com/rishikksh20/CrossViT-pytorch(无预训练模型)
网文:

Multi-Scale Vision Longformer: A New Vision Transformer for High-Resolution Image Encoding

用于高分辨率图像编码,代码将开源
论文:https://arxiv.org/abs/2103.15358
源码:
网文:

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

论文:https://arxiv.org/pdf/2103.14030v1.pdf
源码:https://github.com/microsoft/Swin-Transformer(预训练模型)
网文:
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文阅读
Swin Transformer: 用CNN的方式打败CNN(描述了shift windows是怎么回事)
CV+Transformer之Swin Transformer(对照代码讲解)

作者在Transformer基础上做了改进,提出了Swin Transformer,目的是解决上面提到的两个问题:

  • Swin Transformer可以产生层级feature map,能够更好的建模不同尺寸的物体
  • Swin Transformer在self-attention阶段具有线性复杂度

M2TR: multi-modal multi-scale transformers for deepfake detection (多模多尺度)

论文:https://arxiv.org/pdf/2104.09770.pdf

网文:
M2TR: 复旦提出首个多模态多尺度Transformer

我们首先利用EfficientNet作为backbone提取了网络的浅层特征,然后利用Multi-scale Transformer进行多尺度特征提取和Cross Modality Fusion进行双模态融合。
区别于ViT的地方有三点:
1.不是在图像取patch而是在feature map上
2.不同head里取的patch size不同
3.patch被flatten成一维经过了self-attention之后会被重新reassemble成二维得到3D feature map

Cross Modality Fusion
首先我们对图像做DCT变换,得到了频率分布图,DCT变换具有良好的性质:高频集中在左上角而低频在右下角,因此我们手动对其进行划分,得到了高、中、低三个频段的频率分量,但是频率图不具有RGB图像的视觉特征,也没有办法利用CNN进行特征提取,为此我们对三个分量进行逆DCT变换,重新得到了RGB域的表示,但是这个表示是frequency-aware的,然后利用卷积层进行特征提取。
双模态融合(本文指的是:RGB与频域的融合)是一个长久的问题,如何良好的嵌入到transformer更是关键,一种最简单的做法、也是现在很多利用频率信息的做法就是对RGB和Frequency采用一种two-stream的双流结结构,平行操作然后在中间或者输出的地方进行融合,这种做法我不是非常赞同,因为并行结构的一个重要前提是两个模态的地位或者信息量是均衡的,但是对于Deepfake来说,频率的信息其实还是具有噪声的,比如人脸的一些部分如头发等在频率也可能集中在高频区域里,因此合适的做法是把频域作为一种辅助模态。
基于这种想法、同时受启发于transformer的query-key-value的设计,我们提出了一种QKV的方法来融合两个模态:把RGB模态作为query、frequency模态作为memory,这样的设计一方面能突出RGB的作用,另一方面能更好地发掘frequency分布里的异常区域。

在这里插入图片描述

Transformer内部机制的探究


充分挖掘patch内部信息:Transformer in Transformer:TNT

(来自北京华为诺亚方舟实验室)
论文:https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2103.00112

源码:https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/tnt.py(有预训练模型,下载路径见 tnt.py文件里边)
https://github.com/lucidrains/transformer-in-transformer
网文:
1、TNT | 致敬Network in Network,华为诺亚提出Transformer-in-Transformer

探究位置编码的必要性:Do We Really Need Explicit Position Encodings for Vision Transformers?

(美团)

LocalViT—Bringing Locality to Vision Transformers(引入局部性)

论文: LocalViT: Bringing Locality to Vision Transformers
源码:https://github.com/ofsoundof/LocalViT
网文: CNN再助力!LocalViT:将Locality带入视觉Transformer

本文引入depth-wise卷积,给视觉Transformer带来locality机制,经过增强的Transformer网络性能涨点明显,表现SOTA!性能优于TNT、PVT、DeiT等网络,代码即将开源!

Transformer升级之路:博采众长的旋转式位置编码

RoFormer:https://github.com/ZhuiyiTechnology/roformer
网文:
Transformer升级之路:博采众长的旋转式位置编码

预训练

Pre-Trained Image Processing Transformer(CVPR)
UP-DETR: Unsupervised Pre-training for Object Detection with Transformers (CVPR)

统一语言与视觉


来自Facebook AI的多任务多模态的统一Transformer:向更通用的智能迈出了一步

论文链接:https://arxiv.org/pdf/2102.10772.pdf
网文:
https://mp.weixin.qq.com/s/Dkdewm4PI72uh8JULdu1ug

应用


Lifting Transformer: 基于跨步卷积Transformer的高效三维人体姿态估计

论文:Lifting Transformer for 3D Human Pose Estimation in Video
地址:https://arxiv.org/pdf/2103.14304.pdf
网文:
Lifting Transformer: 基于跨步卷积Transformer的高效三维人体姿态估计

SpecTr: Spectral Transformer for Hyperspectral Pathology Image Segmentation

源码:https://github.com/hfut-xc-yun/SpecTr(无需预训练)
网文:
SpecTr:高光谱病理图像分割

其它


  • 图像版GPT3问世,一句话就能变成图!打破语言与视觉界线,AI将更加聪明
  • Transformer 再下一城,Facebook 等提出多目标跟踪算法 TrackFormer
  • 美团提出具有「位置编码」的Transformer,性能优于ViT和DeiT

1、Multi-Scale Vision Longformer: A New Vision Transformer for High-Resolution Image Encoding
用于高分辨率图像编码,代码将开源
微软
https://arxiv.org/abs/2103.15358

2、TFPose: Direct Human Pose Estimation with Transformers
用于人体姿态估计,代码开源:https://github.com/aim-uofa/AdelaiDet/
阿德莱德大学和阿里
https://arxiv.org/abs/2103.15320

3、TransCenter: Transformers with Dense Queries for Multiple-Object Tracking
用于多目标跟踪,代码将开源
Inria 和麻省理工学院
https://arxiv.org/abs/2103.15145

4、HiT: Hierarchical Transformer with Momentum Contrast for Video-Text Retrieval
用于视频文本检索
北大、FAIR、中科院、快手
https://arxiv.org/abs/2103.15049

6、Generic Attention-model Explainability for Interpreting Bi-Modal and Encoder-Decoder Transformers
已开源:https://github.com/hila-chefer/Transformer-MM-Explainability
以色列特拉维夫大学和 FAIR
https://arxiv.org/abs/2103.15679

7、On the Adversarial Robustness of Visual Transformers
论 Visual Transformers 的对抗鲁棒性
西交、UCLA、京东、IBM
https://arxiv.org/abs/2103.15670

8、Looking Beyond Two Frames: End-to-End Multi-Object Tracking Using Spatial and Temporal Transformers
端到端的多目标跟踪,代码将开源
蒙纳士大学、阿德莱德大学、澳大利亚机器人视觉中心
https://arxiv.org/abs/2103.14829

9、Face Transformer for Recognition
用于人脸识别
北邮
https://arxiv.org/abs/2103.14803

高效transformer

线性Attention的探索:Attention必须有个Softmax吗?
提升Transformer效率又有新招?基于矩阵分解的线性化Attention方案

设计

【深度学习】网络架构设计:CNN based和Transformer based
计算机视觉中的transformer

源代码

用Pytorch轻松实现28个视觉Transformer,开源库 timm 了解一下!(附代码解读,所谓28个是指ViT和DeiT的28个不同配置版本)
这个库中的每个模型,基本山都有预训练模型文件。
在线使用方法:timm.create_model(‘mobilenetv3’, pretrained=True)
离线下载方法:打开模型文件本身,如/timm/models/vgg.py,找到default_cfgs即可找到下载路径:
在这里插入图片描述

vision transformer 源代码
Pyramid Vision Transformer源码 (有预训练模型)


推荐阅读
author-avatar
hbwgz2009
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有