Segment Anything--SAM框架(二)

文章目录

  • prologue
  • paper && code
    • Image encoder
    • Prompt encoder
    • Lightweight mask decoder
    • Making the model ambiguity-aware

prologue

  • 没什么事,写一写SAM的paper中关于模型框架的部分和实际代码部分。

paper && code

开局一张图
SAM有三个组件,如图所示:图像编码器、灵活的提示编码器和快速掩码解码器。我们在 Transformer 视觉模型 的基础上,对实时性能进行了特定的权衡。文章正文介绍的比较简单,有用的东西都放在附录里面了。顺便说一句上面的图还是很简洁明了的。
在这里插入图片描述
在附录A中

Image encoder

一般来说,图像编码器可以是任何输出 C×H×W 图像嵌入的网络。受可扩展性和对强预训练的访问的启发,我们使用 MAE [47] 预训练的视觉转换器 (ViT) [33],并以最小的适应处理高分辨率输入,特别是具有 14×14 窗口注意的 ViT-H/16 和四个等间距的全局注意块。图像编码器的输出是输入图像的 16 倍缩小嵌入。由于我们的运行时目标是实时处理每个提示,我们可以提供大量的图像编码器FLOPs,因为它们每张图像只计算一次,而不是每个提示。

按照标准做法,我们使用通过重新缩放图像和填充较短边获得的 1024×1024 的输入分辨率。因此,图像嵌入为64×64。为了减少通道维度,在[62]之后,我们使用1×1卷积来获得256个通道,然后使用3×3卷积以及256个通道。每个卷积层后面都有一个层归一化[4]。

这部分了解MAE(Masked Autoencoders Are Scalable Vision Learners)和VIT就很熟悉了,MAE是用来做自监督预训练,VIT提特征。

在这里插入图片描述
MAE主要就是mask一部分图片块让decoer重建原图;
在这里插入图片描述
VIT(An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale)
原始VIT把图片切成PATCH做分类任务,可以用来提特征。

Prompt encoder

稀疏提示被映射到 256 维向量嵌入,如下所示。一个点表示为点位置位置编码[95]和两个学习嵌入之一的总和,表示该点是否在前景或背景中。框由嵌入对表示:(1)其左上角的位置编码与表示“左上角”和(2)相同结构的学习嵌入相加,但使用表示“右下角”的学习嵌入。最后,为了表示自由形式的文本,我们使用来自 CLIP [82] 的文本编码器(任何文本编码器通常都可以)。我们专注于本节的其余部分的几何提示,并在第 D.5 节中深入讨论文本提示。(这里关于clip的部分也就是代码没有放出来的,可以根据这里的细节复现,也有人这么做了)

密集提示(即掩码)与图像具有空间对应关系。我们以比输入图像低 4 倍的分辨率输入掩码,然后使用两个输出通道 4 和 16 的 2×2、stride-2 卷积分别缩小额外的 4 倍。最终的 1×1 卷积将通道维度映射到 256。每一层都由 GELU 激活 [50] 和层归一化分隔。掩码然后按元素添加图像嵌入。如果没有掩码提示,则将表示“无掩码”的学习嵌入添加到每个图像嵌入位置。

Lightweight mask decoder

在这里插入图片描述
这部分还是看代码来的快,上图左边深色区域在代码transformer.py中,右边浅色部分在mask_decoder.py中。

在这里插入图片描述
下图的四块分别对应着左边深橙色的四个步骤,也就是原文如下
在这里插入图片描述

在这里插入图片描述
右边橙色
在这里插入图片描述

Making the model ambiguity-aware

如前所述,单个输入提示可能是模糊的,因为它对应于多个有效掩码,模型将学会对这些掩码进行平均。我们通过简单的修改来消除这个问题:我们没有使用预测单个掩码,而是使用少量输出标记并同时预测多个掩码。

默认情况下,我们预测三个掩码,因为我们观察到三层(整体、部分和子部分)通常足以描述嵌套掩码。

在训练期间,我们计算地面实况和每个预测掩码之间的损失(稍后描述),但仅从最低损失反向传播。这是用于具有多个输出的模型的常用技术 [15, 45, 64]。为了在应用程序中使用,我们想对预测的掩码进行排名,因此我们添加了一个小头(在额外的输出令牌上运行),它估计每个预测掩码与其覆盖的对象之间的 IoU。具有多个提示的歧义非常罕见,三个输出掩码通常变得相似。为了最小化训练时退化损失的计算并确保单个明确掩码接收常规梯度信号,当给出多个提示时,我们只预测单个掩码。这是通过为额外的掩码预测添加第四个输出标记来实现的。这个第四个掩码永远不会为单个提示返回,并且是为多个提示返回的唯一掩码。

累了

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

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

相关文章

【PTA题目】7-31 前世档案 分数 20

7-31 前世档案 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示&#xff09…

【若依系列】1.项目修改成自己包名并启动服务

项目下载地址: 分离版本 https://gitee.com/y_project/RuoYi-Vue 修改工具下载 https://gitee.com/lpf_project/common-tools 相关截图: 1.项目结构: 2.修改包名工具: 工具截图,根据对应提示自定义修改即可&#x…

【JS】检索树结构,并返回结果节点的路径与子节点

