位置: IT常识 - 正文

Tesla AI day中感知部分的详细解析(一)——Transformer在图像领域的应用(特斯拉 ai day)

编辑:rootadmin
Tesla AI day中感知部分的详细解析(一)——Transformer在图像领域的应用 目录前言TransformerInput Embedding(Masked)Multi-Head AttentionSequence maskPositional embbedingsSwin TransformerInputSwin Transformer Block计算量相对位置偏移SW-MSADeformable DETR总结前言

推荐整理分享Tesla AI day中感知部分的详细解析(一)——Transformer在图像领域的应用(特斯拉 ai day),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:特斯拉智能识别,特斯拉感应人的原理,特斯拉汽车主要的感知方式是( ),特斯拉感应技术,特斯拉 ai day,特斯拉汽车主要的感知方式是( ),特斯拉感应技术,特斯拉周边车辆感应,内容如对您有帮助,希望把文章链接给更多的朋友!

最近针对特斯拉AI day2022内容进行了初步的了解,三个小时的发布会涵盖了方方面面的内容,其中基于纯视觉和深度学习的BEV感知升级版Occupancy Network形成的3D感知系统着实让人惊艳,而想要了解Occupancy Network,必须先了解其前身BEV感知,而其中一大关键点是参考了Transformer的网络结构对不同时空的数据输入进行处理,本系列文章主要针对相关技术从源头开始解析,由于个人技术能力有限,不可能面面俱到,仅当作抛砖引玉了。 由于之前很长一段时间主要在做SLAM相关工作,自YOLOv4后对于深度学习这块的内容没及时跟踪了,外加Transfomer在相当长时间主要应用在NLP领域,因此这段时间从原始Transformer出发,到对于视觉领域影响较大的Swin Transformer及相关论文和资料进行了阅读和学习,这里先简要记录相关要点,并予以解析和对比。

Transformer

论文:Attention Is All You Need 代码:jadore801120/attention-is-all-you-need-pytorch 参考文章: Transformer 模型的 PyTorch 实现 一文教你彻底理解Transformer中Positional Encoding The Illustrated Transformer 关于Transformer的解析文章太多了,参考文章都讲的很好了,本文不会事无巨细的讲解所有细节,这里主要针对模型一些点做解析。 以上就是Transformer的核心架构,左边是Encoder部分,右边是Decoder部分,理论上可以随意扩展,原版采用6个Encoder和6个Decoder。从架构中可以看到,其实主要的组成包括Input Embedding、(Masked)Multi-Head Attention、Positional Encoding,其它部分例如类似Resnet的跨层直连都是其它网络中比较常用的方法,这里就不赘述了。

Input Embedding

在Encoder部分,直接把原始输入经过一个线性层转化到对应的输入维度;在Decoder层,可以清晰看到,第二层的Attention模块的输入分别来自于上一层以及Encoder的输出。

(Masked)Multi-Head Attention

整个Transformer的核心,自注意力机制的具体实现,根本上就是在评估各个输入间的关系,并针对性给出输出,结构参考下图:

输入原始的语句,将每个单词转换为一个固定维度的向量x(默认为512维),x经过三个线性层得到三个向量query,key,value,前两者用于计算权重不同输入的权重,然后针对每个单词加权求和得到输出z,参考下图: 更多的细节参考文章中讲得很详细,至于Multi-Head的解释,实际上就是将以上部分进行了多次,例如一个单词生成Embedding,基于这个Embedding生成多个q,k,v,分别进行以上过程,得到多层的z。这个过程内涵的原理就是通过多层的注意力机制,让不同层关注输入中不同的内容。

Sequence mask

在Decoder中针对这个模块额外做了一些工作,主要是考虑到在做解码时,我们能够利用的信息一般只有句子中已经出现出现的单词,例如一个10个单词的句子,在解析第5个单词时,我们能够利用的其实只有第0-4个单词,因为一般而言都是按顺序解析一个句子,这一块是利用sequence mask来实现的,这里具体讲一下: 先不考虑Multi-Head,一个有N个单词的句子,经过Attention第一阶段计算得到N个q,k,v,对于任一单词,会用自己的q与其它所有单词的k点乘得到N维的权重向量,针对N个单词就会得到N*N的权重矩阵,如下图:

