当前位置: 首页 > news >正文

《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性

一、论文简介

        论文讨论了大规模预训练产生的视觉基础模型在处理任意图像时的强大能力,这些模型不仅能够完成训练任务,其中间表示还对其他视觉任务(如检测和分割)有用。研究者们提出了一个问题:这些模型是否能够表示物体的三维结构。他们通过一系列实验,使用特定任务的探针和零样本推理程序来分析这些模型的3D感知能力,并发现当前模型存在一些限制。在论文《Probing the 3D Awareness of Visual Foundation Models》中,作者探讨了视觉基础模型(visual foundation models)对于三维(3D)结构的意识,特别是它们在多视图一致性(multiview consistency)方面的表现。

二、实验设置

        评估模型:包括多种大规模预训练的视觉模型,如MAE、iBOT、DeiT III、CLIP、MiDaS、DINO、DINOv2、StableDiffusion、SigLIP和SAM等。

        数据集:使用Paired ScanNet数据集评估室内场景的表现,以及NAVI数据集评估单个对象的表现。

输入:

  1. 展示了同一对象或场景,但是从不同的视角拍摄的一对图像。例如,在NAVI数据集中,可能包括同一物体在不同环境中的视图;在Paired ScanNet数据集中,则可能是室内场景的不同视角。
  2. 能够从图像中提取特征预训练的视觉模型。在实验中,研究人员使用了多种不同的预训练模型,如DINO、CLIP、StableDiffusion等。

输出

  1. 对应点匹配:对于每一对图像,输出是两图像间像素点的对应关系。具体来说,就是识别出在两个不同视图中代表同一3D点的像素点对。
  2. 召回率:评估模型识别对应点的准确性,通过计算召回率来衡量,即正确匹配的对应点占所有可能对应点的比例。

三、实验步骤

        1.特征提取(密度特征图)

        使用预训练的视觉模型(如DINO、CLIP、StableDiffusion等)的冻结特征(不改变模型权重),从每张图像中提取密集特征图。这些特征基于深度学习架构,如卷积神经网络(CNN)或视觉变换器(ViT),能够捕捉图像中的视觉信息,如纹理、颜色和形状等。特征提取通常在模型的中间层进行,以获得对图像内容的丰富表示。

        2.特征匹配(像素之间的匹配)

        不依赖于传统的特征点检测和描述符匹配,而将两个视图的密集特征图进行比较,以找到相互之间的对应点。这通常涉及到计算特征之间的相似度,如通过余弦相似度等度量。对于每个像素点,找到另一个视图中与之最相似的像素点,从而建立对应关系。

        3.对应点优化:

        给定同一对象或场景的两个视图,目标是识别在不同视图中代表同一3D点的像素点。为了提高匹配的准确性,可能需要进一步的优化步骤,如空间变换模型(Homography)或基础矩阵(Fundamental Matrix)的估计,这些模型能够考虑几何约束来优化对应点。使用几何一致性检查来移除错误的匹配,如RANSAC算法,它能够识别并排除异常值。

        4.性能评估:

        通过地面真实数据(ground truth)来比较预测的对应点。,计算召回率来评估匹配的准确性,即预测的对应点中有多少比例与真实对应点在一定距离阈值内。

        5.结果分析:

分析模型在不同视图变化条件下的性能,如小视图变化和大视图变化。通过定性和定量的结果来评估模型的3D意识能力,即它们是否能够准确地识别和匹配不同视图中的相同3D点。

四、相关示例代码分析

        以下提供一些简单的Python示例代码以展示多视图一致性的概念。这些示例将使用假设的数据和简单的逻辑来模拟多视图一致性的基本思想。

        1.简单的多视图一致性检查

        这个示例将检查两幅图像是否具有一致的3D结构表示。

import numpy as npdef check_multiview_consistency(image1, image2, threshold=0.5):"""检查两幅图像是否具有多视图一致性。:param image1: 第一幅图像的特征向量:param image2: 第二幅图像的特征向量:param threshold: 一致性阈值:return: 布尔值,表示是否一致"""# 计算两幅图像特征向量之间的余弦相似度dot_product = np.dot(image1, image2)norm1 = np.linalg.norm(image1)norm2 = np.linalg.norm(image2)similarity = dot_product / (norm1 * norm2)# 如果相似度大于阈值,则认为两幅图像具有多视图一致性return similarity > threshold# 假设的图像特征向量
image1_features = np.array([1, 2, 3, 4, 5])
image2_features = np.array([1.1, 2.1, 2.9, 4.1, 5.1])# 检查一致性
is_consistent = check_multiview_consistency(image1_features, image2_features)
print(f"The images are {'consistent' if is_consistent else 'not consistent'}.")

        2.多视图一致性的平均视图重建

        这个示例将展示如何使用多个视图的平均特征来重建一个一致的3D视图。