【JS】检索树结构,并返回结果节点的路径与子节点 需求代码效果展示 需求 一个树结构,需要添加条件检索功能,检索结果依然是一个树结构,包含所有的符合要求的节点,以及他们到根节点的路径,与他们的子节点 …

Spring Boot基础

文章目录 一、Spring Boot1. Spring的缺点2. Spring Boot 改变了什么3. Spring Boot项目搭建4. 热部署5. 依赖管理6. 代码生成器7. 日志8. 日期转换9. 接口文档10. 打包部署11. 自动装配 一、Spring Boot 1. Spring的缺点 在Spring Boot出现以前,使用Spring框架的…

二叉树OJ题之三

哈喽伙伴们,有一段时间没更新博客了,主要是这段时间要准备学校的期末考试,所以没有把部分时间分给博客,今天我们一起去接着看二叉树递归有关的OJ题,今天我们要学习的是 判断相同的树,力扣题目--100 &…

JSONArray添加JSONObject数据组装后,toString()发现值有{“$ref“:“$[0]“}乱码问题

出现这个问题是FastJson的循环引用造车的,可以手动设置取消FastJson的循环引用的检查。代码如下: JSONArray oaArr new JSONArray(); //取消JSON循环引用检查 String s JSON.toJSONString(oaArr, SerializerFeature.DisableCircularReferenceDetect)…

龙芯loongarch64服务器编译安装pytorch

前言 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序,它是一个基于Python的可续计算包。在通过龙芯开源仓库下载依赖包后,执行import torch后,发现其中安装的"pytorch"就无法正常使用,这里就演示下pytorch整个编译流程。 1、环境准…

推荐一款Excel快速加载SQL的插件,方便又好用

如果告诉你只需要双击一下,SQL数据库中存放在表里面的数据,就能加载到你的Excel中,你想不想要? 今天给大家推荐一款好用的Excel插件,安装简单,使用方便,是经常使用SQL数据库的不二。 这款插件…

Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

文章目录 HTTP协议1.HTTP协议是什么?2.HTTP协议的特点3.什么是URL?4.通过浏览器控制台学习HTTP协议Request Headers请求数据格式说明Response Headers请求数据格式说明 5.HTTP工作原理 HTTP协议 1.HTTP协议是什么? HTTP协议是一种超文本传输协议&…

前端实现主题(深色模式)切换的几种方案

方案一:link 动态引入 通过改变link 标签的 href 属性实现动态修改样式(暂不推荐这种方案) 优点:实现了按需加载,提高了性能; 缺点:动态加载样式文件,可能会因为网络问题导致样式…

使用Scanner扫描器和if语句来判断QQ等级的活跃程度

一、主要特点 总体使用try包围起来,用到了Scanner扫描器,还用到了若干if语句。 二、运行代码 import java.util.Scanner; public class QQtest {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.pr…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后,又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上,星纪魅族集团(下称“魅族”)董事长兼CEO沈子瑜宣布,魅族正式进入汽车市场,将在2024年第一季度启动“DreamCar共创…

【STM32】STM32学习笔记-课程简介(01)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

win10与 vm虚拟机win7共享文件夹创建

1:在win10(主机)电脑先随意共享一个文件夹 2:在win10(主机)上创建一个网络映射 右键此电脑选择映射网络驱动器 成功后会多出这个网络位置 3:win7虚拟机设置 在虚拟机中点击计算机右键添加一个网络位置

C# Onnx CenterNet目标检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:input.1 tensor:Float[1, 3, 384, 384] --------------------------------------------------------------- Outputs ------------------------- name&a…

安卓开发引入网络图片

<ImageViewandroid:id"id/img01"android:layout_width"match_parent"android:layout_height"200dp"android:layout_weight"1"/>ImageView加载网路图片 第一步&#xff1a;添加网络权限 <uses-permission android:name"…

vue使用实现录音功能js-audio-recorder

前言 最近项目中需要实现一个录音上传功能&#xff0c;用于语音评论可以上录音。 下载插件&#xff1a; npm i js-audio-recorder完整代码 <template><div style"padding: 20px;"><h3>录音上传</h3><div style"font-size:14px"…

“轻松管理视频文件:高效归类与统一重命名“

随着电子设备的普及&#xff0c;我们的视频文件可能来自各种不同的源头&#xff0c;如何高效地管理和查找这些文件成为了一个问题。今天&#xff0c;我们将为您提供一个完美的解决方案——自动归类并统一重命名视频文件。 首先&#xff0c;第一步&#xff0c;我们要进入文件批…

我一人全干!之vue3后台管理中的大屏展示。

使用大屏展示的时候有很多种场景&#xff0c;众多场景都是为了实现大屏自适应。 大屏&#xff0c;顾名思义&#xff0c;就是放在一个固定的屏幕上看的&#xff0c;即使你不做自适应&#xff0c;放在一个固定的屏幕上看也没啥问题&#xff0c;但是很多做大屏的是为了在PC端看&am…

【JAVA】Maven构建java-grpc-protobuf代码生成测试

本次是通过Maven工具构建Java测试工程&#xff0c;需要将原本通过gradle构建的项目需要通过maven构建加入公司代码库&#xff0c;通过Maven构建涉及到接下来要介绍的插件&#xff0c;总是发现pom.xml编译不通过&#xff0c;看到网上都是千篇一律的插件配置&#xff0c;自己就是…