Vision Transformer 总结

这里写自定义目录标题

  • [Vision Transformer](#Vision Transformer)
    • Transformer
    • 结构
    • [相较于CNN 的优势在哪里?](#相较于CNN 的优势在哪里?)
  • [Transformer in Transformer](#Transformer in Transformer)
  • 代码实现的一些描述

Vision Transformer

Transformer

结构

ViT中最重要的部分是self-attention, 对照片做的patches, 以及position embedding。self-attention机制在之前的博客里面也有讲过,在这里主要是计算每一个patch 之间的相关性,多头的自注意力机制有些许不一样的。我个人的理解是单头的注意力机制只能计算某一个特征和另外一个特征的相关性,但是多头注意力机制可以同时处理多个特征的和另外多个特征的相关性。我感觉这里可以结合"线性分类器" 和 "CNN"的区别来理解。 线性分类器只能学习到输入数据的一个mode,比如 "一个人的看向左边",但是如果输入数据中还有:'一个人看向右边'的图片,线性分类器就无法准确的学习,但是CNN却因为很多的kernels,所以可以学习到一个物体的不同mode。 这里的self-attention 和multi-head self-attention 可以采用的同样的方式来理解。

至于patch, 我认为是将图片序列化的一个过程而已,因为Transformer本身是无法处理图片格式的数据的。所以将图片打散成小的patch更符合Transformer的输入条件。但是图像数据本身携带了位置信息的,通过这样的"序列化"过程会导致图像丢失之前的位置信息,所以position embedding 在ViT中才如此的重要。所谓position embedding 实际上是加在每一个patch上的一个小向量来表示当前patch的位置信息。

相较于CNN 的优势在哪里?

想要获得全局的信息CNN 通常需要通过堆叠深度来实现感受野的增长。因为对于CNN 来说 第N层的特征图上的一个像素点,是第N-1层的一片区域。随着层数的变多,网络的感受野也会逐渐变大,但是通常是需要较深的深度才能达到这个效果,较深深度不仅会出现计算力吃紧的问题,也是潜在出现过拟合的原因,而transformer 因为每一层都会整合patch之间的信息,他可以从第一层开始就看到全局信息,在一定程度上规避了CNN 需要非常深的深度才能获得较好全局信息的问题。

Transformer in Transformer

ViT中将图像分成patches不是最优的选择。因为patch中包含的不同比例和位置的信息不能较好的处理。所以TNT中,进一步将patch再拆分成更小的单位然后进行重组。论文中将patch称为 'visual sentance',把进一步拆分的更小单位称之为'visual words'。

文章只是使用了一个inner VIT 去进一步拆分patch而已,outer VIT 和经典VIT一致。

代码实现的一些描述

postional embedding 和 patch embedding都是使用的一层Conv2D来完成的。将位置和patch 都embed到相同的维度上。注意力机制的QKV 都是使用单独的一层MLP,多头注意力就是把输入特征维度拆分开即可。

相关推荐
回眸&啤酒鸭1 天前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅1 天前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein1 天前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
wukangjupingbb1 天前
智能网联汽车安全能力框架
人工智能
龙亘川1 天前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化
飞猫的边缘AI1 天前
边缘AI应用:家用AI摄像头怎么做数据训练?
人工智能·边缘计算·ai算法·边缘ai