论文阅读——DINOv
首先是关于给了提示然后做分割的一些方法的总结:
左边一列是prompt类型,右边一列是使用各个类型的prompt的模型。这些模型有分为两大类:Generic和Refer,通用分割和参考分割。Generic seg 是分割和提示语义概念一样的所有的物体,也就是提示是狮子,就把图片中所有狮子分割出来;Refer seg 是根据用户提示分割特定的物体,也就是提示是狗狗的一只耳朵,分割出来的也是狗狗的耳朵。可以看到,本文DINOv填补了视觉提示(Visual prompt)方法的空白。
DINOv可以做Generic和Refer。
Generic和Refer的例子:
这篇文章不是简单的prompt,而是in-context learning.
输入是一组图片-提示对(a set of reference image (Q) - visual prompt (A) pairs)输入的提示可以是mask、涂鸦(scribble)、框等,输出目标图片的mask。
DINOv的框架:
给一些参考图片:
相应的视觉提示:
要预测的图片,即目标图片:
视觉提示可以是masks, boxes, scribbles, points, etc.
参考图片可以和目标图片一样,这时退化为单图片视觉提示分割问题
DINOv主要由Enc、PromptEncoder、Decoder组成
Enc:vision encoder,提取图片特征
PromptEncoder:prompt encoder,结合图片特征和用户提供的提示特征来提取提示特征。
Decoder:基于分割查询和视觉提示特征产生mask和视觉概念。
输入参考图片和视觉提示,Enc提取图片特征Z,然后将Z和视觉提示输入到PromptEncoder提取参考视觉提示F(reference visual prompt F),也就是这一步是为了生成和图片特征相关的prompt。然后从F中采样出查询视觉提示特征Qp(sample the query visual prompt features Qp.)。公式表示如下:
除了觉提示特征Qp,还引入了分割查询Qs(segmentation queries Qs)作为候选提取(proposal extraction)。然后用共享解码器解码Qp和Qs,解码过程中和目标图片特征Z做了交叉注意力。公式表示:
Os是解码的分割查询特征(segmentation query features),Op是解码的目标视觉查询特征(target visual prompt features),M、B是预测的mask和box,Cg 和 Cr 是预测的通用分割和参考分割的匹配分数,这两个分数通过PromptClassifier计算Os和Op的相似性得到。
PromptClassifier:
通用分割任务的目标是将Os分类到不同的类别,当采用视觉提示的时候,差别在于Op作为类别embeddings的使用。
Np 和 Ns 分别是视觉提示和物体特征的数量。g是线性映射。相当于,得到的Cg矩阵,每一列代表一个物体特征,每一行代表一个类别,每一列都被分类到了某一行代表的那个类别。
对于参考分割任务,目标和通用分割任务不一样。参考分割任务中视觉提示用于识别目标图像中最匹配的实例,可以看做一个分类问题。(训练中目标图片和参考图片一样)
h是线性映射。
上面两个式子在实现中,对于通用分割任务是为每一个mask proposal 找到最适合的视觉提示,而参考分割任务相反,是给定一个视觉提示来匹配特定的mask proposal。也就是说,一个是给了mask proposal,然后从一堆视觉提示里找最合适的,另一个是给了视觉提示,然后从一堆mask proposal里面匹配特定,相应的。如上面DINOv框架图右边b、c图所示。
Visual Prompt Formulation:
DINOv的核心部分是视觉提示机制。
它提取与各种形式的视觉提示所指示的位置相对应的视觉特征,为了捕捉到细粒度视觉特征,使用了三层mask交叉注意力层(Mask Cross Attention Layer)。每层使用的是Enc提取的不同尺度的特征,使用视觉输入作为掩码,使用可学习的查询向量处理相应位置的特征得到视觉提示特征。
我理解的是,这应该是用的参考图片提取的不同尺度的特征提供更新prompt的特征,然后输入的prompt那个图片提供mask,再加一个可学习的提示查询通过从特征里面查询得到最终的提示。有时间再看代码查证。
Prompt Sampling
得到prompt之后做了一个采样,分别对通用分割和参考分割采用两种采样策略。
对参考分割,用“自参考”’的方法(“self-referring” approach),参考图像和目标图像相同,从一个实例中采样一个提示,并训练模型引用(生成的mask指向的)是同一个实例。好处是这种方法使我们能够利用大量的分割数据,如SA-1B,来有效地训练我们的模型。虽然训练时用的同一个实例,但是模型推理时可以泛化到使用不同目标图片,即cross-image referring。
对通用分割,训练阶段和推理阶段不太一样。训练阶段采样正负提示样本。所有图片同语义一类别的F归到一组,对每一组,随机的采样变量个数范围[1,N]的样本,然后使用一个聚合过程产生Qp。这个Qp会直接送入decoder,然后和目标图片交互融合计算一下得到最终的目标视觉提示Qp。采样的时候采用个数不确定是因为给定的一批图像可能不包括数据集中存在的所有语义类别,从而导致在训练过程中语义类别的数量可变。
上面通用分割训练过程采样伪代码如下:
对于通用分割的推理阶段采样策略,在推理阶段,以COCO数据集为例,基于训练阶段建立的所有语义类别的掩码提示,预提取相应的视觉提示特征。然后采用随机选择方法,为每个语义类别选择N(默认为16)个特征。这些选定的特征作为每个类别的代表性视觉提示功能。
简单来说应该是从训练集里面选出每个类别的视觉提示特征,然后从里面每个类别采样16个样本。
Decoder Query Formulation
分割查询也是两种类型。对于通用分割,是类似MaskDINO的可学习查询。
对于参考分割,使用和Semantic-SAM一样的交互式点查询。与Semantic-SAM类似,视觉提示(点或框)都被转换为锚框格式,然后每个视觉提示的位置将被编码为位置查询。每个位置查询都是重复的,然后与不同粒度的内容查询组合作为最终的分割查询。对于SA-1B上的训练,为了避免模型上过多的计算开销,我们选择性地将该视觉概念中包含的点的子集采样为正点查询。同时,我们从剩余区域中随机抽取一个子集作为负点。在推理阶段,我们在20×20均匀分布网格上对初始点位置查询进行采样,作为单个帧的初始点位置。
实验部分:
相关文章:

论文阅读——DINOv
首先是关于给了提示然后做分割的一些方法的总结: 左边一列是prompt类型,右边一列是使用各个类型的prompt的模型。这些模型有分为两大类:Generic和Refer,通用分割和参考分割。Generic seg 是分割和提示语义概念一样的所有的物体&am…...

JOSEF电流继电器 DL-33 整定范围0.5-2A 柜内安装板前接线
系列型号: DL-31电流继电器; DL-32电流继电器; DL-33电流继电器; DL-34电流继电器; 一、用途 DL-30系列电流继电器用于电机保护、变压器保护和输电线的过负荷和短路保护线路中,作为起动元件。 二、结构和原理 继电器系电磁式,瞬时动作…...

RCE绕过
1.[SCTF 2021]rceme 总结下获取disabled_funciton的方式 1.phpinfo() 2.var_dump(ini_get(“disable_functions”)); 3.var_dump(get_cfg_var(“disable_functions”)); 其他的 var_dump(get_cfg_var(“open_basedir”)); var_dump(ini_get_all()); <?php if(isset($_POS…...

Qt应用开发--国产工业开发板全志T113-i的部署教程
Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用,因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处: -…...
css 常用动画效果
css 常用动画效果 文章目录 css 常用动画效果1.上下运动动画2.宽度变化动画 1.上下运动动画 <div class"box"><div class"item"></div> </div>css .box {position: relative; }.item {position: absolute;width: 50px;height: 50…...

【读书笔记】微习惯
周日晚上尝试速读一本书《微习惯》,共七章看了下目录结构并不复杂,计划每章7-8分钟读完, 从20:15-21:00。读的时候,订下闹钟,催促着自己的进度。边读边记了一些要点和微信读书里面的划线。 第六章实践内容最为丰富&…...

Oracle SQL优化
1、书写顺序和执行顺序 在Oracle SQL中,查询的书写顺序和执行顺序是不同的。 1.1SQL书写顺序如下: SELECTFROMWHEREGROUP BYHAVINGORDER BY 1.2 SQL执行顺序 FROM:数据源被确定,表连接操作也在此步骤完成。 WHERE:对…...

C++实现ATM取款机
C实现ATM取款机 代码:https://mbd.pub/o/bread/ZZeZk5Zp 1.任务描述 要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456) 时,系统 能登录 ATM 取款机系统,用户可以按照以下规则进行: 查询…...

【数电笔记】11-最小项(逻辑函数的表示方法及其转换)
目录 说明: 逻辑函数的建立 1. 分析逻辑问题,建立逻辑函数的真值表 2. 根据真值表写出逻辑式 3. 画逻辑图 逻辑函数的表示 1. 逻辑表达式的常见表示形式与转换 2. 逻辑函数的标准表达式 (1)最小项的定义 (2&am…...

Gradio库的安装和使用教程
目录 一、Gradio库的安装 二、Gradio的使用 1、导入Gradio库 2、创建Gradio接口 3、添加接口到Gradio应用 4、处理用户输入和模型输出 5、关闭Gradio应用界面 三、Gradio的高级用法 1、多语言支持 2、自定义输入和输出格式 3、模型版本控制 4、集成第三方库和API …...

【BLE基础知识】--Slave latency设置流程及空中包解析
1、Slave latency基本概念 当BLE从设备对耗电量要求较高时,若需要节省耗电量,则可以通过设置Slave Latency参数来减少BLE从设备的耗电。 Slave Latency:允许Slave(从设备)在没有数据要发的情况下,跳过一定…...

数据结构之堆排序以及Top-k问题详细解析
个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞,评论,收藏。 一起努力 目录 1.前言 2.堆排序 2.1降序排序 2.2时间复杂…...

ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO
ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO 概述 上节 ESP32-Web-Server 实战编程-通过网页控制设备的 GPIO 讲述了如何通过网页控制一个 GPIO。本节实现在网页上控制多个 GPIO。 示例解析 前端设计 前端代码建立了四个 GPIO,如下死 GPIO 2 在前端的…...
说一说MySQL中的锁机制
说一说MySQL中的锁机制 按粒度大小从大到小分为 全局锁 全局锁 全局锁是对整个数据库的锁,最常用的全局锁就是读写锁 读锁 阻止其他用户更新数据,允许其他用户读数据写锁 阻止其他用户更新和读数据 修改一些大量的数据,并且不希望其他用户…...

C++笔试训练day_1
文章目录 选择题编程题 选择题 编程题 #include <iostream> #include <algorithm> #include <vector>using namespace std;int main() {int n 0;cin >> n;vector<int> v;v.resize(3 * n);int x 0;for(int i 0; i < v.size(); i){cin >&…...

详解Spring对Mybatis等持久化框架的整合
😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...
[Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
在使用 electron-packager 工具输出 linux 平台的 electron app 后,可以使用 electron-installer-debian 工具把 app 打包成供Ubuntu平台下安装的 debian 包。 electron-installer-debian是一个用于创建 Debian Linux(.deb)安装包的开发工…...

7.24 SpringBoot项目实战【审核评论】
文章目录 前言一、编写控制器二、编写服务层三、Postman测试前言 我们在 上文 7.23 已经实现了 评论 功能,本文我们继续SpringBoot项目实战 审核评论 功能。逻辑如下: 一是判断管理员权限,关于角色权限校验 在 7.5 和 7.6 分别基于 拦截器Interceptor 和 切面AOP 都实现过…...

Java实现动态加载的逻辑
日常工作中我们经常遇到这样的场景,某某些逻辑特别不稳定,随时根据线上实际情况做调整,比如商品里的评分逻辑,比如规则引擎里的规则。 常见的可选方案有: JDK自带的ScriptEngine 使用groovy,如GroovyClassLoader、Gro…...
数据库的设计规范
文章目录 第一范式(1NF):列不可再分 第二范式 (2NF):所有非主键字段,都必须 完全依赖主键,不能部分依赖 第三范式(3NF):所有非主键字段不能依赖于…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...