import numpy as npdef average_views(*views):"""计算多个视图的平均特征向量。:param views: 多个视图的特征向量:return: 平均特征向量"""# 计算平均特征向量average_feature = np.mean(views, axis=0)return average_feature# 假设的多个视图特征向量
view1 = np.array([1, 2, 3])
view2 = np.array([1, 2, 3.5])
view3 = np.array([1, 2, 2.5])# 计算平均视图
average_view = average_views(view1, view2, view3)
print("Average view features:", average_view)

        3.多视图一致性的特征匹配

        这个示例将展示如何在两个视图之间找到一致的特征点。

import numpy as np
from scipy.spatial import distancedef match_features(view1, view2, threshold=0.5):"""在两个视图中匹配特征点。:param view1: 第一个视图的特征点:param view2: 第二个视图的特征点:param threshold: 匹配阈值:return: 匹配的特征点对"""matches = []for feature1 in view1:for feature2 in view2:# 计算两个特征点之间的欧氏距离if distance.euclidean(feature1, feature2) < threshold:matches.append((feature1, feature2))return matches# 假设的两个视图特征点
view1_features = np.array([[1, 2], [3, 4], [5, 6]])
view2_features = np.array([[1.1, 2.1], [3.1, 4.1], [6, 7]])# 匹配特征点
matched_features = match_features(view1_features, view2_features)
print("Matched feature pairs:", matched_features)

        这些示例提供了多视图一致性的基本框架和概念。在实际应用中,您可能需要使用更复杂的算法和数据集来处理真实的图像和3D数据。

相关文章:

《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性

一、论文简介 论文讨论了大规模预训练产生的视觉基础模型在处理任意图像时的强大能力&#xff0c;这些模型不仅能够完成训练任务&#xff0c;其中间表示还对其他视觉任务&#xff08;如检测和分割&#xff09;有用。研究者们提出了一个问题&#xff1a;这些模型是否能够表示物体…...

使用pip安装esp32的擦除、写入固件的esptool库

esptool库可以为esp32的开发板烧录新的固件&#xff0c;但是如果为了烧录固件就要装esp-idf软件包&#xff0c;甚至需要用make编译安装很久&#xff0c;实在太费时费力了&#xff01; 好消息就是&#xff0c;esp提供了python的esptool库&#xff0c;这样只要使用pip安装上这个…...

传奇996_23——杀怪掉落,自动捡取,捡取动画

一、杀怪掉落 前置&#xff1a; 添加地图地图刷怪怪物掉落&#xff08;术语叫爆率&#xff0c;掉落叫爆率&#xff0c;而且文档上叫爆率&#xff09; 刷怪步骤&#xff1a;在\MirServer\Mir200\Envir\MonItems文件夹中建立以怪物名字为文件名的txt文件写法案例&#xff1a; …...

【030】基于51单片机甲醛检测报警器【Proteus仿真+Keil程序+报告+原理图】

☆、设计硬件组成&#xff1a;51单片机最小系统 ZE08-CH2O甲醛传感器AT24C02存储芯片LCD1602液晶显示按键设置蜂鸣器报警。 1、本设计采用STC89C52、AT89C52、AT89S52作为主控芯片&#xff1b; 2、采用ZE08-CH2O甲醛传感器采集环境中的甲醛浓度值&#xff0c;LCD1602实时显示…...

微信小程序:vant组件库安装步骤

前言&#xff1a;在微信小程序中引用vant组件报错&#xff0c;提示路径不存在&#xff0c;这很有可能是因为没有安装构建vant组件库导致。下面是我整理的安装vant组件库的步骤: 第一步&#xff1a;安装node.js(执行完第一步请重启小程序) 具体步骤请看链接&#xff1a;node.js…...

处理namespace问题:Namespace not specified for AGP 8.0.0

How do I fix ‘namespace not specified’ error in Android Studio? Namespace not specified for AGP 8.0.0 解决方案 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/androi…...

C++(Qt)软件调试---内存分析工具Heob(26)

C(Qt)软件调试—内存分析工具Heob&#xff08;26&#xff09; 文章目录 C(Qt)软件调试---内存分析工具Heob&#xff08;26&#xff09;[toc]1、概述&#x1f41c;2、环境配置&#x1fab2;3、功能说明4、使用Heob分析qt 程序内存泄漏&#x1f9a7;5、使用Heob检测qt 程序野指针…...

Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)

