0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建一个移动端友好的SAM方案MobileSAM

CVer 来源:CVer 2023-06-30 10:59 次阅读

导读

本文提出一种"解耦蒸馏"方案对SAM的ViT-H解码器进行蒸馏,同时所得轻量级编码器可与SAM的解码器"无缝兼容"。在推理速度方面,MobileSAM处理一张图像仅需10ms,比FastSAM的处理速度快4倍。

SAM(Segment Anything Model)是一种提示词引导感兴趣目标分割的视觉基础模型。自提出之日起,SAM引爆了CV社区,也衍生出了大量相关的应用(如检测万物、抠取万物等等),但是受限于计算量问题,这些应用难以用在移动端。

本文旨在将SAM的"重量级"解码器替换为"轻量级"以使其可在移动端部署应用。为达成该目标,本文提出一种"解耦蒸馏"方案对SAM的ViT-H解码器进行蒸馏,同时所得轻量级编码器可与SAM的解码器"无缝兼容" 。此外,所提方案,只需一个GPU不到一天时间即可完成训练,比SAM小60倍且性能相当,所得模型称之为MobileSAM。在推理速度方面,MobileSAM处理一张图像仅需10ms(8ms@Encoder,2ms@Decoder),比FastSAM的处理速度快4倍,这就使得MobileSAM非常适合于移动应用。

SAM

b65f4d78-1696-11ee-962d-dac502259ad0.png

上图给出了SAM架构示意图,它包含一个"重量级"ViT编码器与一个提示词引导Mask解码器。解码器以图像作为输入,输出将被送入Mask解码器的隐特征(embedding);Mask解码器将基于提示词(如point、bbox)生成用于目标分割的Mask。此外,SAM可以对同一个提示词生成多个Mask以缓解"模棱两可"问题。更多关于SAM及衍生技术可参考文末推荐阅读材料。

b68e9164-1696-11ee-962d-dac502259ad0.png

延续SAM架构体系:采用轻量级ViT解码器生成隐特征,然后采用提示词引导解码器生成期望的Mask。本文目标:构建一个移动端友好的SAM方案MobileSAM,即比原生SAM更快且具有令人满意的性能。考虑到SAM不同模块之间的参数量问题,本文主要聚焦于采用更轻量型的Encoder替换SAM的重量级Encoder

实现方案

b699ec08-1696-11ee-962d-dac502259ad0.png

Coupled Distillation 一种最直接的方式是参考SAM方案重新训练一个具有更小Encoder的SAM,见Figure2左图。如SAM一文所提到:SAM-ViT-H的训练需要256个A100,且训练时间达68小时;哪怕Encoder为ViT-B也需要128个GPU。这样多的资源消耗无疑阻碍了研究人员进行复现或改进。此外,需要注意的是SAM所提供数据集的Mask是有预训练SAM所生成,本质上讲,重训练过程也是一种知识蒸馏过程,即讲ViT-H学习到的知识迁移到轻量级Encoder中。

Semi-coupled Distillation 当对原生SAM进行知识蒸馏时,主要困难在于: Encoder与Decoder的耦合优化,两者存在互依赖。有鉴于此,作者将整个知识蒸馏过程拆解为Encoder蒸馏+Decoder微调,该方案称之为半耦合蒸馏(Semi-coupled Distillation),见Figure2右图。也就是说,我们首先对Encoder进行知识蒸馏,然后再与Decoder进行协同微调。

b6a4df28-1696-11ee-962d-dac502259ad0.png

Decoupled Distillation 根据经验,我们发现这种半耦合蒸馏方案仍然极具挑战性,这是因为提示词的选择具有随机性,使得Decoder可变,进而导致优化变难。有鉴于此,作者提出直接对原生SAM的编码器进行蒸馏且无需与Decoder组合,该方案称之为解耦合蒸馏。该方案的一个优势在于:仅需使用MSE损失即可,而无需用于Mask预测的Focal与Dice组合损失。

Necessity of Mask Decoder Finetuning 不同于半耦合蒸馏,经解耦合蒸馏训练得到的轻量级Encoder可能与冻结的Decoder存在不对齐问题。根据经验,我们发现:该现象并不存在。这是因为学生Encoder生成的隐特征非常接近于原始老师Encoder生成的隐特征,因此并不需要与Decoder进行组合微调。当然,进一步的组合微调可能有助于进一步提升性能。

b6d1c1aa-1696-11ee-962d-dac502259ad0.png

Preliminary Evaluation 上表对比了耦合蒸馏与解耦合蒸馏的初步对比。可以看到:

从指标方面,解耦合蒸馏方案指标稍高,0.75mIoU vs 0.72mIoU;

从训练GPU方面,解耦合蒸馏方案仅需两个GPU,远小于耦合蒸馏方案的128卡,大幅降低了对GPU的依赖;

从迭代次数方面,解耦合蒸馏方案仅需55k次迭代,远小于耦合蒸馏方案的180K,大幅降低了训练消耗;

从训练数据方面,解耦合蒸馏方案仅需11K数据量,远小于耦合蒸馏方案的11M,大幅降低了数据依赖。

尽管如此,但ViT-B对于移动端部署仍然非常困难。因此,后续实验主要基于TinyViT进行。

本文实验

b6ddecd2-1696-11ee-962d-dac502259ad0.png

在具体实现方面,作者基于ViT-Tiny进行本文所提方案的有效性验证,所得MobileSAM与原生SAM的参数+速度的对比可参考上表。在训练方面,仅需SA-1B的1%数据量+单卡(RTX3090),合计训练8个epoch,仅需不到一天即可完成训练。

