水木番 发自 凹非寺
量子位 报道 | 公众号 QbitAI

在NLP中,Transformer以自注意力模型机制为法宝,在图像识别问题上的成功已经很广泛了。

尤其是,ViT在大规模图像网络上性能特别高,因此应用特别广。

但随着数据集规模的增长,会导致计算成本急剧增加,以及自注意力中的tokens数量逐渐增长!

最近,清华自动化系的助理教授黄高的研究团队和华为的研究人员另辟蹊径,提出了一种Dynamic Vision Transformer (DVT),可以自动为每个输入图像配置适当数量的tokens,从而减少冗余计算,显著通过效率。

该文以《Not All Images are Worth 16x16 Words: Dynamic Vision Transformers with Adaptive Sequence Length》为标题,已发表在arXiv上。

提出动态ViT

很明显,当前的ViT面临计算成本和tokens数量的难题。

为了在准确性和速度之间实现最佳平衡,tokens的数量一般是 14x14/16x16的。

研究团队观察到:

一般样本中会有很多的“简单”图像,它们用数量为 4x4 标记就可以准确预测,现在的计算成本( 14x14)相当于增加了8.5倍,而其实只有一小部分“困难”的图像需要更精细的表征。

通过动态调整tokens数量,计算效率在“简单”和 “困难”样本中的分配并不均匀,这里有很大的空间可以提高效率。

基于此,研究团队提出了一种新型的动态ViT(DVT )框架,目标是自动配置在每个图像上调节的tokens数量 ,从而实现高计算效率

这种DVT被设计成一个通用框架。

在测试时间时,这些模型以较少的tokens 开始依次被激活。

一旦产生了充分置信度的预测,推理过程就会立即终止。

模型的主体架构采用目前最先进的图像识别Transformer,如ViT、DeiT和T2T-ViT,可以提高效率。

这种方法同时也具有很强的灵活性

因为DVT的计算量可以通过简单的提前终止准则进行调整。

这一特性使得DVT适合可用计算资源动态变化,或通过最小功耗来实现给定性能的情况。

这两种情况在现实世界的应用程序中都是普遍存在的,像搜索引擎和移动应用程序中都经常能够看到。

根据上面的流程图,仔细的读者还会发现:

一旦从上游往下游计算无法成功的时候,就会采取向先前信息或者上游信息进行重用的方法实现进一步数据训练。

研究团队在此基础上,还进一步提出了特征重用机制关系重用机制,它们都能够通过最小化计算成本来显著提高测试精度,以减少冗余计算。

前者允许在先前提取的深度特征的基础上训练下游数据,而后者可以利用现有的上游的自注意力模型来学习更准确的注意力。

这种对“简单”“困难”动态分配的方法,其现实效果可以由下图的实例给出说明。

那么,接下来让我们来看看这两种机制具体是怎么做的?

特征重用机制

DVT中所有的Transformer都有一个共同的目标:提取特征信号来实现准确的识别。

因此,下游模型应该在之前获得的深度特征的基础上进行学习,而不是从零开始提取特征。

在上游模型中执行的计算对其自身和后续模型都有贡献,这样会使模型效率更高。

为了实现这个想法,研究团队提出了一个特征重用机制。

简单来说,就是利用上游Transformer最后一层输出的图像tokens,来学习逐层的上下文嵌入,并将其集成到每个下游Transformer的MLP块中。

关系重用机制

Transformer的一个突出优点是:

自注意力块能够整合整个图像中的信息,从而有效地模型化了数据中的长期依赖关系。

通常,模型需要在每一层学习一组注意力图来描述标记之间的关系。

除了上面提到的深层特征外,下游模型还可以获得之前模型中产生的自注意力图。

研究团队认为,这些学习到的关系也能够被重用,以促进下游Transformer学习,具体采用的是对数的加法运算。

效果如何?

多说无益,让我们看看实际效果如何?

在ImageNet上的 Top-1准确率v.s.计算量如下图。

可以看出,DVT比DeiT和T2T-VIT计算效率要显著更好:

当计算开销在0.5-2 GFLOPs内时,DVT的计算量比相同性能的T2T-ViT少了1.7-1.9倍。

此外,这种方法可以灵活地达到每条曲线上的所有点,只需调整一次DVT的置信阈值即可。

CIFAR的 Top-1 准确率 v.s. GFLOP 如下图。

在ImageNet上的 Top-1准确率v.s.吞吐量如下表。

在DVT中,“简单”和 “困难”的可视化样本如下图。

