MobileVIT:更轻量级,更通用的对移动端更友好的VIT

目录

一:前言

二:回顾VIT

三:MobileVit

全局表征

PatchSize大小的影响


一:前言

当前纯Transformer存在的问题:

1)Transformer参数多,算力要求高

2)Transformer缺少空间归纳偏置

3)Transformer迁移到其他任务比较繁琐

4)Transformer模型训练困难

二:回顾VIT

首先对输入的图片划分成一个一个Patch,然后将每个Patch的图片进行展平。展平之后再通过一个线性映射得到针对每一个patch所对应的Token(每个Token实质上对应的就是一个向量)将这些Token放在一起就得到了Token序列,然后再对这些Token加上位置编码。再将这些加上位置编码的Token传入L个Transformer模块,再通过全连接层得到最终的输出。

三:MobileVit

 

通过上面一系列的层结构,其中MV2就是在MobileNet V2中所提出的倒残差结构,如下图所示

而MobileVit的结构如上图所示,首先这个模块的输入是高为H,宽为W,通道数为C的特征图,通过一个卷积核大小为n*n的卷积来实现局部的建模,然后再通过一个1*1的卷积去调整其通道数。调完以后再对其进行全局建模(这个全局建模就是一个Fold,L个Transformer,再通过Fold折叠回特征图),全局建模以后再通过一个1*1的卷积层调整其通道数,将其调整为和输入通道数相同的通道数量。接着通过一个跳跃连接将输入的特征图和这个输出的特征图进行拼接。拼接完之后通过一个n*n的卷积层进行特征的融合。

全局表征

在MobileVit中,将输入的特征图划分为一个一个Patch,在上图中以2*2大小的Patchsize为例子,划分完之后是将每一个Patch中对应相同位置的Token(也就是颜色相同的Token)做多头注意力机制,通过这种方法可以减少计算量。

Unfold就是将特征图中颜色相同的Token拼接成一个序列,然后将每个序列传入到Transformer中进行全局建模,然后再通过Fold方式将这些特征折叠回原特征图的形式。

PatchSize大小的影响

patchsize越大越可以减少计算量,但是如果设置的过大了的话它就会忽略掉一些细节的语音信息,在分割任务中对于细节的要求较高,所以一般在分割任务中都会将PatchSize设置的小一点

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值