前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)

MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)

作者头像
深度学习技术前沿公众号博主
发布2021-12-07 15:10:01
3.1K0
发布2021-12-07 15:10:01
举报
文章被收录于专栏:深度学习技术前沿

【导读】之前详细介绍了轻量级网络架构的开源项目,详情请看深度学习中的轻量级网络架构总结与代码实现,今天将正式开启Transormer轻量级网络架构新篇章,本文将主要介绍一种更小,更快的轻量级Transformer端侧网络架构 ---MobileViT,该网络架构在参数量和精度方面大幅度超过了当前最优的轻量级网络架构(比如Mobile-Former,MobileNetV3等等).

MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)
  • 论文地址:https://arxiv.org/abs/2110.02178
  • 代码地址:https://github.com/murufeng/awesome_lightweight_networks/blob/main/light_cnns/Transformer/mobile_vit.py
Motivation:
  1. 基于CNN的轻量级网络架构比较适合应用在一些端侧的视觉任务中,由于卷积神经网络利用天然的归纳偏置优势(权重参数共享与平移不变性)来学习视觉表征信息,因此它们只能在空间信息域上建立局部建模依赖关系。
  2. 基于自注意力机制的视觉Transformer对输入特征图具备捕捉全局感受野的能力,能在空间维度上建立全局依赖关系从而学习到全局视觉表征信息。但是由于自注意力机制的结构,该网络架构通常具备较大的参数量和计算量。
  3. 针对上述两点思考,是否存在一种机制可以有效地结合CNN和ViT两者的优点,从而可以设计一种高效的移动端的网络架构?

本文提出的MobileViT网络架构旨在有效的结合CNN的归纳偏置优势和ViT的全局感受野能力,它是一个轻量级,通用的,低时延的端侧网络架构。首先它利用了CNN中的空间归纳偏置优势以及对数据增强技巧的低敏感性的特性,其次,它结合了ViT中对输入特征图信息进行自适应加权和建立全局依赖关系等优点。具体做法如下:

如上图所示,MobileViT主要提出了MobileViT block(如上图1(b)所示), MobileViT块使用标准卷积和Transformer来有效的结合local和global的视觉表征信息。其中标准卷积主要涉及三个操作:展开(unfloading) 、局部处理(local processing) 和展开(folding) 。而Transformer块主要是为了获取得到全局建模依赖关系。这两种方式的巧妙结合可以有效地将局部和全局信息进行编码。以前通常的做法是将patch进行投影,然后用Transformer学习patch之间的全局信息,这就丢失了图像的归纳偏置信息,因此就耗费更多的参数来进行学习,而且最后得到的模型普遍又深又宽。而MobileViT block则既具有卷积的性质,又具备ViT全局建模能力。此外,MobileViT巧妙地结合了mobilenetv2的逆残差模块,再通过有效地设计摆放mbv2 block和MobileViT block的位置顺序,从而实现local与global的视觉表征信息交互。最后将MobileViT 应用在不同的端侧视觉任务(图像分类、物体检测、语义分割)上都取得了比当前轻量级 CNN或ViT模型更好的性能。值得注意的一点:不同于大多数基于ViT的模型,MobileViT模型仅仅使用基础的数据增强训练方式,就达到了更优的性能。

代码实现如下:
代码语言:javascript
复制
import torch
from light_cnns import mobilevit_s
model = mobilevit_s()
model.eval()
print(model)
input = torch.randn(1, 3, 224, 224)
y = model(input)
print(y.size())
部分实验结果如下:

后续我们将针对具体视觉任务集成更多的移动端网络架构。希望本项目既能让深度学习初学者快速入门,又能更好地服务科研学术和工业研发社区。

后续将持续更新模型轻量化处理的一系列方法,包括:剪枝,量化,知识蒸馏等等,欢迎大家Star和Follow

Github地址:https://github.com/murufeng/awesome_lightweight_networks

(欢迎各位轻量级网络科研学者将自己工作的核心代码整理到本项目中,推动科研社区的发展,我们会在readme中注明代码的作者~)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习技术前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MobileViT: 一种更小,更快,高精度的轻量级Transformer端侧网络架构(附代码实现)
    • Motivation:
    • 代码实现如下:
    • 部分实验结果如下:
    • Github地址:https://github.com/murufeng/awesome_lightweight_networks
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档