Faster Segment Anything: Towards Lightweight SAM for Mobile Applications

news/2024/7/23 11:06:29 标签: 人工智能, 计算机视觉

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.niftyadmin.cn/n/476743.html

相关文章

linux 启动脚本程序

这是一个 shell 脚本,用于启动、停止、重启一个名为 simcom_demo 的后台 daemon 进程。具体来说: 如果用户执行了 start 命令,则会检查 /data/simcom_demo 是否存在,如果存在就直接启动,否则先将 /usr/bin/simcom_dem…

2023-01-16 LightDB分布式部署-单机多实例模式.md

LightDB分布式部署-单机多实例模式 分布式部署模式 # 1.常规模式1台服务器作为协调者节点,N(N>1)台服务器作为工作节点,每个节点都按照高可用方式进行部署比如,一个协调节点,2个工作节点,* 工作节点按照一主一从高可用方式部署…

[Python笔记]pyhton提取华为云mySQL数据表

一、安装或引入pymysql (一)安装:pip install pymysql (二)引入:import pymysql 二、定义数据库访问函数 (一)定义连接接口函数 #定义数据库连接函数 def dbConnect(hostname,username,password,database):db = pymysql.connect(host=hostname,user=username,pass…

ThinkPHP-Shop2020版本的商城CMS前端SQL注入

0x01、漏洞名描述 ThinkPHP-Shop2020版本的商城CMS前端SQL注入 0x02、fofa "ThinkPHP-Shop"0x03、POC http://x.x.x.x//mobile/index/index2/id/1* 0x04、漏洞复现

Visual C++中的虚函数和纯虚函数(对比学习法之一)

我是荔园微风,作为一名在IT界整整25年的老兵,今天来说说Visual C中的虚函数和纯虚函数。该系列帖子全部使用我本人自创的对比学习法。也就是当C学不下去的时候,就用JAVA实现同样的代码,然后再用对比的方法把C学会。 直接说虚函数…

Django框架实现简单的接口开发

前提创建一个Django项目&#xff0c;目录如下&#xff1a; Django框架上进行GET请求接口开发示例: 1.在上面项目结构目录Template下&#xff0c;新建一个login.html页面&#xff0c;定义表单提交请求的方式为post&#xff0c;具体代码如下。 <!DOCTYPE HTML> <html …

Android 冷启动优化的3个小案例

背景 为了提高App的冷启动耗时&#xff0c;除了在常规的业务侧进行耗时代码优化之外&#xff0c;为了进一步缩短启动耗时&#xff0c;需要在纯技术测做一些优化探索&#xff0c;本期我们从类预加载、Retrofit 、ARouter方面进行了进一步的优化。从测试数据上来看&#xff0c;这…

[游戏开发][Unity]出包真机运行花屏(已解决)

花屏真机截屏 原因 原因是启动项目时的第一个场景没有相机是 Skybox或者SolidColor模式&#xff0c;我的启动场景只有一个UI相机&#xff0c;且Clear Flags是DepthOnly 解释&#xff1a; https://blog.csdn.net/yanchezuo/article/details/79002318