Segment Anything(SAM) 计算过程

news2024/9/22 21:21:14
  1. 给定输入图像 I ∈ R 3 × H × W I \in R^{3 \times H \times W} IR3×H×W
  2. 给定需要的prompts:
    • M ∈ R 1 × H × W M \in R^{1 \times H \times W} MR1×H×W,代表图片的前背景信息。
    • P ∈ R N × 2 P \in R^{N \times 2} PRN×2,其中 N N N 是点的个数,2 代表坐标。
    • B ∈ R 4 B \in R^{4} BR4,4 代表左上角与右下角点的坐标。
    • T T T 代表一段文本,暂时还未开放。
  3. I I I 输入到image encoder中提取特征,得到image embeddings: f I = V I T ( I ) , f I ∈ R c × h × w f^{I}=VIT(I),f^{I} \in R^{c \times h \times w} fI=VIT(I),fIRc×h×w c , h , w c,h,w c,h,w 分别是特征维度与特征的空间高,宽。
  4. 得到稠密编码 f D ∈ R c × h × w f^{D} \in R^{c \times h \times w} fDRc×h×w。如果有 M M M,将其输入到卷积网络中卷它,如果没有的话,直接复制no_mask_embed向量填充。
  5. 得到稀疏编码 f S ∈ R K × c f^{S} \in R^{K \times c} fSRK×c
    • 对于点 P P P,进行位置编码,得到 f P ∈ R N × c f^P \in R^{N \times c} fPRN×c (每个点映射为一个 c c c 维向量),并且 f P f^P fP 中不同区域(填充部分,前景,背景)要添加对应的编码加以区分。
    • 对于框 B B B,首先重塑为两个点,然后使用与点相同的方式进行点编码,最后两个点加上对应的坐上角与右下角的编码,最终得到 f B ∈ R 2 × c f^B \in R^{2 \times c} fBR2×c
    • 最后将 f P f^P fP f B f^B fB 拼接起来作为稀疏编码,最后的稀疏编码可能只包含点编码或框编码,但实质都是点编码,只是框编码会额外加两个可学习编码加以区分,即三种情况: K = N ∣ K = 2 ∣ K = N + 2 K =N|K=2|K=N+2 K=NK=2∣K=N+2
  6. f k e y = f I + f D , f k e y ∈ R c × h × w f^{key}=f^{I}+f^{D},f^{key} \in R^{c \times h \times w} fkey=fI+fD,fkeyRc×h×w 作为mask decoder的 key
  7. 加入各种token输入到mask decoder中,作为 query。iou_token: f i o u ∈ R 1 × c f^{iou} \in R^{1 \times c} fiouR1×c,mask_tokens: f m a s k ∈ R 4 × c f^{mask} \in R^{4 \times c} fmaskR4×c (3个mask+1个背景)。 f q u e r y = C a t ( f i o u , f m a s k , f S ) , f q u e r y ∈ R ( 5 + K ) × c f k e y , f q u e r y = M a s k D e c o d e r ( f k e y , f q u e r y , f p e ) f^{query}=Cat(f^{iou},f^{mask},f^S),f^{query} \in R^{(5 + K) \times c}\\ f^{key},f^{query}=MaskDecoder(f^{key},f^{query},f^{pe}) fquery=Cat(fiou,fmask,fS),fqueryR(5+K)×cfkey,fquery=MaskDecoder(fkey,fquery,fpe) f p e f^{pe} fpe是位置编码
  8. 最终得到 f k e y ∈ R c × h × w f^{key} \in R^{c \times h \times w} fkeyRc×h×w f q u e r y ∈ R ( 5 + K ) × c f^{query} \in R^{(5 + K) \times c} fqueryR(5+K)×c
    • 随后 f k e y f^{key} fkey 进行反卷积,还原到图像尺寸 H H H, W W W(实际会进行一些采样)。
    • f q u e r y f^{query} fquery 的第一个表示iou,后三个表示mask,对后三个进行线性映射。
    • 前两步结果求向量积,得到mask预测。 f i o u = f q u e r y [ : , 0 , : ] f^{iou}=f^{query}[:,0,:] fiou=fquery[:,0,:] f m a s k = f q u e r y [ : , 1 : 4 , : ] f^{mask}=f^{query}[:,1:4,:] fmask=fquery[:,1:4,:] f m a s k = M L P ( f m a s k ) , f m a s k ∈ R 3 × c f^{mask}=MLP(f^{mask}),f^{mask} \in R^{3 \times c} fmask=MLP(fmask),fmaskR3×c f m a s k = M a t M u l ( f m a s k , f k e y ) , f m a s k ∈ R 3 × H × W f^{mask}=MatMul(f^{mask}, f^{key}),f^{mask} \in R^{3 \times H \times W} fmask=MatMul(fmask,fkey),fmaskR3×H×W f i o u = M L P ( f i o u ) , f i o u ∈ R 3 f^{iou}=MLP(f^{iou}),f^{iou} \in R^{3} fiou=MLP(fiou)fiouR3
  9. 最终模型得到 3 个 mask 以及 3 个置信度。

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

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

