Faster Segment Anything: Towards Lightweight SAM for Mobile Applications

news2024/11/18 11:24:03

Faster Segment Anything: Towards Lightweight SAM for Mobile Applications
SAM代码:https://github.com/ChaoningZhang/MobileSAM
SAM论文:https://arxiv.org/pdf/2306.14289.pdf

1 概述

Faster SAM的目标是通过用轻量级图像编码器取代笨重的图像编码器,使得SAM适应移动设备。然而,按照原始SAM论文中的方式训练这样一个新的SAM会导致不令人满意的性能,尤其是在训练数据有限的情况下。我们发现,这主要是由于图像编码器和掩膜解码器的耦合优化所导致的。因此,为了解决这个问题,我们提出了一种名为解耦蒸馏的方法。具体而言,我们将原始SAM中的图像编码器ViT-H的知识蒸馏到一个轻量级图像编码器中,这个编码器可以自动与原始SAM中的掩膜解码器兼容。通过这种方式,我们能够在不到一天的时间内在单个GPU上完成训练,得到的轻量级SAM被称为MobileSAM。尽管MobileSAM的体积是原始SAM的60倍以上,但它的性能与原始SAM相当。

SAM由两个组件组成:

  • ViT-based图像编码器
  • Prompt-guided Mask解码器

它们按顺序工作
在这里插入图片描述

2 Mobile-Friendly SAM

2-1 Coupled distillation

用较小的图像编码器重新训练新的SAM。如SAM所述,使用ViT-H图像编码器训练SAM需要在256个A100 GPU上花费68小时。用ViT-L或ViT-B取代ViT-H将所需的GPU减少到128个,但是这仍然是一个不小的计算开销。

当然可以进一步采用更小的图像编码器,并用他们提供的11-T分割数据集(Mask是由预训练的SAM给出的)重新训练新的SAM。本质上,这种再训练过程是知识蒸馏,它将知识从基于ViT-H的SAM转移到具有较小图像编码器的SAM
在这里插入图片描述

2-2 From semi-coupled to decoupled distillation

在从原始的SAM到具有较小图像编码器的SAM进行知识蒸馏时,困难主要在于图像编码器和组合解码器的耦合优化。直观地说,图像编码器的优化取决于图像解码器的质量,反之亦然。受分治算法的启发,将知识蒸馏任务分为两个子任务:图像编码器蒸馏掩膜解码器微调
**图像编码器蒸馏:**冻结Mask解码器,从原始SAM中的ViT-H中蒸馏小图像编码器,而不使用组合解码器;
**掩膜解码器微调:**在冻结的轻量化图像编码器上对Mask解码器进行微调或将它们联合微调可能会进一步提高性能(从学生图像编码器生成的图像编码可以足够接近原始教师编码器的图像编码,这使得本阶段的微调是可选的);

此外,通过对图像嵌入进行蒸馏,我们可以采用简单的MSE loss,而不是使用focal loss和dice loss的组合来进行掩膜预测,这进一步简化了蒸馏过程。
在这里插入图片描述

3 Experiments

与FastSAM比较
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

HTML点击显示、点击隐藏details 标签

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><details> <summary>Copyright 1999-2011.</summary> <p> - by Refsnes Da…

通过阿里云函数计算FC实现音视频转码

1.进入阿里云函数计算FC页面 2.创建音视频转码应用 可以看到代码&#xff0c;看到相关的传参 3.进行测试 编辑测试参数&#xff0c;使用账号的OSS中的资源 点击测试函数进行测试 可以在OSS中看到生成的mp4格式的视频了 测试后发现函数计算可以使用 4. 接下来就是在项目中通过代…

力姆泰克小型电动推杆LAM

小型电动推杆 高强度工程塑料的蜗轮或者粉末冶金齿轮 向下翻动查看更多 力姆泰克小型电动推杆LAM 系列大量采用铝合金壳体&#xff0c;伸缩管等零部件&#xff0c;和部分高强度工程塑料的蜗轮或者粉末冶金齿轮&#xff0c;设计开发出专门应用在医疗&#xff0c; 办公家具&am…

Linux操作系统通过实战理解CPU上下文切换

前言&#xff1a;Linux是一个多任务的操作系统&#xff0c;可以支持远大于CPU数量的任务同时运行&#xff0c;但是我们都知道这其实是一个错觉&#xff0c;真正是系统在很短的时间内将CPU轮流分配给各个进程&#xff0c;给用户造成多任务同时运行的错觉。所以这就是有一个问题&…

Redis实战案例3-缓存概念和添加Redis缓存

1. 缓存 缓存是数据交换的缓冲区&#xff0c;是贮存数据的临时地方&#xff0c;一般读写性能较高&#xff1b; 其中数据库缓存&#xff0c;例如&#xff1a;索引数据&#xff0c;MySQL会给id创建索引&#xff0c;从而查询时可以在内存中快速检索&#xff0c;提升速度&#xff1…

MDK指定.sct(分散加载描述文件)文件位置

