【SAM】Segment Anything网络结构详解

news2024/11/13 7:58:49

Segment Anything网络结构详解

论文链接:http://arxiv.org/abs/2304.02643

代码链接:https://github.com/facebookresearch/segment-anything

一、整体框架

在这里插入图片描述

在这里插入图片描述

二、图像编码器image encoder

  使用一个MAE预训练好的ViT模型(ViT-H/16 使用了 14 × 14 14 \times 14 14×14的窗口注意力和四个等步长的全局注意力模块),最后输出特征宽度为原图大小的1/16。

  使用 1024 × 1024 1024 \times 1024 1024×1024大小的图像作为输入,缩放图像和填充最短边到1024,得到的图像特征大小为 64 × 64 64 \times 64 64×64,为减少特征维度,使用一个 1 × 1 1 \times 1 1×1的卷积核将特征缩放到1024个通道,接着使用一个1024通道 3 × 3 3 \times 3 3×3的卷积核,每个卷积核后面都带有层归一化。同一张图片仅需一次推理。

输入:image
输出:image embedding

三、Prompt encoder

 Prompt encoder:将特征映射为256维的向量embedding。

 一个点代表点位置编码的总和,其中一个可学习的embedding表示前景还是背景。

 一个框有一对embedding表示,分别为左上角点的位置编码和右下角点的位置编码。

 对于文字,则使用CLIP的文字编码。

Dense prompts(例如mask)对应图像上空间位置,输入mask设置为原图像大小的1/4倍。使用两个 2 × 2 2 \times 2 2×2,步长为2的卷积,输出通道分别为4和16。最后加上一个 1 × 1 1 \times 1 1×1的卷积映射到256维特征。每层都使用GELU激活函数和层归一化操作。mask和图像embedding进行元素相加。如果没有mask。就设置为一个可学习的embedding。

输入:point、box point、text、mask
输出:prompt tokens (prompt token + dense prompts token)

四、轻量级的mask解码器lightweight mask decoder

  轻量级的mask解码器:将图像embedding和prompt embedding映射为一个mask输出。在输入前插入一个可学习的输出token embedding。
在这里插入图片描述

输入:image embedding(含位置编码)、output token(dense prompts token) + prompt token(含位置编码)
输出:mask和IOU置信度

每个解码器层执行4个步骤:
1)token之间的自注意力;
2)token(作为查询)到图像嵌入的交叉注意力token to image attn(更新token).;
3)点积MLP更新每个token;
4)图像嵌入(作为查询Q)到token的交叉注意力image to token attn.(更新image embedding)。这一步骤更新了图像embedding,包含了prompt信息。

  在交叉注意力过程中,图像嵌入被视为一组 6 4 2 64^{2} 642个256维的向量。每个自/交叉注意力和MLP都有残差连接 [49],层归一化,以及训练时丢失率为0.1的dropout [93]。下一解码器层将前一层更新的token和更新的图像嵌入作为输入。使用两层的解码器

 解码器中每当参与注意力层,位置编码都会被添加到图像嵌入中,同时还会将原始prompt tokens(包含它们的位置编码ouput token)重新添加到更新的token中。-> 增强prompt token的几何位置和类型有很强的依赖。

  将解码器后更新的图像嵌入使用两个转置卷积上采样4倍。然后将token再次嵌入到图像嵌入中,将更新后的输出token传递到一个小型3层MLP(多层感知器),该MLP输出一个与放大图像嵌入通道维度匹配的向量。最后通过上采样图像嵌入和MLP输出的空间点积预测一个掩码mask。再将更新后的输出token经过一个MLP输出IOU对应的置信度。

五、结构详细说明

  1) Transformer使用输出256维的嵌入维度,Transformer中的MLP中间层使用2048维,在交叉注意层中使用一个 64 × 64 64 \times 64 64×64的图像嵌入,并将查询Q、键K和值V的通道维度减半到128维,使用8个头的注意力层。

  2) 用于上采样输出图像嵌入的2层转置卷积是 2 × 2 2 \times 2 2×2,步长为2,输出通道维度分别是64和32,含有层归一化层和GELU激活函数,token经过3层MLP后,两者点乘获得最后的mask。

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

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

相关文章

php特性刷题

93 上面注释的是一些配置信息 然后包含flag.php页面 高亮显示 如果,先判断是否存在GET传参的参数num,如果弱比较等于4476,就会输出“no non no !” 如果包含字母那么就错误(包含大小写) 判断变量 $num 是否等于 4…

网络工程9(软路由,旁路由)

一. 软路由 设置软路由,可以将软路由设置为主路由,主路由设置为交换机和无线AP。从而实现网络中的所有设备的消息都能经过软路由的处理后进行上网(比如进行科学上网)。 视频链接 二. 旁路由(作为内网设备,主路由是外网设备) 视频链接 主路…

SpringSecurity Oauth2 - 密码认证获取访问令牌源码分析

文章目录 1. 授权服务器过滤器1. 常用的过滤器2. 工作原理 2. 密码模式获取访问令牌1. 工作流程2. 用户凭证验证1. ResourceOwnerPasswordTokenGranter2. ProviderManager3. CustomAuthProvider4. 认证后的结果 1. 授权服务器过滤器 在Spring Security中,OAuth2授权…

ComfyUI上手使用记录

文章目录 资料安装基础概念常用的工具和插件放大图像从裁剪到重绘SDXL工作流搭建Clip的多种不同的应用Lcm-Turbo极速出图集成节点 资料 AI绘画之ComfyUI Stable Diffusion WEUI中的SDV1.5与SDXL模型结构Config对比 stable-diffusion-webui中stability的sdv1.5和sdxl模型结构c…

SPI驱动学习三(spidev的使用)