b6e865a4-1696-11ee-962d-dac502259ad0.pngb71b3f92-1696-11ee-962d-dac502259ad0.png

上述两个图给出了point与bbox提示词下MobileSAM与原生SAM的结果对比,可以看到:MobileSAM可以取得令人满意的Mask预测结果

消融实验

b736499a-1696-11ee-962d-dac502259ad0.png

上表从训练超参bs、epoch、iter等维度进行了对比分析,可以看到:

在同等迭代次数下,提升bs可以进一步提升模型性能;

在同等bs下,提升iter可以进一步提升模型性能。

b73edc68-1696-11ee-962d-dac502259ad0.png

上报对比了FastSAM与MobileSAM,可以看到:

从参数量方面,MobileSAM只有不到10M的参数量,远小于FastSAM的68M;

从处理速度方面,MobileSAM仅需10ms,比FastSAM的40ms快4倍.

b751bcf2-1696-11ee-962d-dac502259ad0.png

上图从Segment everything角度对比了SAM、FastSAM以及MobileSAM三个模型,可以看到:

MobileSAM与原生SAM结果对齐惊人的好,而FastSAM会生成一些无法满意的结果;

FastSAM通常生成非平滑的边缘,而SAM与MobileSAM并没有该问题。

最后,补充一下Segment Anything与Segment Everything之间的区别。

如SAM一文所提到,SAM通过提示词进行物体分割,也就是说,提示词的作用是指定想分割哪些物体。理论上讲,当给定合适的提示词后,任何目标都可以被分割,故称之为Segment Anything。

相反,Segment Everything本质上是物体候选框生成过程,不需要提示词。故它往往被用来验证下游任务上的zero-shot迁移能力。

总而言之,Segment Anything解决了任意物体的提示分割基础任务;Segment Everything则解决了所有物体面向下游任务的候选框生成问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3365

    浏览量

    131576
  • 模型
    +关注

    关注

    1

    文章

    2707

    浏览量

    47707
  • SAM
    SAM
    +关注

    关注

    0

    文章

    107

    浏览量

    33362

原文标题:Faster Segment Anything

文章出处:【微信号:CVer,微信公众号:CVer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【爱芯派 Pro 开发板试用体验】+ 图像分割和填充的Demo测试

    /ChaoningZhang/MobileSAM)是轻量化的框架,它的目标是通过用轻量化图像编码器取代复杂的图像编码器,使SAM移动
    发表于 12-26 11:22

    如何构建具有同步复位的CMOS四进制计数器?

    如何构建具有同步复位的CMOS四进制计数器?输入 复位控制信号RESET 时钟信号clk输出
    发表于 12-10 17:56

    基于AT91SAM9G35 SAM9G35 MCU ARM9系列的评估套件AT91SAM9G35-EK

    AT91SAM9G35-EK,基于AT91SAM9G35 ARM9 MCU的评估板。 AT91SAM9G35-EK是款评估套件,可用于评估和代码开发在
    发表于 04-01 10:32

    AT91SAM9X35-EK评估套件工业应用优化解决方案

    AT91SAM9X35-EK,基于AT91SAM9X35 ARM9 MCU的评估板。 AT91SAM9X35-EK是款评估套件,可用于评估和代码开发在
    发表于 04-01 06:51

    基于AT91SAM9G25 SAM9G25 MCU ARM9系列的评估板AT91SAM9G25-EK

    AT91SAM9G25-EK,基于AT91SAM9G25 ARM9 MCU的评估板。 AT91SAM9G25-EK是款评估套件,可用于评估和代码开发在
    发表于 04-02 09:59

    移动适配方案

    移动适配方案
    发表于 05-17 17:08

    种在金上生成硫醇封SAM的新方法

    种在金上生成硫醇封SAM的新方法 - 应用简报
    发表于 10-30 11:05

    基于SAM3S4C器件被动红外参考设计

    SAM3S运动探测器相机的被动红外参考设计(PIRRD)。该电路为硬件和软件工程师提供了详细的指导和说明,构建了建筑或家庭报警和监控系统中的低成本,功能强大的无源红外移动探测器摄像头。参考设计基于
    发表于 05-19 09:14

    SMART SAM4C微控制器有哪些应用?

    爱特梅尔(Atmel)公司的SMART SAM4C微控制器是系统级芯片解决方案,用于智能电源应用,它是基于两高性能的32位ARM Cortex-M4 RISC处理器构建。这些器件运行
    发表于 11-23 12:19

    分享不错的移动回传测试解决方案

    分享不错的移动回传测试解决方案
    发表于 05-26 06:16

    法国DREAM方案SAM5504B/SAM5704B音源芯片

    `法国dream芯片系列供应,提供整套开发工具(下载器评估板开发板)SAM5704B /SAM5704BSAM2634B /SAM5504 法国DREAMDSP音频芯片 应用范围:电
    发表于 06-22 15:40

    使用Arduino构建数字罗盘

    描述几个人用机器人技术开发项目,其中大问题是确定他们的导航方向。换句话说,机器人在环境中移动,但系统不知道它的确切方向,这意味着它的导航过程。作为种解决
    发表于 08-25 06:11

    关于Atmel SAM4L方案设计的介绍讲解

    Atmel - SAM4L方案设计
    的头像 发表于 07-10 01:15 2162次阅读

    关于Atmel SAM9x5系列解决方案的介绍

    Atmel SAM9x5 系列解决方案
    的头像 发表于 07-10 01:11 2495次阅读

    关于SAM4L方案设计的介绍

    Atmel - SAM4L方案设计简介
    的头像 发表于 07-09 00:48 2036次阅读