不增加mask的情况下,直接对每一行计算softmax得到归一化的权重,然后乘以V矩阵得到最终输出Z;考虑sequence mask时,以第一个单词为例,根据上文提到的原则,第一个单词用到的信息只有自己,因此在第一行中,除第一列其它所有权重加上一个极小值,这样经过softmax之后其它权重几乎为0,对于第二个单词,则是除第一列和第二列其它所有权重加上一个极小值,因此,将权重矩阵加上一个充满极小值的对角阵即可完成上述工作: 使用加上mask的权重矩阵与V矩阵相乘得到最终结果。

Positional embbedings

关于位置编码可以参考一文教你彻底理解Transformer中Positional Encoding 在LSTM或者RNN中,输入单词按顺序一个个丢进网络中的,天然就带入了位置的概念;而在以上结构中,明显丢失了重要的位置信息,因此,在输入时,额外增加了positional embedding这个东西,也就是针对输入的位置编码,这个编码需要满足以下特性:

反应不同输入的绝对位置反应不同输入的相对位置能够适用于长度不同的输入句子Tesla AI day中感知部分的详细解析(一)——Transformer在图像领域的应用(特斯拉 ai day)

由于网络中处理还需要考虑输入分布和幅值问题,位置编码与输入编码相加后不能完全覆盖掉原始输入信息,因此文中采用了一种特殊的编码格式,其公式如下: 位置编码的维度与输入维度一致(默认为512维,512维中偶数部分由第一式计算得到,奇数由第二式计算得到),其中pos代表单词在句子里的位置,i表示维度。 直接看这个公式是比较晦涩的,参考文章用二进制来举例的方式非常贴切,这里借用一下: 可以看到,对于二进制表示来看,随着实际数值增大(0-15),高位上的数据变化频率慢,但代表的实际数值很大;低位上的数据变化频率快,但代表的实际数值很小;再看看上面的公式,i越小,三角函数波长越短,频率越高;i越大,三角函数波长越长,频率越低;整体和二进制表示非常类似,只是在进位上有很大区别。 至于这种编码方式是否是最优的,以及能不能完美满足以上几个要求,这个需要进一步讨论。

Swin Transformer

论文:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 代码:microsoft/Swin-Transformer 参考文章: Swin Transformer 论文详解及程序解读 近几年Transformer开始侵入到图像领域,在最初的应用中,存在许多问题,例如如何处理输入,如何处理输入的位置信息,如何处理不同尺寸的图像等等,Swin Transformer在借鉴了前人的经验基础上,加入基于Windows和Shifted-Windows的Self-attention概念,取得了不错的结果。 先上网络框架: 虽然最核心的模块都是一个叫Swin Transformer Block的东西,但整体的特征提取部分仍旧参考了传统CNN架构,随着深度加深,特征图分辨率下降,channel增多,如下图: 可以认为主要是由Swin Transformer Block取代了传统的CNN来作特征提取,下面针对具体的每个部分进行解析。

Input

将Transformer从NLP领域应用到CV领域比较大的一个区别在于输入的处理,目前主流的做法是对图像进行分块(patch),针对每一个块进行编码并加入位置编码,然后输进Attention模块。在Swin Transformer中,每个patch包括4*4的像素区域,每个像素3个通道,展开为一维就是48,因此输入转换为h/4*w/4*48的矩阵,再经过一个线性层增加一倍通道,对应上图中第一层;之后每次将输入喂入Swin Transformer Block前,会将输出进行一次patch merging,使其分辨率下降一倍,通道增多一倍。

Swin Transformer Block

整个网络架构的核心,其核心思想仍然遵循Tranformer中attention模块,实现细节略有不同。

计算量

首先,ViT中对所有的patch进行Self-attention计算,随着图像尺寸增大,计算量呈平方上升,假设图像包含h×wh\times wh×w个patch,输入通道数为C,具体计算如下: 1、计算每个patch的Q、K、V,直接使用线性层计算,输入输出维度相同,单个patch计算量为C2C^2C2,所有patch三个量计算量为3hwC23hwC^23hwC2。 2、计算所有patch相互之间的Q∗KTQ*K^TQ∗KT,Q、K维度与输入一致,单个计算量为C,所有计算量为(hw)2C(hw)^2C(hw)2C;得到hw×hwhw\times hwhw×hw的权重矩阵X(忽略softmax计算),使用X与所有V构成的hw×Chw\times Chw×C维矩阵相乘,计算量也为(hw)2C(hw)^2C(hw)2C,因此总计算量为2(hw)2C2(hw)^2C2(hw)2C 3、使用使用多头注意力机制,在融合时会增加hwC2hwC^2hwC2的计算量。 总计算量为: 4hwC2+2(hw)2C4hwC^2+2(hw)^2C4hwC2+2(hw)2C

