论文阅读——DINOv

news2025/1/22 19:00:40

首先是关于给了提示然后做分割的一些方法的总结:

左边一列是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均匀分布网格上对初始点位置查询进行采样,作为单个帧的初始点位置。

实验部分:

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

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

相关文章

开源四轴协作机械臂ultraArm激光雕刻技术案例!

注意安全事项 开始之前,请确保您已采取适当的安全措施,例如用于激光操作的防护眼镜、灭火器和通风良好的区域。 引言 随着科技的不断进步,激光雕刻技术已经成为当今制造行业中不可或缺的一部分。它以其高精度、高效率和广泛的材料适应性&…

Docker可视化工具Portainer(轻量)或者Docker容器监控之 CAdvisor+InfluxDB+Granfana(重量)

Docker轻量级可视化工具Portainer 是什么 Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 安装 官网 https://www.portainer.io/ https://docs.portainer.io/v/ce-2.9/start/instal…

springboot+vue实现websocket通信实例,进入页面建立连接

springbootvue实现websocket通信实例 进入页面建立连接 前端代码&#xff1a; <template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true" v-show&qu…

uniapp基础-教程之HBuilderX基础常识篇03

该内容为了大家更好的理解&#xff0c;将每个页面进行分离&#xff0c;单独创建项目&#xff0c;如在index中之写只写了一个搜索框&#xff0c;将其他页面分别放在HBuilderX目录中的components中&#xff0c;没有的可自行创建。 然后在components中创建轮播图新建一个swiper.v…

行情分析——加密货币市场大盘走势(11.27)

大饼周末震荡了两天&#xff0c;目前价格又回到了37300附近&#xff0c;最近多头多次上攻也不能涨出新高&#xff0c;那么就继续等待下跌即可。 空单策略&#xff1a;入场37300 加仓38000 止盈34000-33000 止损39000 以太现在在蓝色上涨趋势线上面&#xff0c;目前笔者一直持有…

5. 链表

内存空间是所有程序的公共资源&#xff0c;在一个复杂的系统运行环境下&#xff0c;空闲的内存空间可能散落在内存各处。我们知道&#xff0c;存储数组的内存空间必须是连续的&#xff0c;而当数组非常大时&#xff0c;内存可能无法提供如此大的连续空间。此时链表的灵活性优势…

k8s-deployment控制器 5

K8s控制器是Kubernetes&#xff08;简称k8s&#xff09;系统中一个重要的组成部分&#xff0c;它是一个管理Pod的中间层&#xff0c;可以创建和管理多个Pod副本&#xff0c;确保它们按照预定的数量和行为进行运行。 通过编写yaml文件将信息全部存到etcd中&#xff0c;控制器通…

红黑树底层原理

文章目录 什么是红黑树红黑树的性质插入叔叔存在且为红叔叔存在且为黑或叔叔不存在 调整总结右旋左旋旋转总结 什么是红黑树 红黑树也是一种二叉搜索树&#xff0c;只不过给这棵树上的节点带上了颜色&#xff0c;但是已经有了AVL树为什么还要搞出红黑树这个东西呢&#xff1f;…

【高效开发工具系列】MapStruct入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Node.js+Express+Nodemon+Socket.IO构建Web实时通信

陈拓 2023/11/23-2023/11/27 1. 简介 Websocket WebSocket是一种在单个TCP连接上提供全双工通讯的协议。特别适合需要持续数据交换的服务&#xff0c;例如在线游戏、实时交易系统等。 Websocket与Ajax之间的区别 Ajax代表异步JavaScript和XML。它被用作一组Web开发技术&…

Linux——使用命令查看文件和文件夹数量

目录 一、相关命令参数解析二、查看当前目录下的文件数量2.1 包含子目录中的文件2.2 不包含子目录中的目录 三、查看当前目录下的文件夹个数3.1 不包含目录中的目录3.2 包含目录中的目录 四、查看当前文件夹下叫某某的文件的数量实例 五、总结 一、相关命令参数解析 "&qu…

山西电力市场日前价格预测【2023-11-27】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-11-27&#xff09;山西电力市场全天平均日前电价为40.02元/MWh。其中&#xff0c;最高日前电价为293.07元/MWh&#xff0c;预计出现在17:45。最低日前电价为0.00元/MWh&#xff0c;预计出现…

逆袭之战,线下门店如何在“?”萧条的情况下实现爆发增长?

未来几年&#xff0c;商业走势将受到全球经济形势、科技进步和消费者需求变化等多种因素的影响。随着经济复苏和消费者信心提高&#xff0c;消费市场将继续保持增长&#xff0c;品质化、个性化、智能化等将成为消费趋势。同时&#xff0c;线上购物将继续保持快速增长&#xff0…

Java(119):ExcelUtil工具类(org.apache.poi读取和写入Excel)

ExcelUtil工具类(XSSFWorkbook读取和写入Excel)&#xff0c;入参和出参都是&#xff1a;List<Map<String,Object>> 一、读取Excel testdata.xlsx 1、new XSSFWorkbook对象 File file new File(filePath); FileInputStream fis new FileInputStream(…

TikTok数据分析:如何通过数字洞察提升内容质量?

引言 TikTok作为全球最热门的短视频平台之一&#xff0c;每天吸引着亿万用户发布和观看各类内容。在这个充满创意的舞台上&#xff0c;内容质量成为吸引关注和提高曝光度的关键。 而要达到这一目标&#xff0c;数字数据分析成为不可或缺的工具。本文将深入探讨如何通过TikTok数…

高端制造业中的通用性超精密3D光学测量仪器

超精密光学3D测量仪器具有高精度、自动化程度高、实时反馈和范围广等优势。它能够实现微米级别的精确测量&#xff0c;能够精确测量产品的尺寸、形状和表面粗糙度等&#xff0c;具有广泛的应用价值和重要意义。 超精密光学3D测量仪器配备多种传感器、控制器和计算机系统&#…

Docker智驾开发环境搭建

文章目录 背景1. 什么是容器?2. 什么是Docker?2.1 Docker架构3. 为什么要使用Docker?3.1 Docker容器虚拟化的好处3.2 Docker在开发和运维中的优势4. Docker容器与传统虚拟化的区别4.1 区别4.2 Docker的优势5. Docker的核心概念6. Docker在嵌入式开发中的应用7. docker实践参…

企业网络中的身份安全

随着近年来数字化转型的快速发展&#xff0c;企业使用的数字身份数量急剧增长。身份不再仅仅局限于用户。它们现在扩展到设备、应用程序、机器人、第三方供应商和组织中员工以外的其他实体。即使在用户之间&#xff0c;也存在不同类型的身份&#xff0c;例如属于IT管理员、远程…

IDEA中也能用postman了?

Postman是大家最常用的API调试工具&#xff0c;那么有没有一种方法可以不用手动写入接口到Postman&#xff0c;即可进行接口调试操作&#xff1f;今天给大家推荐一款IDEA插件&#xff1a;Apipost Helper&#xff0c;写完代码就可以调试接口并一键生成接口文档&#xff01;而且还…

OpenHarmony模块化编译

一、环境配置 OpenHarmony版本&#xff1a;OpenHarmony 4.0 Release 编译环境&#xff1a;WSL2 Ubuntu 18.04 平台设备&#xff1a;RK3568 二、配置hb OpenHarmony 代码构建有build.sh和hb两种方式: #方式一、build.sh ./build.sh --product-name rk3568 --ccache#方式二、…