轻量化Backbone | 如何改进MobileViT-v1与MobileViT-v2?MobileViT-v3带你实验

简介: 轻量化Backbone | 如何改进MobileViT-v1与MobileViT-v2?MobileViT-v3带你实验

c68fbe0fb42dc655bf1db2cc76d163ee.png

MobileViTMobileViT-v1)结合了卷积神经网络(CNNs)和Vision TransformerViTs),用于移动端设备。虽然MobileViT-v1有助于实现先进的竞争结果,但Mobilevit-v1 Block内的融合块创造了缩放挑战,并具有比较复杂的学习任务。作者建议对融合块进行简单而有效的改进来创建Mobilevit-v3 Block,从而解决了缩放问题并简化了学习任务。


作者提出的用于创建MobileViTv3-XXSXXSXSS模型的MobileViTv3 BlockImigeNet-1kADE20KCOCOPascalVOC2012数据集上优于MobileViTv1。在ImageNet-1K上,MobileViTv3-XXSMobileViTv3-XS分别比MobileViTv1-XXSMobileViTv1-XS高出2%和1.9%。


最近发布的MobileViTv2体系结构删除了融合块,并使用了线性复杂度的Transformer得到了比MobileViTv1更好的性能。将本文提出的融合块添加到MobileViTv2中,以创建MobileViTv3-0.5,0.751.0模型。与MobileViTv2相比,这些新模型在ImageNet-1kADE20KCOCOPascalVOC2012数据集上提供了更好的精度。


ImageNet-1K数据集上,MobileViTv3-0.5MobileViTv3-0.75的性能分别比MobileViTv2-0.5MobileViTv2-0.75高出2.1%和1.0%。在分割任务中,MobileViTv3-1.0ADE20K数据集和PascalVOC2012数据集上比MobileViTv2-1.0mIOU分别提高了2.07%和1.1%。


开源地址:https://github.com/micronDLA/MobileViTv3

1、简介

卷积神经网络(CNNs)[如ResNetDenseNeteffentnet]被广泛用于分类、检测和分割等视觉任务,因为它们在已建立的基准数据集(如ImagenetCOCOPascalVOCADE20K和其他类似数据集)上具有很强的性能。当在移动设备等资源普遍受限的边缘设备上部署cnn时,适合这种环境的轻量cnn主要有 Mobilenet (MobileNetv1MobileNetv2MobileNetv3)、ShuffleNet (ShuffleNetv1ShuffleNetv2)和EfficientNet的轻量版本(EfficientNet-B0EfficientNet-B1)系列模型。与具有大参数和FLOPs的模型相比,这些轻量级模型缺乏准确性。


最近,Vision TransformerViTs)已经成为替代cnn执行这些视觉任务的强有力的选择。由于其架构设计,cnn与局部相邻像素/特征相互作用,生成嵌入局部信息的特征图。相比之下,ViTs中的自注意力机制与图像/特征映射的所有部分相互作用,产生嵌入全局信息的特征。这已被证明可以产生与cnn相似的结果,但需要大量的预训练数据和数据增强。此外,这种全局处理以大参数和FLOPs为代价,以匹配ViT及其不同版本(如DeiTSwinTMViTFocus -ViTPVTT2T-ViTxit)中的cnn的性能。表明vit存在优化器选择、学习率、权值衰减和收敛速度慢等超参数敏感性高的问题。为了解决这些问题,有学者提出在vit中引入卷积层。


最近的许多研究在ViT体系结构中引入了卷积层,形成混合网络,以提高性能,实现高效率,并使模型在参数和flop方面更有效,如MobileViTs (MobileViTv1, MobileViTv2), CMT, CvT, PVTv2, ResT, MobileFormer),CPVT, MiniViT, CoAtNet, CoaT。其中许多模型在ImageNet-1K上的性能(包括参数和FLOPs)如图1所示。

b21e92dcdcf5bdc979e41ec132bbe657.png

在这些模型中,只有MobileViTsMobileFormer是专门为移动设备等资源受限的硬件设计的。与其他混合网络相比,这两种模型具有更少的参数和flop,从而实现了具有竞争力的性能。尽管这些小型混合模型对移动设备上的视觉任务至关重要,但在这一领域的工作很少。