相关文章

SpringBoot 底层机制分析【Tomcat 启动+Spring 容器初始化+Tomcat 如何关联Spring 容器】【下】

😀前言 本篇博文是关于SpringBoot 底层机制分析实现,希望能够帮助你更好的了解SpringBoot 😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大…

多年软件测试面试经验,给正在面试工作的一些建议

工作8年多,测试管理经验4年左右,电话面试现场面试了很多测试工程师候选人员,总结下面试过程中我经常会问到的问题和梳理下我的面试流程,希望对候选人员有所帮助。 1.自我介绍 自我介绍其实并不是我想了解除了简历之外的候选人的…

【王树森】深度强化学习(DRL)课程笔记:P2 价值学习

Value-Based RL 试图找出能预测最优action的Q*函数 Deep Q Network(DQN) Temporal Difference(TD) Learning Example 如果在只到半路DC能不能更新模型? TD在这种情况下也可以学习的原因 TD learning for DQN 使用TD Learning 训练 DQN Summary

oracle sql developer批量删除某个用户

随着navicate收费,还得破解,pl/sql developer配置麻烦,最近使用oracle sql developer来试试oracle的操作如何; 用着还行,没有卡顿现象, 最近要oracle sql developer批量删除某个用户下所有的表&#xff0…

springboot中消失的静态资源

springboot中消失的静态资源 问题:springboot项目中,resource/static 目录下的index.html以及template目录下 。实现WebMvcConfigurer这个接口,index.html就404了。 原因:实现了 WebMvcConfigurer 接口后,index.html …

网络安全的相关知识点

网络安全威胁类型: 1.窃听:广播式网络系统。 2.假冒 3.重放:重复一份报文或者报文的一部分,以便产生一个被授权的效果。 4.流量分析 5.数据完整性破坏 6.拒绝服务 7.资源的非授权使用 8.陷门和特洛伊木马:木马病毒有客…

Kali中AWD靶机环境搭建

Kali中AWD靶机环境搭建 1、kali安装docker2、克隆项目(400多M,下载会有点久)3、进入项目4、下载镜像5、改镜像名6、比赛环境搭建6.1 启动靶机6.2 连接裁判机,启动check脚本6.3 关闭环境命令 7、 靶机访问方式7.1 web界面访问7.2 s…

AMD 翻身无望,RX7000多款主流新卡出炉逗乐NVIDIA

看了今年 NVIDIA RTX 40 系中端主流级显卡,让咱明白了什么叫毫无诚意。 4060 核心规模不及 4090 的 19%、4060Ti 打不过 3070,可真是小刀划屁股开了眼。 奈何 AMD 这代 RX 7000 系显卡着实给不上压力。 旗舰 RX 7900 XTX、7900 XT 完全不敌 RTX 4090、…