目录 一、 spidev驱动程序分析1. 驱动框架2. 驱动程序分析 二、SPI应用程序分析1. 使用方法2. 代码分析2.1 显示设备属性2.2 读数据2.3 先写再读2.4 同时读写 3. SPI应用编程详解4. spidev的缺点 一、 spidev驱动程序分析 参考资料: * 内核驱动:drivers…

足球大小球预测及足球大数据之机器学习预测大小球

足球运动是当今世界上开展最广、影响最大、最具魅力、拥有球迷数最多的体育项目之一,尤其是欧洲足球,每年赛事除了五大联赛(英超、西甲、德甲、法甲、意甲)之外,还会有欧冠(欧洲冠军联赛)&#…

Docker容器详细介绍

1.docker简介 1.1什么是Docker Docker是管理容器的引擎,为应用打包、部署平台,而非单纯的虚拟化技术 它具有以下几个重要特点和优势: 1. 轻量级虚拟化 Docker 容器相较于传统的虚拟机更加轻量和高效,能够快速启动和停止&#…

day-46 旋转图像

思路 不能使用辅助数组,所以关键在于弄清楚旋转后坐标的变化规律。当矩阵的大小n为偶数时,以n/2行和n/2列的元素为起点,当矩阵的大小n为奇数时,以n/2行和(n1)/2列的元素为起点 解题过程 关键:旋…

【python计算机视觉编程——照相机模型与增强现实】

python计算机视觉编程——照相机模型与增强现实 4.照相机模型与增强现实4.1 真空照相机模型4.1.1 照相机矩阵4.1.2 三维点的投影4.1.3 照相机矩阵的分解4.1.4 计算照相机中心 4.2 照相机标定4.3 以平面和标记物进行姿态估计sift.pyhomography.py主函数homography.pycamera.py主…

二分查找 | 二分模板 | 二分题目解析

1.二分查找 二分查找的一个前提就是要保证数组是有序的&#xff08;不准确&#xff09;&#xff01;利用二段性&#xff01; 1.朴素二分模板 朴素二分法的查找中间的值和目标值比较&#xff08;不能找范围&#xff09; while(left < right) // 注意是要&#xff1a; < …

华为云征文|基于Flexus云服务器X实例的应用场景-私有化部署自己的笔记平台

&#x1f534;大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 先看这里 写在前面效果图华为云Flexus X实例云服务器Blossom 私有化笔记平台简介准备工作创建yaml文件执行yaml文件使用blossom 写在前面 我发现了个事儿&#xff0c;好多技术…

百望云携手春秋航空 迈入航空出行数电票新时代

在数字经济的大潮中&#xff0c;每一个行业的转型与升级都显得尤为关键&#xff0c;而航空业作为连接世界的桥梁&#xff0c;其数字化转型的步伐更是备受瞩目。随着百望云与春秋航空携手迈入航空出行数电票新时代&#xff0c;我们不仅见证了传统纸质票据向数字化转型的必然趋势…

Elastic Stack--ELFK实例与Dashboard界面

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 学习B站博主教程笔记&#xff1a; 最新版适合自学的ElasticStack全套视频&#xff08;Elk零基础入门到精通教程&#xff09;Linux运维必备—Elastic…

逆向工程核心原理 Chapter22 | 恶意键盘记录器

教程这一章没给具体的实现&#xff0c;这里在Chapter21学习的基础上&#xff0c;试着实现一个键盘记录器。 键盘记录器实现 这里有个技术问题&#xff1a;记录下的敲击键&#xff08;在KeyHook.dll中捕获的&#xff09;&#xff08;可以用wParam&#xff09;怎么打印出来&…

二叉树和堆知识点

1 特殊二叉树 1. 满二叉树&#xff1a;一个二叉树&#xff0c;如果每一个层的结点数都达到最大值&#xff0c;则这个二叉树就是满二叉树。也就是 说&#xff0c;如果一个二叉树的层数为K&#xff0c;且结点总数是 &#xff0c;则它就是满二叉树。 2. 完全二叉树&#xff1a;完全…

前端打包部署,Nginx服务器启动

前端vue打包部署 前端vue打包部署&#xff0c;执行NPM脚本下的build vue-cli-service... 生成dist文件夹 Nginx服务器 将刚刚的静态资源部署到Nginx

小白学装修(准备阶段)

装修还是 实事求是 脚踏实地 多用心 多学习 视频&#xff1a; 你离摆脱装修小白身份&#xff0c;只差这一个视频&#xff01;_哔哩哔哩_bilibili 本篇文章所涉及到的文件&#xff08;记得给诡计从不拖更一件三联&#xff09; 给诡计投币换的装修预算表资源-CSDN文库 住户…

【Python报错已解决】“ValueError: If using all scalar values, you must pass an index“

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言&#xff1a;一、问题描述1.1 报错示例&#xff1a;以下是一个可能引发上述错误的代码示例。1.2 报错分析&#x…

Docker 镜像构建

1、Docker 镜像结构 Docker镜像的结构是分层的&#xff0c;这种结构是Docker镜像轻量化和高效性的关键。每个Docker镜像都由一系列的“镜像层”&#xff08;image layers&#xff09;组成&#xff0c;这些层通过UnionFS&#xff08;联合文件系统&#xff09;技术叠加在一起&am…

磐石云语音识别引擎

磐石云发布了V1.2.2版本语音识别引擎。 经过严格客观的测试识别效果和阿里云、讯飞、火山进行了对比几乎无差。&#xff08;欢迎对比测试&#xff09; 上图是CPU下的流式识别效果 RTF0.1~0.14,也就是一并发一个小时大约处理7~10小时&#xff0c;这取决于硬件的配置&#xff0…