本文的工作重点是改进一个称为MobileViTs的轻量级模型家族(MobileViTv1MobileViTv2)。与参数预算为6M或更少的模型相比,MobileViTs在分类任务上通过简单的训练配置获得了具有竞争力的先进结果。在不同的视觉任务,如检测和分割中它也可以作为一个有效的backbone


虽然只关注6M参数或更少的模型,但作者提出了一个问题:是否有可能通过保持相似的参数和flop来改变模型架构以提高其性能?


为此,本文的工作着眼于Mobilevit Block架构的挑战,并提出了简单有效的方法来融合输入、局部(CNN)和全局(ViT)特征,从而显著提高Imagenet-1KADE20kPascalVOCCOCO数据集上的性能。

4839883549dc93f44ead98cba5ba7844.png

作者建议对MobileViTv1 Block进行4个主要更改(其中3个改进主要是基于MobileViTv2 Block):

  • 首先,将3×3卷积层替换为1×1卷积层;
  • 第二,将局部表示块和全局表示块的特征融合在一起,而不是将输入和全局表示块融合在一起;
  • 第三,在生成Mobilevit Block输出之前,在融合块中添加输入特征作为最后一步;
  • 最后,在局部表示块中,将普通的3×3卷积层替换为深度3×3卷积层。

这些变化导致了MobileViT-v1 Block的参数和FLOPs的减少,并允许缩放(增加模型的宽度)来创建一个新的MobileViTv3-S, XSXXS体系结构,它在分类(图1),分割和检测任务上优于MobileViTv1。例如,在ImageNet-1K数据集上,MobileViTv3-XXSMobileViTv3-XS在相似参数和FLOPs下的性能分别比MobileViTv1-XXSMobileViTv1-XS好2%和1.9%。在MobileViTv2中,融合模块不存在。


提出的融合模块被引入到MobileViTv2体系结构中,以创建MobileViTv3-1.00.750.5体系结构。在相似的参数和FLOPs下,MobileViTv3-0.5MobileViTv3-0.75ImageNet-1K数据集上的表现分别优于MobileViTv2-0.5MobileViTv2-0.75 2.1%和1.0%。

2、本文方法

2.1、 MobileViT-v3 Block

改进1:在融合块中将3×3卷积层替换为1×1卷积层

在融合模块中替换3×3卷积层存在两个主要动机。首先,融合独立于特征图中其他位置的局部和全局特征,以简化融合模块的学习任务。从概念上讲,3×3卷积层融合了输入特征、全局特征以及其他位置的输入和全局特征,这是一项复杂的任务。融合模块的目标可以简化,因为它可以融合输入和全局特征,而不依赖于特征图中的其他位置。因此,作者在融合中使用1×1卷积层,而不是3×3卷积层。


其次,将3×3卷积层替换为1×1卷积层是消除MobileViTv1架构扩展中的主要限制之一。通过改变网络宽度并保持深度恒定,将MobileViT-v1XXS扩展到S。更改MobileViTv1 Block的宽度(输入和输出通道数)会导致参数和FLOP的数量大幅增加。例如,如果输入和输出通道在MobileViTv1 Block中加倍(2×),则融合模块内3×3卷积层的输入通道数增加4×,输出通道数增加2×,因为输入到3×3卷积层的是输入和全局表示块特征的串联。这导致MobileViTv1 Block的参数和FLOP大幅增加。使用1×1卷积层可避免在缩放时参数和FLOP的大幅增加。

改进2:局部和全局特征融合

在融合层,来自局部和全局表示块的特征在提出的MobileViTv3 Block中串联,而不是输入和全局表示特征。这是因为与输入特征相比,局部表示特征与全局表示特征的关系更为密切。局部表示块的输出通道略高于输入中的通道。这导致融合模块的1×1卷积层的输入特征映射数量增加,但由于3×3卷积层变为1×1卷积层,参数和FLOP的总数明显少于MobileViTv1 Block

改进3:融合输入特征

输入特征被添加到融合模块中1×1卷积层的输出中。ResNetDenseNet等模型中的残差连接有助于优化架构中的深层。通过将输入特性添加到融合块的输出中,在新的MobileViTv3架构中引入了这种残差连接。表6所示的消融实验结果表明,这种残差连接有助于提高精度。

6a5e63163835523531a721213cb312d3.png

改进4:局部表示块中的深度卷积层

为了进一步减少参数,将局部表示块的3×3卷积层替换为深度3×3卷积层。如消融实验结果表明,此变化对Top-1ImageNet-1K精度增益没有太大影响,并提供了良好的参数和精度权衡。

