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

导读
本文提出一种解耦蒸馏方案对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
上图给出了sam架构示意图,它包含一个重量级vit编码器与一个提示词引导mask解码器。解码器以图像作为输入,输出将被送入mask解码器的隐特征(embedding);mask解码器将基于提示词(如point、bbox)生成用于目标分割的mask。此外,sam可以对同一个提示词生成多个mask以缓解模棱两可问题。更多关于sam及衍生技术可参考文末推荐阅读材料。
延续sam架构体系:采用轻量级vit解码器生成隐特征,然后采用提示词引导解码器生成期望的mask。本文目标:构建一个移动端友好的sam方案mobilesam,即比原生sam更快且具有令人满意的性能。考虑到sam不同模块之间的参数量问题,本文主要聚焦于采用更轻量型的encoder替换sam的重量级encoder。
实现方案
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进行协同微调。
decoupled distillation 根据经验,我们发现这种半耦合蒸馏方案仍然极具挑战性,这是因为提示词的选择具有随机性,使得decoder可变,进而导致优化变难。有鉴于此,作者提出直接对原生sam的编码器进行蒸馏且无需与decoder组合,该方案称之为解耦合蒸馏。该方案的一个优势在于:仅需使用mse损失即可,而无需用于mask预测的focal与dice组合损失。
necessity of mask decoder finetuning 不同于半耦合蒸馏,经解耦合蒸馏训练得到的轻量级encoder可能与冻结的decoder存在不对齐问题。根据经验,我们发现:该现象并不存在。这是因为学生encoder生成的隐特征非常接近于原始老师encoder生成的隐特征,因此并不需要与decoder进行组合微调。当然,进一步的组合微调可能有助于进一步提升性能。
preliminary evaluation 上表对比了耦合蒸馏与解耦合蒸馏的初步对比。可以看到:
从指标方面,解耦合蒸馏方案指标稍高,0.75miou vs 0.72miou;
从训练gpu方面,解耦合蒸馏方案仅需两个gpu,远小于耦合蒸馏方案的128卡,大幅降低了对gpu的依赖;
从迭代次数方面,解耦合蒸馏方案仅需55k次迭代,远小于耦合蒸馏方案的180k,大幅降低了训练消耗;
从训练数据方面,解耦合蒸馏方案仅需11k数据量,远小于耦合蒸馏方案的11m,大幅降低了数据依赖。
尽管如此,但vit-b对于移动端部署仍然非常困难。因此,后续实验主要基于tinyvit进行。
本文实验
在具体实现方面,作者基于vit-tiny进行本文所提方案的有效性验证,所得mobilesam与原生sam的参数+速度的对比可参考上表。在训练方面,仅需sa-1b的1%数据量+单卡(rtx3090),合计训练8个epoch,仅需不到一天即可完成训练。
上述两个图给出了point与bbox提示词下mobilesam与原生sam的结果对比,可以看到:mobilesam可以取得令人满意的mask预测结果。
消融实验
上表从训练超参bs、epoch、iter等维度进行了对比分析,可以看到:
在同等迭代次数下,提升bs可以进一步提升模型性能;
在同等bs下,提升iter可以进一步提升模型性能。
上报对比了fastsam与mobilesam,可以看到:
从参数量方面,mobilesam只有不到10m的参数量,远小于fastsam的68m;
从处理速度方面,mobilesam仅需10ms,比fastsam的40ms快4倍.
上图从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则解决了所有物体面向下游任务的候选框生成问题。

Intel供应紧张,AMD保证持续供货或涨价
雪莱特的股价做到了连续三个交易日收盘涨停
G-MAFCO-005气体流量传感器的精度影响
目前的主流一些PCB软件介绍
为什么荧光发射波长大于激发波长
构建一个移动端友好的SAM方案MobileSAM
意法推出开/关/唤醒用单通道触摸传感器控制芯片
Windows 10 RedStone 5新版中出现关于手机相关的新API
贝尔顺(BEASUN)骨传导耳机骑车听歌安全无忧
赵亮:工业互联网——中小微企业的保护伞
数字化转型的实践路径
小米手环惊传漏洞!骇客可透过蓝牙直接控制手环
转子流量计和孔板流量计的区别
电源热设计基础:对热阻的认识
涡轮流量计的流量范围以及压力的选择
史比特携多款照明设备亮相工业博览会 机床灯系列受追捧
可定制RISC-V ISA的优势
全球光伏逆变器行业集中度不断提高,中国品牌有望占领绝对优势地位
2018深圳国际电子展:京瓷展台五大看点
ADI 公司的6通道视频滤波器帮助高清媒体播放器实现出色的图