经典文献阅读之--MobileSAM(比FastSAM更快的SAM框架)

news2025/1/22 8:00:02

0. 简介

自从MetaAI提出的能够“分割一切”的视觉基础大模型SAM提供了很好的分割效果,为探索视觉大模型提供了一个新的方向。虽然SAM的效果很好,但由于SAM的backbone使用了ViT,导致推理时显存的占用较多,推理速度偏慢,对硬件的要求较高,在项目应用上有很大的限制。FastSAM通过更换检测头,能够较好的完成分割的实时性,但是将SAM的"重量级"解码器替换为"轻量级"以使其可在移动端部署应用仍然还是不现实的,所以《Faster Segment Anything: Towards Lightweight SAM for Mobile Applications》提出一种"解耦蒸馏"方案对SAM的ViT-H解码器进行蒸馏,同时所得轻量级编码器可与SAM的解码器"无缝兼容" 。相关的代码也已经在Github上开源了
在这里插入图片描述

图1:Segment Anything模型的概览

1. 主要贡献

考虑到SAM(Space-Aware Multi-Head Attention)中默认的图像编码器是基于ViT-H(Vision Transformer-H)的,获得MobileSAM的一个直接方法就是按照Kirillov等人[2023]的官方流程,用一个更小的图像编码器如ViT-L(Vision Transformer-L)或更小的ViT-B(Vision Transformer-B)来重新训练一个新的SAM。

  1. 延续SAM架构体系:采用轻量级ViT解码器生成隐特征,然后采用提示词引导解码器生成期望的Mask。
  2. 本文提出一种"解耦蒸馏"方案对SAM的ViT-H解码器进行蒸馏,同时所得轻量级编码器可与SAM的解码器"无缝兼容" 。
  3. 我们的方法具有简单、有效,同时可以以低成本(在单个GPU上少于一天的时间)进行再现的优点。结果得到的MobileSAM将编码器参数减少了100倍,总参数减少了60倍。在推理速度方面,MobileSAM处理一张图像仅需10ms(8ms@Encoder,2ms@Decoder),比FastSAM的处理速度快4倍,这就使得MobileSAM非常适合于移动应用。

2. Mobile SAM背景和项目目标

2.1 SAM(Segment Anything Model,即“切割任何东西”的模型)背景

首先,我们总结一下SAM的结构和工作方式。SAM由基于ViT(Vision Transformer)的图像编码器和提示引导的掩模解码器组成。图像编码器将图像作为输入并生成嵌入,然后将其输入到掩模解码器中。掩模解码器根据提示(如一个点或框)生成一个掩模,用以从背景中切割出任何对象。此外,SAM允许为同一提示生成多个掩模,以解决歧义问题,这提供了宝贵的灵活性。考虑到这一点,我们保留了SAM的流程,首先采用基于ViT的编码器生成图像嵌入,然后采用提示引导的解码器生成所需的掩模。这个流程最适合“切割任何东西”,可用于“切割所有东西”这一下游任务

2.2 项目目标

该项目的目标是生成一个在轻量级方式下实现令人满意性能,并且比原始SAM更快的面向移动端的SAM(MobileSAM)原始SAM中的提示引导掩模解码器的参数少于4M,因此被认为是轻量级的。如他们的公开演示所示,只要有编码器处理的图像嵌入,SAM就可以在资源受限的设备上运行,因为掩模解码器是轻量级的。然而,原始SAM中的默认图像编码器基于ViT-H,参数超过600M,这非常重,使得整个SAM流程与移动设备不兼容。因此,获得面向移动端的SAM的关键在于用轻量级的图像编码器替换重型的图像编码器,这也自动保留了原始SAM的所有功能和特性。接下来,我们将详述我们提出的方法,以实现这个项目目标。

3. Mobile SAM所提出的方法

3.1 耦合提炼