文章目录 MDK指定.sct(分散加载描述文件)文件位置概述END MDK指定.sct(分散加载描述文件)文件位置 概述 用STM32CubeMX生成的工程, 默认的.sct位置在临时输出目录, 里面都是.o. 都是工程编译时生成的临时文件(中间文件) 当工程归档时, 这个临时目录肯定是要删除的(编译过程…

用ThinkJs框架快速搭建博客网站

ThinkJS是一个企业级的NodeJS应用框架&#xff0c;整合了各种常用SDK以及企业级常用的技术方案&#xff0c;为减少了开发人员的学习成本&#xff0c;提高团队的开发效率而生。框架底层基于Koa2实现&#xff0c;并且结合ThinkPHP的思想&#xff0c;使代码更加简洁实用。 ThinkVu…

Dependency ‘io.spring.platform:platform-bom:Cario-SR7‘ not found

刚看到这个错的时候&#xff0c;以为是maven中需要配置aliyun镜像的缘故&#xff0c;所以&#xff0c;在/conf/settings.xml中加入了aliyun镜像&#xff1a; <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al…

智能优化算法六种常见图—参数空间图、搜索历史图、第一维度轨迹图、多样性曲线、平均适应度曲线、收敛曲线图(以黏菌算法为例)

一、基本介绍&#xff1a; 智能优化算法六种常见图绘制—参数空间图、搜索历史图、第一维度轨迹图、多样性曲线、平均适应度曲线、收敛曲线图。一篇文章有几张高颜值的图片&#xff0c;能给审稿人留下良好的第一印象。以上这些图像均可用于仿真实验中。各图像功能如下&#xf…

五个维度,解析 Spring 中 @Autowired 和 @Resource 的区别

Autowired注解是由Spring提供的&#xff0c;它可以用来对构造方法、成员变量及方法参数进行标注&#xff0c;它能够根据对象类型完成自动注入&#xff0c;代码如下&#xff1a; public class Service {// 构造方法注入Autowiredpublic Service(Service service) {this.service…

实现一个转盘随机选择器

实现效果 完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><…

Java的Stream流详细讲解

一.Stream 是什么 Stream是Java 8新增的重要特性, 它提供函数式编程支持并允许以管道方式操作集合. 流操作会遍历数据源, 使用管道式操作处理数据后生成结果集合, 这个过程通常不会对数据源造成影响。 ​ 同时stream不是一种数据结构&#xff0c;它只是某种数据源的一个视图&…

Neo4j desktop在界面上使用dump备份还原

Neo4j数据库的版本在4.4版本中有dump &#xff08;Neo4j 3.5的版本没有dump文件&#xff09;&#xff0c;选中某个数据库可以使用dump导出一个.dump文件。 导出后的文件 导入dump文件&#xff0c;创建新的数据库

基于InteloneAPI的油锅爆燃预警系统

基于InteloneAPI的油锅爆燃预警系统 前言一、方案介绍1.系统概述2.设计思路 二、方案实现1.ResNet-18模型2.Intel OneAPI AI Kit 使用1.Intel Neural Compressor&#xff1a;2.Intel Optimization for PyTorch* 三、方案价值总结 前言 家居场景下&#xff0c;最容易起火的原因…

selenium自动化登录(实战解析)

目录 1.纯英文验证码 1.首先需要了解运行所需要的模块 2.获取我们的目标地址链接 3.进入古诗词首页面&#xff0c;找到验证码的标签&#xff0c;获取并且保存 4.调用超级鹰打码平台 5.调用超级鹰内的方法 6.输入账号密码 7.模拟登陆需要用cookie保持登陆状态 相信有很多…

人工智能 | 技能人才评价证书分析及人工智能/计算机类证书推荐

目录 简介技能人才评价证书相关介绍1. 国家职业资格证书2. 职业技能等级证书 推荐证书目录1. 计算机类的国家职业资格证书a. 证书推荐b. “软高***”和“PMP”的区别 2. 计算机类的职业技能等级证书a. 工信部认证b. 中国人工智能学会证书 专业证书的作用1. 抵税2. 领取职业技能…

想要让视频素材格式快速调整转换的方法分享

有时候有些视频播放软件不支持播放某些格式的视频文件&#xff1f;那要怎么解决呢&#xff1f;换一个播放软件&#xff1f;不妨试试批量转换视频格式&#xff0c;简单的几步操作就能快速解决烦恼&#xff0c;跟着小编一起来看看具体的操作环节吧。 首先先进入“固乔科技”的官网…

Apikit 自学日记:发起快速测试

功能入口&#xff1a;API管理应用 / 选中某个项目 / API文档菜单 / 选中标签页旁加号 发起快速测试 如果未创建该接口文档&#xff0c;仅临时调试接口&#xff0c;则可创建API快速测试页面。可在这个页面输入接口相关的信息并进行快速测试。具体各协议的测试字段配置&#xf…

NoSQL之Redis配置

NoSQL 一、关系型数据库与非关系型数据库关系型数据库非关系型数据库区别 二、Redis简介Redis的优点Redis的使用场景 三、Redis安装部署四、Redis命令工具redis-cli 命令行工具redis-benchmark 测试工具 五、Redis 数据库常用命令六、Redis多数据库常用命令 一、关系型数据库与…

深入浅出设计模式 - 观察者模式

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…