2.2、扩展构建块

应用提出的改进,可以通过增加层的宽度(通道数)来扩展MobileViTv3架构。表1显示了MobileViTv3-SXSXXS体系结构及其每层的输出通道、比例因子、参数和FLOP

8f777bab4f9b7ebcabacea0c4712da91.png

3、实验

3.1、图像分类

49516d64c64914bbeffa7a7dbf602eae.png

3.2、目标检测

61fc09c5e4a493e2d44ed88aacb0b661.png787e4ed9a38d0871061cdfac4cde5bc6.png

3.3、语义分割

b583af4e9dad1d3c2856d98d99850a3d.png70e26d8abbb99b53290b1cd87765c87d.png

3.4、可视化

3ae33d203a8d622e0c7e7f9546bd0222.pngd1d54dab0354ce04f1b9da4996c058e0.png

4、参考

[1].MOBILEVITV3: MOBILE-FRIENDLY VISION TRANSFORMER WITH SIMPLE AND EFFECTIVE FUSION OF LOCAL, GLOBAL AND INPUT FEATURES.

5、推荐阅读

超轻目标检测 | 超越 NanoDet-Plus、YOLOv4-Tiny实时性、高精度都是你想要的!

必备技能 | YOLOv6中的用Channel-wise Distillation进行的量化感知训练来自哪里?

All are Worth Words | 当 ViT 遇到扩展模型会出现什么样子的火花?

相关文章
|
2月前
|
机器学习/深度学习 编解码 数据可视化
英特尔提出新型卷积 | 让ResNet/MobileNet/ConvNeXt等Backbone一起涨点
英特尔提出新型卷积 | 让ResNet/MobileNet/ConvNeXt等Backbone一起涨点
152 2
|
2月前
|
机器学习/深度学习 编解码 自然语言处理
超轻超快Backbone | MobileNet+ViT可以起飞吗?MOTA可以带你重新设计!
超轻超快Backbone | MobileNet+ViT可以起飞吗?MOTA可以带你重新设计!
50 0
|
13天前
|
边缘计算 计算机视觉 异构计算
【YOLOv8改进 - 特征融合NECK】Slim-neck:目标检测新范式,既轻量又涨点
YOLO目标检测专栏探讨了模型优化,提出GSConv和Slim-Neck设计,以实现轻量级模型的高效检测。GSConv减小计算复杂度,保持准确性,适合实时任务。Slim-Neck结合GSConv优化架构,提高计算成本效益。在Tesla T4上,改进后的检测器以100FPS处理SODA10M数据集,mAP0.5达70.9%。论文和代码可在提供的链接中获取。文章还介绍了YOLOv8中GSConv的实现细节。更多配置信息见相关链接。
|
2月前
|
机器学习/深度学习 编解码 数据可视化
全新ViT Backbone | 混合卷积与Attention设计的SMT更快、更小也更强
全新ViT Backbone | 混合卷积与Attention设计的SMT更快、更小也更强
82 1
|
2月前
|
机器学习/深度学习 编解码 测试技术
超强Trick | 如何设计一个比Transformer更强的CNN Backbone
超强Trick | 如何设计一个比Transformer更强的CNN Backbone
49 0
|
2月前
|
机器学习/深度学习 存储 算法
模型部署系列 | 卷积Backbone量化技巧集锦
模型部署系列 | 卷积Backbone量化技巧集锦
52 0
|
2月前
|
机器学习/深度学习
YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)
YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)
346 0
|
11月前
|
机器学习/深度学习 Web App开发 人工智能
ConvNeXt网络介绍,搭建以及训练
ConvNeXt网络介绍,搭建以及训练
|
机器学习/深度学习 计算机视觉 网络架构
轻量化Backbone | 如何改进MobileViT-v1与MobileViT-v2?MobileViT-v3带你实验(一)
轻量化Backbone | 如何改进MobileViT-v1与MobileViT-v2?MobileViT-v3带你实验(一)
632 0
|
数据可视化 计算机视觉
轻量化Backbone | 如何改进MobileViT-v1与MobileViT-v2?MobileViT-v3带你实验(二)
轻量化Backbone | 如何改进MobileViT-v1与MobileViT-v2?MobileViT-v3带你实验(二)
149 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    25
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    27
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    23
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    30
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    21
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    19
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    19
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19