EdgeSAM: Prompt-In-the-Loop Distillation for On-Device Deployment of SAM

EdgeSAM: Prompt-In-the-Loop Distillation for On-Device Deployment of SAM

EdgeSAM论文:https://arxiv.org/pdf/2312.06660.pdf
EdgeSAM代码:https://github.com/chongzhou96/EdgeSAM

1 概述

作者在对各种蒸馏策略进行深入剖析后,证实了task-agnostic的编码器蒸馏难以完全吸收SAM所掌握的全部知识。鉴于此,EdgeSAM巧妙地循环运用bbox与point提示词,并同步对提示词编码器和Mak解码器进行蒸馏,以确保蒸馏模型能够精准地掌握提示词与Mask之间错综复杂的关联。EdgeSAM是首个能在iPhone 14上以超过30 FPS运行的SAM变体。
在这里插入图片描述

  • 在2080Ti上,相比原生SAM,EdgeSAM推理速度快40倍;
  • 在iPhone14上,相比MobileSAM,EdgeSAM推理速度快14倍,达到了38.7fps。

2 EdgeSAM

EdgeSAM的目标是将SAM的功能转移到一个更为紧凑的模型中,使得在边缘设备上的部署变得可行。因此,EdgeSAM保留了SAM的编码器-解码器架构,并旨在保持零样本交互式分割(通过框和点提示)的性能。EdgeSAM的核心是在知识蒸馏过程中考虑提示词,以便学生模型接受任务特定的指导,并专注于更难的训练目标,如更精细的边界。为此引入了一种动态提示词采样策略,旨在实现三个关键目标:(1)从初始提示词(无论是框还是点)中动态生成一组多样化的提示词组合;(2)准确识别学生模型在掩膜内表现不准确的区域,从而将其注意力集中在这些特定部分;(3)迫使教师模型(即SAM)产生高质量的掩膜,以提供更精确的指导。
在这里插入图片描述

2-1 仅编码器知识蒸馏 Encoder-Only Knowledge Distillation

由于学生模型和SAM图像编码器的下采样步长和特征通道并不一致,MobileSAM移除了学生模型最后两个阶段的下采样操作,并使用一个投影层来对齐通道维度。EdgeSAM构建了一个小型FPN(特征金字塔网络),将特征上采样到所需的分辨率,并与前几个阶段的特征进行逐元素相加来保持下采样层不变,最后也使用投影层进行通道对齐。

实验发现,使用不同的backbones、更长的训练计划或者使用为密集预测任务设计的蒸馏损失并没有表现出明显的性能提升。

2-2 循环Prompt知识蒸馏 Prompt-In-the-Loop Knowledge Distillation

SAM的掩膜解码器是一个双流双向转换器,其中来自图像编码器的输出特征图f作为其中一个流的输入,而稀疏提示嵌入p与四个掩膜标记m和一个IoU标记c连接在一起,作为另一个流的输入。稀疏提示可以是正/负点的任意组合以及一个单独的框,用于指示用户感兴趣的对象。

作者观察到,微调掩膜解码器会对零样本泛化能力构成挑战。也就是说,使用特定组合的提示进行训练会破坏其在推理时使用未训练过的提示组合时的能力。因此引入了一种循环Prompt知识蒸馏。这种策略旨在实现三个关键目标:(1)从初始提示(无论是框还是点)中动态生成一组多样化的提示组合;(2)准确识别掩膜内学生模型表现不准确的区域,从而将这些特定部分作为焦点;(3)迫使教师模型(即SAM)生成高质量的掩膜,以提供更精确的指导。策略如下:
在这里插入图片描述
从初始提示开始。以相同的概率,从SA-1B数据集中提供的框或点提示中选取一个,作为教师和学生模型解码器的输入。接着,我们识别出教师和学生模型掩膜预测不一致的区域。如下图所示,以教师的输出为参考,在标记为假负的区域中均匀采样新的正点提示,或在识别为假正的区域中采样新的负点提示。然后,将这些新采样的点与现有的提示组合起来,用于下一次解码迭代。值得注意的是,每个提示都会导致四个不同粒度级别的掩膜预测。其中不一致性是在具有最高IoU分数的教师掩膜与其对应的学生掩膜之间计算的。
在这里插入图片描述
实验表明,相比于依赖专门用于密集预测的损失或基于查询的方法进行蒸馏,在蒸馏过程中动态地将适当的提示组合输入到掩膜解码器中更为有效。提出的循环提示蒸馏方法优先使用策略性提示来增强学习过程。

2-3 粒度先验 Granularity Priors

