
Transformer 模型始终如一地获得最先进的计算机视觉任务,包括对象检测和视频分类。在标准卷积方法中,图像是逐像素处理的。为了获得视觉标记,该方法使用手工设计的分割算法。它需要处理大量密集采样的补丁。
Google AI 没有采用传统方式,而是开发了一种从视觉数据中提取关键标记的方法。Vision Transformers (ViT) 是研究人员开发的一种技术,用于快速准确地定位一些关键的视觉标记。它允许在视频的情况下或在照片的情况下在更长的时间范围内对此类标记之间的配对注意力进行建模。视觉变换器 (ViT) 将图像视为一系列补丁标记。令牌是由多个像素组成的图像的一小部分,通常称为“补丁”。
使用多头自注意力,ViT 模型根据每对标记之间的关系在每一层重新组合和处理补丁标记。ViT 模型可以通过这种方式生成整个图像的全局表示。
令牌是在输入级别通过将图像均匀拆分为多个部分来创建的。上一层的输出成为中间层下一层的标记。Vision Transformer 的总体质量由视觉标记的数量和质量决定。
许多 Vision Transformer 系统的根本问题是它们通常需要过多的令牌才能获得可接受的结果。这是因为 Transformer 计算与令牌数量成二次方缩放。对于有很多帧的电影,这意味着每一层都必须处理数万个令牌。对于更大的照片和更长的电影,变形金刚可能变得难以处理。
在每一层处理那么多令牌是否必不可少?
研究人员表明,自适应地创建减少数量的令牌是未来。TokenLearner 是一个可学习的模块,它从一个类似图像的张量(即输入)生成一组有限的标记。该模块可以部署在整个感兴趣模型的不同位置,显着降低需要在以下级别处理的令牌数量。TokenLearner 有几个优点,其中之一是它节省了大量内存。与依赖于统一拆分创建的令牌相比,这是一个更好的选择。它允许 Vision Transformers 运行得更快,性能更好。
令牌学习者
研究人员使用卷积层创建空间注意力图,突出显示感兴趣的区域以构建每个学习的标记。输入随后受到某种形式的空间注意力图的影响,它对每个位置的权重不同。在这个过程中,不必要的区域也会被移除,输出在空间上被合并以形成最终的学习标记。
此操作重复多次,从原始输入中产生几 (10) 个标记。也可以将其视为基于权重值的像素软选择,然后是全局平均池化。不同的可学习参数集控制着计算注意力映射的函数,它们是端到端的训练。这使得注意力函数能够被优化以捕获输入中的各种空间信息。
TokenLearner 允许模型处理与手头识别工作相关的较小的一组标记。这种处理方法有两个优点:
TokenLearner的位置:
最初,研究人员在典型 ViT 架构内的不同位置使用了 224×224 图片。TokenLearner 生成了 8 和 16 个令牌,远少于典型 ViT 使用的 196 或 576 个令牌。
TokenLearner 在网络的第一季度之后插入,并达到与基线几乎相同的准确度。同时,与之前的方法相比,它的计算时间减少了一半。此外,与不使用 TokenLearner 相比,在网络的第三季度之后使用 TokenLearner 可提供更好的性能,同时由于其自适应性而运行得更快。TokenLearner 模块之后的转换器的相对计算变得可以忽略不计。这是由于TokenLearner之前和之后的token存在显着差异(例如,196个之前和8个之后)。
与 ViT 的比较:
TokenLearner 被插入在每个 ViT 模型中间的不同点,例如 1/2 和 3/4。在准确性和计算方面,TokenLearner 模型都优于 ViT。
TokenLearner 也被纳入了更大的 ViT 模型中,并将结果与巨大的 ViT G/14 模型进行了比较。TokenLearner 用于 ViT L/10 和 L/8,具有 24 个注意层和 10×10(或 8×8)块的初始标记的 ViT 模型。TokenLearner 的性能与具有 48 层的巨大 G/14 模型类似,但参数更少,需要的处理也更少。
其他应用:
计算机视觉中最基本的困难之一是视频解释。视频通过包含允许运动和其他数据的时间组件为图像识别问题提供更多信息。
使用多个视频分类数据集来测试 TokenLearner。Video Vision Transformers (ViViT) 可被视为 ViT 的时空变体,现在包括 TokenLearner。每个时间步长,TokenLearner 学习 8(或 16)个令牌。与 ViViT 搭配使用时,TokenLearner 在众多著名的视频基准测试中实现了最先进的 (SOTA) 性能。
该项目背后的整个动机是表明,没有必要保留如此大量的令牌并在整个层集上对它们进行全面处理。研究人员还旨在传达,学习一个基于输入图像自适应地提取标记的模块,可以在节省大量计算的同时获得更好的性能。
论文:
https://arxiv.org/pdf/2106.11297.pdf
Github:
https://github.com/google-research/scenic/tree/main/scenic/projects/token_learner
参考:
https://ai.googleblog.com/2021/12/improving-vision-transformer-efficiency.html