efficientsam-pytorch基于point、box和segment everthing推理模型

EfficientSAM

论文

EfficientSAM: Leveraged Masked Image Pretraining for Efficient Segment Anything

  • https://arxiv.org/abs/2312.00863

模型结构

EfficientSAM模型利用掩码图像预训练(SAMI),该预训练学习从SAM图像编码器重构特征,以进行有效的视觉表示学习。然后采用SAMI预训练的轻量级图像编码器和掩码解码器来构建EfficientSAMs ,并在SA-1B数据集上对模型进行微调以执行分割一切的任务。EfficientSAM-S将SAM的推理时间减少了约20倍,参数大小减少了约20倍,性能下降很小。

算法原理

模型包含两个阶段:ImageNet上的SAMI预训练和SA-1B上的SAM微调。EfficientSAM的核心组件包括:交叉注意力解码器、线性投影头、重建损失。 交叉注意力解码器:在SAM特征监督下,解码器重构掩蔽令牌,同时编码器输出作为重构锚点。解码器查询来自掩码令牌,键和值来自编码器和未掩码特征。结合编解码器两者输出特征,用于MAE输出嵌入,并重新排序至原始图像位置。 线性投影头:将编码器和解码器输出特征输入到线性投影头,以对齐SAM图像编码器特征并解决特征维数不匹配问题。 重建损失:在每次训练迭代中,SAMI由从SAM图像编码器中提取的前馈特征,以及MAE的前馈和反向传播过程组成。比较了SAM图像编码器和MAE线性投影头的输出,计算了重建损失。

环境配置

Docker(方法一)

此处提供光源拉取docker镜像的地址与使用步骤

docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk23.10-py38
docker run -it --shm-size=64G -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name efficientsam_pytorch  <your IMAGE ID> bash # <your IMAGE ID>为以上拉取的docker的镜像ID替换,本镜像为:ffa1f63239fc
cd /path/your_code_data/efficientsam_pytorch
pip install -e .
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .

Dockerfile(方法二)

此处提供dockerfile的使用方法

docker build --no-cache -t efficientsam:latest .
docker run -it --shm-size=64G -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name efficientsam_pytorch  efficientsam  bash
cd /path/your_code_data/efficientsam_pytorch
pip install -e .
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .

Anaconda(方法三)

此处提供本地配置、编译的详细步骤,例如:

关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装。

DTK驱动:dtk23.10
python:python3.8
torch: 2.1.0
torchvision: 0.16.0
triton:2.1.0

Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应

其它依赖环境安装如下:

cd /path/your_code_data/efficientsam_pytorch
pip install -e .
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .

数据集

预训练阶段数据集为数据集为 ImageNet

微调阶段数据集为数据集为 SA-1B

训练

官方暂未开放

推理

模型的权重可以通过以下表格链接获得,推理时将其下载放置于weights文件夹下。

EfficientSAM-SEfficientSAM-Ti
DownloadDownload

单卡推理

进入代码文件夹

cd /path/your_code_data/efficientsam_pytorch

基于point和box推理,更多细节参考netbooks/EfficientSAM_example.ipynb:

基于point推理

python inference_point_prompt.py

基于box推理

python inference_box_prompt.py

segment everything推理,更多细节参考netbooks/EfficientSAM_segment_everything_example.ipynb:

python inference_segment_everything.py

result

EfficientSAM-S和EfficientSAM-Ti 基于point测试结果如下:

EfficientSAM-S和EfficientSAM-Ti 基于box测试结果如下:

EfficientSAM-S和EfficientSAM-Ti segment_everything测试结果如下:

精度

应用场景

算法类别

图像分割

热点应用行业

制造,广媒,能源,医疗,家居,教育

源码仓库及问题反馈

  • ModelZoo / efficientsam_pytorch · GitLab

参考资料

  • GitHub - yformer/EfficientSAM: EfficientSAM: Leveraged Masked Image Pretraining for Efficient Segment Anything

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

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

相关文章

如何通俗理解逻辑回归(Logistic Regression)

首先, 什么是逻辑回归呢? 我们先来看一下逻辑回归的公式: t w T X b y s i g m o i d ( t ) s i g m o i d ( t ) 1 1 e − t t w^TXb\\ y sigmoid(t)\\ sigmoid(t) \frac1{1e^{-t}} twTXbysigmoid(t)sigmoid(t)1e−t1​ 对于上面的公式, 感觉很眼熟有木有!!! 没错, …

IntelliJ IDEA调试技巧

IntelliJ IDEA高级调试技巧 假设我们在UserService类的getUserAndCheckStatus方法中遇到了难以追踪的问题。以下是在IntelliJ IDEA中进行高效调试的一些进阶技巧&#xff1a; 1. 条件断点&#xff08;Conditional Breakpoint&#xff09; 如果你知道问题只在特定条件下出现&…

项目(一)--高并发内存池项目简介

什么是高并发内存池 它是一个全球性大厂google(谷歌)的 开源项目,项目名字叫tcmalloc,全称是Thread-Caching Malloc,即线程缓存的malloc 作用&#xff1a; 我们知道C语言在堆上开辟空间和 释放使用的是malloc和free函数 并且C的动态内存管理new和delete 的底层实际上也调用了…

【Linux】模拟实现一个简单的日志系统

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

SFNC —— 标准特征命名约定(一)