由于SA-1B是一个类别无关、多粒度、自动标注的数据集,其标注分布可能与由人力密集标注的数据集(如COCO)存在很大差异。
因此,对于模糊提示词,如单点,SAM很难确定所需的输出粒度。如下图所示,使用框提示词时,SAM可以轻松地确定目标粒度。
在这里插入图片描述
构建了一个轻量级的区域提议网络(RPN)[41],该网络由特征金字塔网络(FPN)和一个共享检测头组成。RPN在特定数据集(例如COCO)上进行训练,以捕获其粒度先验。在推理过程中,合并那些中心点为点提示词的K个最近邻(根据置信度得分加权)的提议框。最后,将合并后的框与点输入一起作为提示词,输入到掩膜解码器中。

3 Experiments

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextClock)

TextClock组件通过文本将当前系统时间显示在设备上。支持不同时区的时间显示,最高精度到秒级。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextClock(options?…

Redis底层数据结构之List

文章目录 1. Redis 6的list源码分析1. Redis 7的list源码分析 1. Redis 6的list源码分析 首先我们查看一下redis 6关于list的相关配置: config get list*可以看见redis 6的quicklist底层使用的数据结构是ziplist list-compress-depth:表示一个quicklis…

CSS中position的属性有哪些,区别是什么

position有以下属性值: 属性值概述absolute生成绝对定位的元素,相对于static定位以外的一个父元素进行定位。元素的位置通过left、top、right、bottom属性进行规定。relative生成相对定位的元素,相对于其原来的位置进行定位。元素的位置通过…

使用Golong轻松实现JWT身份验证

使用Golong轻松实现JWT身份验证 JSON Web Tokens (JWT)是一种流行的安全方法,用于在两个方之间表示声明。在Web应用程序领域,它们通常用作从客户端向服务器传输身份信息(声明)的方式。本教程将引导您逐步实现Go应用程序中的JWT身份…

中国湿地沼泽分类分布数据集

数据下载链接:百度云下载链接 引言 随着经济社会的快速发展和城市化进程的加速推进,农业发生功能性转变,从单一生产功能向生产、生活、生态多功能服务首都经济社会发展转变。湿地与农田、草地、森林三大生态系统整合形成完整的现代农业生态服…

如何使用ArcGIS Pro生成带计曲线等高线

等高线作为常见的地图要素经常会被使用到,一般情况下生成的等高线是不带计曲线的,在某些情况下我们需要带计曲线的等高线,这里为大家介绍一下ArcGIS Pro生成带计曲线等高线的方法,希望能对你有所帮助。 数据来源 教程所使用的数…

【数据结构】二叉树的层序遍历、前序遍历,中序遍历、后续遍历

目录 一、前言二、二叉树的遍历概念三、根据遍历结果去推其他的遍历结果1.根据前序遍历、中序遍历,求后序遍历2. 已知中序和后序遍历,求前序遍历 四、代码实现 一、前言 最近也是在准备笔试,由于没有系统的学过数据结构,所以花了…

WanAndroid(鸿蒙版)开发的第三篇

前言 DevEco Studio版本:4.0.0.600 WanAndroid的API链接:玩Android 开放API-玩Android - wanandroid.com 其他篇文章参考: 1、WanAndroid(鸿蒙版)开发的第一篇-CSDN博客 2、WanAndroid(鸿蒙版)开发的第二篇-CSDN博客 效果 搜索页面实现…

C++之多态以及文件处理

多态 1 多态的基本概念 多态是C面向对象三大特性之一 多态分为两类: 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定-编译阶段确定函数地址…

开源生态与软件供应链研讨会

✦ 日程安排 开源生态与软件供应链研讨会 时间: 2024年3月12日(星期二)13:30 – 17:00 地点: 复旦大学江湾校区二号交叉学科楼E1021 联系人: 陈碧欢(bhchenfudan.edu.cn) 点击文末“阅读原文”或扫描下方二维码进入报名通…

记一次生产慢sql索引优化及思考

记一次生产慢sql索引优化及思考 问题重现 夜黑风高的某一晚,突然收到一条运营后台数据库慢sql的报警,耗时竟然达到了60s。看了一下,还好不是很频繁,内心会更加从容排查问题,应该是特定条件下没有走到索引导致&#x…

OSCP靶场--Wheels

OSCP靶场–Wheels 考点(1.xpath注入 2.ssh爆破 3.相对路径绕过suid文件限制读取/etc/shadow 4./etc/shadow中root用户hash爆破提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.155.202 --min-rate 2500 Starting Nmap 7.92 ( https://nmap…