而Swin Transformer中增加了Windows的概念,将图像分为多个Windows,每个Window包含M*M个patches,只在WIndow内部进行Self-attention计算,这样在图像尺寸增大时,计算量呈线性上升,具体计算如下: 1、Q、K、V以及多头融合计算与前面相同,为4hwC24hwC^24hwC2。 2、self-attention只在window内部计算,参考前文,单个window计算量为2M4C2M^4C2M4C,一张包含h×wh\times wh×w个patch的图像有包含hM×wM\frac h M\times \frac w MMh​×Mw​个windows,总计算量为:2M2hwC2M^2hwC2M2hwC。 总计算量为: 4hwC2+2M2hwC4hwC^2+2M^2hwC4hwC2+2M2hwC 可以明显看到计算量的区别。

相对位置偏移

Swin Transformer中的位置编码跟原始Transformer有比较大的差别,其并非在输入时直接加入位置编码,而是在计算Q∗KTQ*K^TQ∗KT后加上一个称为相对位置偏移B的量,而这个量是可以被学习的,如下公式: B具体解释起来比较复杂,参考文章有详细的图文解析,这里不细讲了,主要提几个重要的点: 1、所有的相对位置偏移量都存在一个2M−1×2M−1×num_of_heads2M-1\times 2M-1\times num\_of\_heads2M−1×2M−1×num_of_heads维度的表中,计算时根据索引取值,关于维度为什么不是M×MM\times MM×M,是因为相对位置存在重复,例如[0,0]与[1,1]的相对位置和[1,1]与[2,2]的相对位置是相同的,应该取同一个偏移量加入计算; 2、patch与patch之间根据其相对位置偏移计算的是相对位置编码索引,这个索引值反应了两个patch的相对位置。

SW-MSA

为了节省计算量,将Self-attention计算局限在了window内部,然而这样会造成感受野比较小且分块的问题,因此在Swin Transformer中增加了Shifted-MSA的概念,即将window的划分按固定步长进行平移,以使得在多层MSA时能够接收到更大范围的信息,如图所示: layer1正常计算,layer2起到将layer1中不同window链接的作用。实际的计算过程非常巧妙,在移位前对每个patch打上index,构造一个mask矩阵,移位后不同index的计算位置填充-100,通过bias的方式加到权重矩阵上,具体实现的解析参考文章图文并茂讲的非常详细了,这里不重复赘述了。

Deformable DETR

论文:Deformable DETR 代码:fundamentalvision/Deformable-DETR 关于DETR的细节这里不做详细解析,其主要工作针对Transformer在目标检测任务中的应用,与本系列主要内容相关性不太大;这里主要对Deformable DETR中的一个点Deformable Attention进行解析,它对于后续的应用起到了较为关键的作用,这个东西来自于Deformable CNN,熟悉Deformable CNN的可以很容易理解,这里先看下不同注意力机制的主要公式。 多头注意力机制: 公式对应前文讲过的Transformer多头注意力计算标准公式,M代表多头的个数,Ωk\Omega _kΩk​表示所有的输入,xkx_kxk​表示第k个输入,A即Q×KTQ\times K^TQ×KT并经过softmax得到的权重,中括号里面的部分就是对应前文的加权和的部分。

Deformable Attention: 与第一个公式对比可以发现,主要多了Δpmqk\Delta p_{mqk}Δpmqk​这个东西,其实它就是一个位置偏移,是一个与输入Q以及可学习参数有关的东西;此外K并不代表所有输入,是一个可以预先设定的参数。 数学上的解释论文讲的很详细,这里抽象来理解下,原版多头注意力考虑每个输入与其他所有输入的关系,其关系强弱由权重决定,这样计算量大收敛慢,好处是收敛后不会漏掉任何的关联关系;Deformable Attention只考虑某个输入与固定数量输入的关系,至于具体考虑哪些输入,由网络学习到的参数和输入的Q一起决定。 考虑多层feature map输入的Deformable Attention:

理解了Deformable Attention,那么这个公式也很好理解,此时的输入扩展到多层不同分辨率的feature map,与上式对比主要增加了针对多层和多分辨率的处理。