目录 一、String字符串类型介绍 二、常见命令 1、SET 2、GET 3、MGET 4、MSET 使用MGET 和 使用多次GET的区别 5、DEL 6、SETNX SET、SET NX和SET XX执行流程 7、INCR 8、INCRBY 9、DECR 10、DECYBY 11、INCRBYFLOAT 12、APPEND 13、GETRANGE 14、SETRANGE …...

Flutter中的Material Theme完全指南:从入门到实战

Flutter作为一款热门的跨平台开发框架&#xff0c;其UI组件库Material Design深受开发者喜爱。本文将深入探讨Flutter Material Theme的使用&#xff0c;包括如何借助Material Theme Builder创建符合产品需求的主题风格。通过多个场景和代码实例&#xff0c;让你轻松掌握这一工…...

Python 第三方库 PyQt5 的安装

目录 前言 PyQt5安装 不同操作系统PyQt5安装 一、Windows 系统 二、macOS 系统 三、Linux 系统&#xff08;以 Ubuntu 为例&#xff09; 安装 PyQt5 可能会遇到的问题 一、环境相关问题 二、依赖问题 三、网络问题 四、安装工具问题 五、运行时问题 六、环境配置问…...

CSS基础也要进行模电实验

盒子阴影 圆角边框已经介绍过哩&#xff0c;现在先介绍一下盒子阴影的效果如何实现 CSS3中新增了盒子阴影&#xff0c;可以使用box-shadow属性为盒子添加阴影 这是固定的语法&#xff1a; text-shadow: h-shadow v-shadow blur color; 它有这些可选的值&#xff1a; 哦。 …...

贴代码框架PasteForm特性介绍之markdown和richtext

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…...

3D Gaussian Splatting 代码层理解之Part3

最后,内容到达了高斯泼溅过程中最有趣的阶段:渲染!这一步可以说是最关键的,因为它决定了模型的真实性。然而,它也可能是最简单的。在本系列的Part 1和Part2,文章演示了如何将 Raw 3D椭球 转换为可渲染的格式,但现在我们实际上必须完成这项工作并渲染到一组固定的像素上。…...

Ceph 中PG与PGP的概述

在Ceph分布式存储系统中&#xff0c;PG&#xff08;Placement Group&#xff09;和PGP&#xff08;Placement Group for Placement purpose&#xff09;是两个至关重要的概念&#xff0c;它们共同决定了数据在集群中的分布和复制方式。以下是关于Ceph中PG和PGP关系的详细解释&a…...

已解决:spark代码中sqlContext.createDataframe空指针异常

这段代码是使用local模式运行spark代码。但是在获取了spark.sqlContext之后&#xff0c;用sqlContext将rdd算子转换为Dataframe的时候报错空指针异常 Exception in thread "main" org.apache.spark.sql.AnalysisException: java.lang.RuntimeException: java.lang.Nu…...

flutter字体大小切换案例 小字体,标准字体,大字体,超大字体案例

flutter字体大小切换案例 小字体&#xff0c;标准字体&#xff0c;大字体&#xff0c;超大字体案例 Android iOS设备带有选择记录 我的flutter项目版本 environment: sdk: ‘>3.4.4 <4.0.0’ 图片案例 pubspec.yaml 添加依赖 # 屏幕尺寸适配 https://github.com/OpenF…...

智慧建造-运用Trimble技术将梦幻水族馆变为现实【上海沪敖3D】

项目概述 西雅图水族馆耗资1.6亿美元对海洋馆进行扩建。该项目包括建造三个大型栖息地&#xff0c;每个建筑物几乎都没有直边&#xff0c;其中一个主栖息地由520立方米混凝土和355吨钢筋组成。特纳建筑公司的混凝土团队通过强大的贸易合作伙伴和创新的数字制造技术&#xff0c;…...

【NOIP提高组】计算系数

【NOIP提高组】计算系数 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定一个多项式 (ax by)^k &#xff0c;请求出多项式展开后 x^n y^m 项的系数。 输入 共一行&#xff0c;包含 5 个整数&#x…...

IDEA部署AI代写插件

前言 Hello大家好&#xff0c;当下是AI盛行的时代&#xff0c;好多好多东西在AI大模型的趋势下都变得非常的简单。 比如之前想画一幅风景画得先去采风&#xff0c;然后写实什么的&#xff0c;现在你只需描述出你想要的效果AI就能够根据你的描述在几分钟之内画出一幅你想要的风景…...

【阅读记录-章节1】Build a Large Language Model (From Scratch)

目录 1. Understanding large language models1.1 What is an LLM?补充介绍人工智能、机器学习和深度学习的关系机器学习 vs 深度学习传统机器学习 vs 深度学习&#xff08;以垃圾邮件分类为例&#xff09; 1.2 Applications of LLMs1.3 Stages of building and using LLMs1.4…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...