实现我们项目目标的一个直接方法是按照Kirillov等人[2023]的官方流程,用一个更小的图像编码器重新训练一个新的SAM。如Kirillov等人[2023]所述,使用ViT-H图像编码器训练SAM需要在256个A100 GPUs上运行68小时。用ViT-L或ViT-B替换ViT-H会将所需的GPU减少到128个,但对于社区中的许多研究人员来说,复制或改进他们的结果仍然是一个不小的负担。按照他们的方法,我们可以采用一个更小的图像编码器,并使用他们提供的分割数据集(11-T)重新训练一个新的SAM。需要注意的是,数据集中提供的掩模由预训练的SAM(带有ViT图像编码器)给出。从本质上讲,这个再训练过程是知识提炼(Hinton等人,2015),它将知识从基于ViT-H的SAM传递到一个带有更小图像编码器的SAM(见图2左)。
在这里插入图片描述

图2:SAM的耦合知识提炼。左图表示完全耦合的提炼,而右图代表半耦合的提炼。

3.2 从半耦合到解耦提炼

当从原始的SAM执行KD(知识提炼)到带有更小图像编码器的SAM时,主要困难在于图像编码器和组合解码器的耦合优化。直观地说,图像编码器的优化依赖于图像解码器的质量,反之亦然。当SAM中的两个模块都处于不良状态时,训练它们都达到良好状态就更具挑战性。受到分而治之算法(Zhang等人,2022c)的启发,我们提出将KD任务分为两个子任务:图像编码器提炼和掩模解码器微调。具体来说,我们首先在图像编码器上执行KD,将知识从ViT-H转移到一个更小的编码器。由于原始SAM中的掩模解码器已经是轻量级的,我们计划保留其架构。这带来了一个好处,即可以直接使用现成的组合解码器进行微调,而不是从头开始训练。为了缓解耦合提炼的优化问题,一个直接的方法是使用复制并冻结的掩模解码器优化图像编码器(见图2右)。冻结操作可以帮助防止掩模解码器的质量被差的图像编码器恶化。我们称这种提炼为半耦合,因为图像编码器的优化仍然没有完全从掩模解码器解耦。实际上,我们发现这种优化仍然具有挑战性,因为提示的选择是随机的,这使得掩模解码器变得可变,从而增加了优化的难度。因此,我们提议直接从原始SAM中的ViT-H中提炼小图像编码器,而不依赖于组合解码器,这被称为解耦提炼(见图3)。在图像嵌入上执行提炼的另一个优点是我们可以采用简单的MSE(Mean Squared Error)损失,而不是像Kirillov等人[2023]那样,为制作掩模预测而使用焦点损失(Lin等人,2017)和dice损失(Milletari等人,2016)的组合。
在这里插入图片描述

图3:用于SAM的解耦知识提炼

3.3 关于微调蒙版解码器的必要性

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

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据学习:hive的DQL和DML操作

hive的DQL和DML操作 1. Hive的分桶表 1.1 分桶表原理 分桶是相对分区进行更细粒度的划分 Hive表或分区表可进一步的分桶 分桶将整个数据内容按照某列取hash值,对桶的个数取模的方式决定该条记录存放在哪个桶当中;具有相同hash值的数据进入到同一个文件…

4、监测数据采集物联网应用开发步骤(4)

监测数据采集物联网应用开发步骤(3) 日志或文本文件读写开发 创建全局变量配置代码com.zxy.common.Com_Para.py全局变量根据需要后续补充。 #! python3 # -*- coding: utf-8 -Created on 2023年08月28日 author: zxyong 13738196011#监测数据采集物联网应用--全局变量 impor…

文件名翻译不求人:一键批量翻译,你就是改名专家

文件名翻译不求人:一键批量翻译,你就是改名专家 在日常生活和工作中,我们常常需要处理各种文件,包括文档、图片、视频等。有时候,我们需要对这些文件进行重命名,以便更好地管理和查找。但是,当…

微服务之Nacos