针对多层,我们先假设每层分辨率一样,那么在计算某个输入与其他固定数量个输入的关系时,不能再局限在这个输入所在的feature map,而是会扩展到多个feature map去寻找关联关系,公式中的L代表所有的feature map数量,不同的lll代表在不同的feature map上寻找输入并进行加权计算,例如权重计算A增加了层的维度,输入x也增加了层的维度;针对不同分辨率,这个就更简单了,将位置p进行归一化,结合每个feature map展开即可,例如原来只有一张图,分辨率100*100,针对一个位置(50,50)进行处理,现在有两张图,分辨率为100*100和50*50,针对一个位置(0.5,0.5)进行处理,实际取值时,用归一化的位置乘分辨率得到真正的索引再取值就好。总结

本文从原版Transformer出发,解析了其涉及的几个关键点,同时对比图像领域影响较大的Swin Transformer的改进点,以及针对后面会用到的一项关键技术Deformable Attention进行了相应的解析,为后面Transformer在自动驾驶感知中的应用打下基础,其实从Deformable Attention的分析中已经可以初步窥见应用Transformer处理多维度数据输入的端倪了,当然在实际的应用中还包含很多基于工程的设计和考虑,后面再慢慢分析。

本文链接地址:https://www.jiuchutong.com/zhishi/299869.html 转载请保留说明!

上一篇:【周末闲谈】畅想AR,AR领域迎来新风口(周末闲暇时光是什么意思)