系列文章目录 SFNC —— 标准特征命名约定&#xff08;一&#xff09; 文章目录 系列文章目录1、介绍1.1 约定&#xff08;Conventions&#xff09;功能名称和接口&#xff08;Feature Name and Interface&#xff09;功能类别&#xff08;Feature Category&#xff09;功能级别…

(微服务实战)预付卡平台支付交易系统消费业务流程设计

1 交易系统技术架构 预付卡支付交易系统采用Dubbo3作为底层框架&#xff0c;支付交易系统分为账户系统、清结算系统、支付网关、核心支付系统等模块。系统整体采用微服务架构&#xff0c;容器化部署。 2 消费业务流程设计 预付卡系统消费场景分为线上和线下&#xff0c;线…

每天一个数据分析题(三百七十)- 根因分析

对于定性数据的分析更适合使用根因分析的哪种识别工具&#xff1f; A. 散点图 B. 帕累托图 C. 亲和图 D. 柱状图 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案

47-5 内网渗透 - 提权环境搭建

所需内容 1、操作系统(我本地之前就安装好了,这就不演示了,教程中都有) Windows Server 2012:VM虚拟机安装Windows Server 2012 R2服务器_游戏服务器必备 - 知乎 (zhihu.com)Kali Linux:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客…

axios在post带参数请求的时候报CORS

问题&#xff1a;再使用axios发送post请求的时候&#xff0c;不带参数能请求成功&#xff0c;如果带了参数就报CORS 解决&#xff1a; 在页面使用qs import qs from qs; axios.post("url",qs.stringify({key:value })).then(()>{// 成功处理 }).catch(()>{//…

市场情绪周期2024-6-17(补涨回头潮视角验证)

竞价隔夜单 看长江通信&#xff0c;38亿涨到40亿又回落&#xff0c;那么周末最大的利好消息加持下&#xff0c;隔夜单不及预期&#xff0c;金溢科技 更是如此&#xff1b;空间板华闻集团8天7板&#xff0c;连扳5板&#xff0c;一字跌停&#xff0c;它也是有车联网的&#xff0c…

【UIDynamic-动力学-UICollisionBehavior-碰撞模式-创建边界 Objective-C语言】

一、我们来说这个碰撞模式 1.把之前的代码备份一下,改个名字:“04-碰撞行为-碰撞模式”, 然后,command + R,先跑一下, 我现在,一点击,是这个红色的View、和蓝色的View、在发生碰撞, 我们说,碰撞模式是啥意思, collision里边,有一个叫做collisionMode, UICollis…

c++里对 new 、delete 运算符的重载

&#xff08;1&#xff09;c 里 我们可以用默认的 new 和 delete 来分配对象和回收对象。 new 可以先申请内存&#xff0c;再调用对象的构造函数&#xff1b; delete 则先调用对象的析构函数&#xff0c;再回收内存。当然&#xff0c;当我们为类定义了 operator new () 和 oper…

【运维项目经历|034】SPO高效网络代理优化项目

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专家博主 💊交流社区:CSDN云计算交流社区欢迎您的加入! 目…

双层循环和循环控制语句的使用,while和until的语法使用

双层循环和循环控制语句的使用&#xff0c;while和until的语法使用 exit echo 打印 -n 表示不换行输出 -e 输出转译字符 \b&#xff1a;相当于退格键&#xff08;backspace&#xff09; \n&#xff1a;换行&#xff0c;相当于回车 \f&#xff1a;换行&#xff0c;换行后的…

iommu深度剖析虚拟化技术的隐形守护者

iommupt与iommu1&#xff1a;揭秘虚拟化技术中的高级内存管理策略 在虚拟化技术的广阔天地里&#xff0c;iommu&#xff08;Input/Output Memory Management Unit&#xff0c;输入输出内存管理单元&#xff09;作为连接物理硬件与虚拟机之间的一座桥梁&#xff0c;扮演着举足轻…

Git仓库中文件的状态

0 Preface/Foreword 1 文件状态 文件包含以下4个状态&#xff1a; untracked&#xff0c;未跟踪&#xff0c;表示该文件在文件夹中&#xff0c;但是没有加入到git 仓库中进行版本管控。可以通过git add命令将该文件增加到git 仓库中。从untracked变为staged。unmodified&…

HarmonyOS之自选股App

支持在 鸿蒙、安卓、苹果设备上运行。 1.界面效果展示 2.数据存储 数据存储采用的是官方的 ohos.data.relationalStore.relationalStore stock_code表用来存储A股市场5000多家公司的股票代码和名称等信息 const TAB_STOCK_CODE "stock_code" const CREATE_TABL…

为企业提供动力:用于大型组织的WordPress

可扩展且灵活的架构可通过主题、插件和集成进行定制内置 SEO 功能和营销功能内容管理和协作工具支持多站点安装托管解决方案和面向平台的提供商采用现代前端技术的 Headless CMS 功能 拥有强大、灵活且可扩展的内容管理系统 (CMS) 对于大型组织至关重要。作为最受欢迎和广泛使用…

双层循环和循环控制语句的使用,以及while和until的语法使用

echo 打印 -n 表示不换行输出 -e 输出转义字符 /b&#xff1a;相当于退格键&#xff08;backspace&#xff09; /n&#xff1a; 换行&#xff0c;相当于回车 /f&#xff1a; 换行&#xff0c;换行后的新行的开头连着上一行的行尾 /t&#xff1a; 相当于tab键 又叫做横向制…