1 版本说明 官网地址: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.1 2021.x 分支 适配 SpringBoot 2.4, Spring Cloud 2021.x 版本及以上的Spring Cloud Alibaba 版本如下表(最新版本用*标记&am…

Android实现监听APP启动、前台和后台

Android 实时监听APP进入前台或后台 前言 在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况。比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作;我…

pdf怎么转换成jpg图片?这几个方法值得一试

pdf怎么转换成jpg图片?PDF格式的文件在我们的日常生活和工作中十分常见,但有时候我们需要将PDF文件转换成图片格式,以便于在网页上进行展示或者存放到手机相册中。那么,PDF怎么转换成JPG图片呢?下面介绍几种方法。 第一…

Java【手撕滑动窗口】LeetCode 209. “长度最小子数组“, 图文详解思路分析 + 代码

文章目录 前言一、长度最小子数组1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链…

达梦数据配置兼容

修改数据库实例的dm.ini配置文件COMPATIBLE_MODE的值,0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata, 7:PG COMPATIBLE_MODE 4 #Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server,…

如何设置让软件开机自启动

电脑重置,一些软件能正常使用,但是系统开机自启动选项中并没有它,这就很郁闷 有些极简软件没有直接设置开机自启,需要手动设置,所以我们就需要手动去设置一下它。 1、如果你在任务管理器里能找到它,也可以…

怎么把m4a转换成mp3?音频格式转换方法分享

M4A格式音频文件通常比MP3格式音频文件具有更高的音质,因为它使用了先进的编码技术。但是,M4A文件在某些设备上可能无法播放。将M4A文件转换为MP3格式可以增加音频文件的兼容性,并使其可以在更广泛的设备上播放,如移动设备和汽车音…

解决 git clone 时出现Failed to connect to 127.0.0.1 port 1573问题

今天去拉一个仓库代码,往常都是一下就拉下来了,今天却报错,报错信息如下: 原因:这种情况是因为代理在git中配置的,但是本身环境就有SSL协议了,所以取消git的https或者http代理即可 方法如下&…

文件夹无法删除?简单3招,轻松解决问题!

“我电脑里有一个文件夹占用了很大的内存,我想将它删除来释放一些内存,但是根本没法删除,为什么会这样呢?文件夹无法删除应该怎么办呢?” 在日常电脑使用中,有时候会遇到文件夹无法删除的情况,这…

iTween安装

1. 找到Package Manager面板,Packages选择MyAssets-右上角搜索iTween-找到后点DownLoad-点Import 导入 2. 导入后Assets面板结构如下图。 3. 编译器中输入iTween有提示,安装成功。

DataFrame.plot函数详解(六)

DataFrame.plot函数详解(六) 使用subplot()做子图,定位每一个子图,设置数据和图形,理解fig和ax(axs)的意义和作用。 1. subplot() matplotlib.pyplot.subplots(nrows1, ncols1, *, sharexFalse, shareyFalse, squee…

Spring Boot框架以及它的优势

文章目录 介绍1. **简化配置**2. **快速启动**3. **自动配置**4. **集成第三方库和框架**5. **微服务支持**6. **内嵌式数据库支持**7. **健康监控和管理**8. **可插拔的开发工具**9. **丰富的社区和生态系统**10. **良好的测试支持:** 核心特性**1. 依赖注入&#…

解决Python中的循环引用和内存泄漏问题

在Python编程中,循环引用和内存泄漏是两个常见的问题。本文将详细介绍如何识别和解决这些问题,并提供详细的代码示例。 1、什么是循环引用? 循环引用是指两个或多个对象之间相互引用的情况。这种情况可能导致内存泄漏,因为Python…

无涯教程-Android - 环境设置

您可以从Oracle的Java网站下载最新版本的Java JDK-Java SE下载,您将在下载的文件中找到有关安装JDK的说明,按照给定的说明安装和配置安装程序。最后,将PATH和JAVA_HOME环境变量设置为引用包含 java 和 javac 的目录,通常分别是java_install_dir/bin和java_install_d…

QML Book 学习基础3(动画)

目录 主要动画元素 例子: 非线性动画 分组动画 Qt 动画是一种在 Qt 框架下创建交互式和引人入胜的图形用户界面的方法,我们可以认为是对某个基础元素的多个设置 主要动画元素 PropertyAnimation-属性值变化时的动画 NumberA…

Sip分控管理主机 sip协议可视对讲话筒

Sip分控管理主机 sip协议可视对讲话筒 (型号:SV-3280) 产品特点 标准桌面主机,采用8寸高清IPS屏幕,屏幕分辨率1280*800,触摸控制设计,强化铝合金材质; 国产4核嵌入式CPU芯片1G内存,保证系统的整体稳定性&…