从上面ImageNet、CIFAR-10 和 CIFAR-100 上的大量实证结果表明:

DVT方法在理论计算效率和实际推理速度方面,都明显优于其他方法。

看到这样漂亮的结果,难道你还不心动吗?

有兴趣的小伙伴欢迎去看原文哦~

传送门

论文地址:

https://arxiv.org/abs/2105.15075

研究团队

黄高

目前年仅33岁,已是清华大学自动化系助理教授,博士生导师。

获得过2020年阿里巴巴达摩院青橙奖,研究领域包括机器学习、深度学习、计算机视觉、强化学习等。

不是所有图像都值16x16个词,清华与华为提出动态ViT相关推荐

  1. 并非所有图像都值16x16个词--- 清华华为提出一种自适应序列长度的动态ViT

    [导读]ViT在大规模图像识别方面取得了显著的成功.但随着数据集规模以及自注意力中的tokens数量的增长,会导致计算成本呈平方级急剧增加!最近,清华自动化系的助理教授黄高的研究团队和华为的研究人员, ...

  2. 基于ImagePy工具的岩块图像二值化分割研究

    看到自己一年前在知乎提的问题了,忍不住回答下. 下面这个是论文录用后修改稿,文末有编辑的评语. 基于ImagePy工具的岩块图像二值化分割研究 摘 要:在岩块图像分析识别前的预处理工作中,为了平滑岩块 ...

  3. OpenCV+python:图像二值化

    1,图像二值化概念及方法 一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是同样大小的矩阵. 在图像处理中,用RGB三个分量(R ...

  4. 【OpenCV 4开发详解】图像二值化

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  5. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

  6. 图像五值化与基于三值图像的车牌识别(1)

    庆祝2011年新年 张忠义 海口愚佬会教育科技有限公司 全文下载 www.yulaohui.com/color5_2/ 摘 要:      图像五值化是通过公式Y =(R+G)/2,将RGB空间映射到 ...

  7. 二值化图像的欧拉数_Android OpenCV(八):图像二值化

    图像二值化 简介 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程.在数字图像处理中,二值图像占有非常重要的 ...

  8. VTK修炼之道19:图像基本操作_图像像素值的访问与修改

    1.直接访问图像像素(索引法) #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL);#include <vtkS ...

  9. java 求集合平均数_图像二值化方法介绍(转载学习)

    ImageJ中图像二值化方法介绍 概述 二值图像分析在对象识别与模式匹配中有重要作用,同时也在机器人视觉中也是图像处理的关键步骤,选择不同图像二值化方法得到的结果也不尽相同.本文介绍超过十种以上的基于 ...

最新文章

  1. Go 分布式学习利器(11)-- Go语言通过单链表 实现队列
  2. 解决ubuntu上ifconfig没有eth0/ens33且无法上网的问题
  3. Design Pattern Strategy C
  4. Opencv 图片融合 addWeighted性能测试
  5. 架构师一般做到多少岁_软件测试可以做到多大岁数?
  6. unity3d collider自动调整大小_3dmax室内模型导入Unity3d快速烘焙光照【2020】
  7. HetSANN:基于注意力模型,自动挖掘异质网络语义信息 AAAI2020
  8. OSX/Linux 配置SSH免密登录并配置(Alias)别名登录
  9. vue2.0实现分页组件
  10. angular tslint 自动修正
  11. 星辰数据空号检测API文档
  12. mysql tddl_TDDL思考总结
  13. 微信小程序制作FC模拟器,从入坑到放弃
  14. 银行计算机岗位职称,银行职称有哪些,等级是如何划分的
  15. java游戏猿人时代_猿人时代BT版_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]
  16. H5直播之MSE(Media Source Extensions)
  17. 【转载】那个裸辞的程序员,后来怎么样了?
  18. Tkinter 插入图片背景
  19. ssh登陆之忽略known_hosts文件
  20. 如何保证同事的代码不会腐烂?一文带你了解 阿里巴巴 COLA 架构

热门文章

  1. Visual Studio 2017错误:无法启动程序,在当前状态下操作不合法
  2. 从JS数组中删除重复的值[duplicate]
  3. asp.net core中IHttpContextAccessor和HttpContextAccessor的妙用
  4. Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成
  5. Angry IP Scanner 获取设备的IP
  6. 生成具有三态背景图片的按钮
  7. 组件化开发,制作Cocoapods Git库
  8. eureka集群 ha_Eureka
  9. 主机信息收集工具DMitry
  10. Linux的load导入语句,LOAD DATA INFILE语句导入数据进入MySQL的一些注意事项