go get报错

这里写目录标题 执行 go install github.com/mitchellh/goxlatest提示下面错误,我浏览器直接访问时能访问了,这个下面的提示是golang代理问题 go install: github.com/mitchellh/goxlatest: module github.com/mitchellh/gox: Get “https://proxy.golan…

职场演讲口才培训的影响研究:演讲训练项目的效果探究

题目:职场演讲口才培训的影响研究:演讲训练项目的效果探究 I. 引言 A. 话题背景和意义 在现代职场中,良好的演讲口才已经成为一个不可或缺的技能。随着全球化和信息技术的迅速发展,职场中的沟通方式和需求也发生了巨大变化。无论…

多门店小程序怎么弄

连锁多门店小程序是一种基于微信平台的应用,旨在为连锁企业提供线上线下一体化的服务。以下是该小程序的功能介绍: 1. 门店查找:用户可以通过小程序查找附近的连锁门店,根据地理位置、距离等条件进行筛选,并查看每个门…

MFC创建和使用OCX控件

文章目录 MFC建立OCX控件注册OCX控件与反注册使用Internet Explorer测试ocx控件OCX控件添加方法OCX控件添加事件Web使用OCX控件MFC使用OCX控件使用OCX控件调用ocx的功能函数对ocx的事件响应OCX控件调试工具tstcon32.exe加载ocx控件使用tstcon32.exe调试ocxMFC建立OCX控件 新建…

镜像网站汇总【8月9日更新】

今日最新整理:还是最基本原则: 不用注册, 不用登录, 不用魔法, 不用梯子, 必须是上来就用的镜像! 第一个:可用网址汇总 网址:https://c.aalib.net/tool/chatgpt/ …

【原创】基于JavaWeb的婚礼策划平台

主要功能介绍:系统基于Java语言开发。整个程序属于B/S架构应用。在开发的时候,将婚礼策划中主要的业务如:婚纱摄影预约以及婚纱租赁等作为主要的目标和研究方向。婚礼策划平台系统从整体结构设计上,由网站前台和系统后台组成。网站…

江苏省发布雨水排放环境管理办法,这些重点值得关注!

近日,江苏省深入打好污染防治攻坚战指挥部办公室正式印发了《江苏省重点行业工业企业雨水排放环境管理办法(试行)》,已于2023年5月15日正式施行。 本办法所称重点行业工业企业,是指化工、电镀原料药制造、冶炼、印染行…

方法区——元空间概述

方法区 不同版本具体实现 标准层面:方法区(Method Area)具体实现层面: ≤JDK1.6 永久代JDK1.7 永久代仍然存在,但是已经开始提出:去永久代≥JDK1.8元空间(Meta Space) 永久代概念辨…

【torch.nn.Fold】和【torch.nn.Unfold】

文章目录 torch.nn.Unfold直观理解官方文档 toch.nn.Fold直观理解官方文档 torch.nn.Unfold 直观理解 torhc.nn.Unfold的功能: 从一个batch的样本中,提取出滑动的局部区域块patch(也就是卷积操作中的提取kernel filter对应的滑动窗口&#…

C语言基础(持续更新)

常用函数 strrchr 描述 C 库函数 char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。测试代码 #include "stdio.h" #include "string.h"int main() {printf(&q…

Ubuntu18.04中QGroundControl安装及添加到应用程序

Ubuntu18.04中QGroundControl安装及添加到应用程序 Ubuntu18.04中QGroundControl安装及添加到应用程序教程 目录 Ubuntu18.04中QGroundControl安装及添加到应用程序QGroundControl下载安装一、设置用户权限二、安装必要扩展包三、注销并再次登录以启用对用户权限的更改四、下…

pgsql查询某表所有字段

查询某表所有字段 查询某表所有字段 select * from information_schema.columns where table_schema模式名称 and table_name表名;模式 查询某表字段个数 select count(*) from information_schema.columns where table_schema模式名称 and table_name表名;