下一篇:vue-cli创建vue项目详细步骤(vue-cli4创建项目)

  • 小米8拍照有没有专业模式(小米8拍照没有文档模式)

    小米8拍照有没有专业模式(小米8拍照没有文档模式)

  • 苹果手机左上角有个电话符号(苹果手机左上角月亮怎么关闭)

    苹果手机左上角有个电话符号(苹果手机左上角月亮怎么关闭)

  • 抖音票是什么(抖音票是什么意思)

    抖音票是什么(抖音票是什么意思)

  • 微信视频的时候美颜在哪里打开(微信视频的时候退出微信就看不到人了)

    微信视频的时候美颜在哪里打开(微信视频的时候退出微信就看不到人了)

  • telegram手机注册不了

    telegram手机注册不了

  • 照片文件名怎么修改(照片文件名怎么弄)

    照片文件名怎么修改(照片文件名怎么弄)

  • 安卓系统和苹果系统的区别(安卓系统和苹果系统笔记本电脑)

    安卓系统和苹果系统的区别(安卓系统和苹果系统笔记本电脑)

  • 使用360强力删除粉碎以后文件怎么恢复(使用360强力删除没反应)

    使用360强力删除粉碎以后文件怎么恢复(使用360强力删除没反应)

  • 手机如何存公众号的封面(手机如何存公众号视频)

    手机如何存公众号的封面(手机如何存公众号视频)

  • 记忆棒和内存卡的区别(记忆棒和内存卡有关系吗)

    记忆棒和内存卡的区别(记忆棒和内存卡有关系吗)

  • ch/a是什么版本(mggu3ch/a是什么版本)

    ch/a是什么版本(mggu3ch/a是什么版本)

  • 别人抖音请求关注的消息记录从哪看(抖音别人请求关注是什么意思)

    别人抖音请求关注的消息记录从哪看(抖音别人请求关注是什么意思)

  • 金立8003是什么型号(金立8001是什么型号)

    金立8003是什么型号(金立8001是什么型号)

  • 电力驱动控制系统各部分的主要功能(电力驱动控制系统包括)

    电力驱动控制系统各部分的主要功能(电力驱动控制系统包括)

  • 去白边液对手机有影响吗(去白边剂伤手机么)

    去白边液对手机有影响吗(去白边剂伤手机么)

  • 华为p30pro手机介绍(华为p30pro新功能使用)

    华为p30pro手机介绍(华为p30pro新功能使用)

  • 忘记笔记本电脑开机密码怎么办(忘记笔记本电脑pin码,打不开怎么办)

    忘记笔记本电脑开机密码怎么办(忘记笔记本电脑pin码,打不开怎么办)

  • mate20怎么关闭后台程序(华为mate20怎么关)

    mate20怎么关闭后台程序(华为mate20怎么关)

  • 2016089是哪款机子(型号2016051是什么手机)

    2016089是哪款机子(型号2016051是什么手机)

  • 淘宝人生的装扮怎么取消(淘宝人生装扮怎么同步到家园)

    淘宝人生的装扮怎么取消(淘宝人生装扮怎么同步到家园)

  • 华为p30pro是安卓系统吗(华为p60手机参数配置)

    华为p30pro是安卓系统吗(华为p60手机参数配置)

  • 移动wifi怎么更改密码(移动wifi怎么更改名称)

    移动wifi怎么更改密码(移动wifi怎么更改名称)

  • 拼多多砍价二维码在哪(拼多多砍价二维码在哪里)

    拼多多砍价二维码在哪(拼多多砍价二维码在哪里)

  • mac 无法开机(mac无法开机的原因)

    mac 无法开机(mac无法开机的原因)

  • C盘中的文件编辑后无法保存(c盘文件详解)

    C盘中的文件编辑后无法保存(c盘文件详解)

  • 苹果电脑Mac系统启动U盘制作与使用教程图文详解(苹果电脑mac系统怎么用)

    苹果电脑Mac系统启动U盘制作与使用教程图文详解(苹果电脑mac系统怎么用)

  • Windows 11今日正式推送:四大变化值得你拥有(windows 11 正式)

    Windows 11今日正式推送:四大变化值得你拥有(windows 11 正式)

  • 在海洋里畅游的座头鲸和海豚,美国夏威夷州 (© drewsulockcreations/Getty Images)(在海洋里游泳)

    在海洋里畅游的座头鲸和海豚,美国夏威夷州 (© drewsulockcreations/Getty Images)(在海洋里游泳)

  • 二手房买卖避税违法吗
  • 内账需要哪些单据
  • 购买产品再出售怎么入账
  • 进口消费税为什么一定要组价
  • 报税中反写是什么意思
  • 跨区预缴增值税怎么做账
  • 增值税减免备案改备查后续管理
  • 土地转让交哪些税种
  • 融资租赁承租方会计账务处理流程
  • 委托加工的应税消费品收回后直接出售
  • 个人所得税补缴不补会怎样
  • 上年的应收帐款在本年度如何录入?
  • 房屋租赁合同印花
  • 建筑企业发生的招标代理费一般计入
  • 马克龙成就
  • 小规模纳税人季度申报表怎么填
  • 应付职工薪酬包括公积金吗
  • 银行短期理财利息怎么算
  • 企业收到政府扶贫资金补助及运用补助金怎么做账
  • 收到以前年度退回的企业所得税
  • 出售提完折旧的固定资产怎么记账
  • win11开机后无法操作
  • 临时 文件夹
  • 计提税金会计分录怎么做
  • 融资租赁与经营租赁的区别主要是
  • 笔记本电池消耗大怎么办
  • php timestamp
  • 加拿大猞猁雪兔
  • 在vue中如果computed属性是一个异步操作怎么办?
  • thinkphp框架下404页面设置 仅三步
  • vue使用计算属性
  • 如何用python求解航天器追逃博弈
  • thinkphp百万级数据查询
  • php sleep函数
  • phpcms教程
  • 印花税计税基础含增值税
  • 如何理解符合立案标准的,行政机关应当及时立案
  • 开具培训类发票需要哪些条件?
  • 企业员工福利包括哪些内容
  • 织梦logo
  • 什么时候过路费减半收费
  • 关联企业借款费用
  • SQL查询中in和exists的区别分析
  • 报表中的存货是什么
  • 公司注销清算时个人股东如何计算个人所得税
  • 公司租赁房屋房产税
  • 其他应付款如何清零
  • 长期股权投资成本法会计处理
  • 外贸公司收取客户的费用
  • 避税唯一安全的方法
  • 调整以前年度所得
  • 借资本公积贷递延所得税负债是什么意思
  • 免抵退怎么理解
  • 水表怎么借水
  • 自然人股权转让如何缴纳个人所得税
  • 托收承付是什么科目
  • sql语句基础题及答案
  • windows 10的安装
  • Linux系统下mysqlcheck修复数据库命令(详解)
  • freebsd查看硬盘信息
  • mac系统锁屏
  • 如何把windowsxp换成windows7
  • 进程spoolsv.exe
  • 进程 内核栈
  • scheduler.exe - scheduler是什么进程 有何作用
  • win8.1最流畅
  • linux 如何
  • bash 数值比较
  • 如何使用maven
  • css布局的经典网站
  • css怎么控制图片位置
  • linux sleep 2
  • js获取时间精确到毫秒
  • 在javascript中逻辑运算符包括
  • python xml.dom.minidom模块生成xml
  • js数组添加元素的方法
  • jquery日期控件 datepicker
  • 在linux安装python
  • 江苏昆山电费查询电话
  • 陕西省地方税务局公告2016年第1号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设