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

news2024/11/19 21:16:36

一、论文简介

        论文讨论了大规模预训练产生的视觉基础模型在处理任意图像时的强大能力,这些模型不仅能够完成训练任务,其中间表示还对其他视觉任务(如检测和分割)有用。研究者们提出了一个问题:这些模型是否能够表示物体的三维结构。他们通过一系列实验,使用特定任务的探针和零样本推理程序来分析这些模型的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 np

def 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 np

def 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 distance

def 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数据。

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

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

相关文章

【论文阅读】WaDec: Decompiling WebAssembly Using Large Language Model

论文阅读笔记:WaDec: Decompiling WebAssembly Using Large Language Model 1. 来源出处 论文标题: WaDec: Decompiling WebAssembly Using Large Language Model作者: Xinyu She, Yanjie Zhao, Haoyu Wang会议: 39th IEEE/ACM International Conference on Automated Softwar…

【数字孪生】从Abaqus到Unity有限元应力云图

从abaqus到unity&#xff1a; 目录 1. 数据准备 1.1 abaqus中提取element rpt文件 element rpt文件格式&#xff1a; 1.2 abaqus中提取node rpt文件&#xff1a; node rpt文件格式&#xff1a; 2. python预处理以上数据&#xff1a; 2.1 提取node rpt中的节点坐标及应力…

一次需升级系统的wxpython安装(macOS M1)

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景&#xff1a;想在macos安装Robot Framework &#xff0c;显示pip3不是最新&#xff0c;更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…

MySQL45讲 第二十五讲 高可用性深度剖析:从主备原理到策略选择

文章目录 MySQL45讲 第二十五讲 高可用性深度剖析&#xff1a;从主备原理到策略选择一、MySQL 主备基础原理&#xff08;一&#xff09;主备关系与数据同步&#xff08;二&#xff09;主备切换流程 二、主备延迟分析&#xff08;一&#xff09;主备延迟的定义与计算&#xff08…

跨越网络边界:IPv6与零信任架构的深度融合

2024年&#xff0c;工信部发布了《关于开展“网络去NAT”专项工作 进一步深化IPv6部署应用的通知》&#xff0c;加速了国内网络由IPv4向IPv6的转型步伐。未来&#xff0c;各行各业将逐步去NAT&#xff0c;逐步向IPv6迁移。在此过程中&#xff0c;网络安全解决方案和产品能力将面…

Linux—ln(link files)命令使用方法(How to create links on Linux)

Linux—ln&#xff08;link files&#xff09;命令使用方法 在 Linux 系统中工作时&#xff0c;需要在不同的目录中使用相同的文件时&#xff0c;不必在每个目录下都复制一份文件&#xff0c;这样不仅浪费磁盘空间&#xff0c;还会导致文件管理上的混乱。 ln(link files) 便是…

我要成为算法高手-位运算篇

目录 1. 判断字符是否唯一2. 消失的数字3. 两整数之和4. 只出现一次的数字II5. 消失的两个数字 前情提要&#xff1a;如果对一些常见的二进制位运算不熟悉&#xff0c;请看这篇文章&#xff1a; 常见的位运算 1. 判断字符是否唯一 面试题 01.01. 判定字符是否唯一 - 力扣&…

1Panel 推送 SSL 证书到阿里云、腾讯云

本文首发于 Anyeの小站&#xff0c;点击链接 访问原文体验更佳 前言 都用 CDN 了还在乎那点 1 年证书钱么&#xff1f; 开句玩笑话&#xff0c;按照 Apple 的说法&#xff0c;证书有效期不该超过 45 天。那么证书有效期的缩短意味着要更频繁地更新证书。对于我这样的“裸奔”…

23种设计模式-访问者(Visitor)设计模式

文章目录 一.什么是访问者模式&#xff1f;二.访问者模式的结构三.访问者模式的应用场景四.访问者模式的优缺点五.访问者模式的C实现六.访问者模式的JAVA实现七.代码解释八.总结 类图&#xff1a; 访问者设计模式类图 一.什么是访问者模式&#xff1f; 访问者模式&#xff08;…

JavaScript——DOM编程、JS的对象和JSON

一、DOM编程 DOM(Document Object Model)编程&#xff1a;就是使用document对象的API&#xff0c;完成对网页HTML文档进行动态修改&#xff0c;以实现网页数据&#xff0c;和样式动态变化效果的编程。 (一)DOM获取元素的多种方法 1.查找元素的函数 getElementById("id值…

Pr:音频过渡

Adobe Premiere Pro 自带一组共三个音频过渡 Audio Transitions效果。 对音频剪辑之间应用交叉淡化 Crossfade过渡&#xff0c;操作方式类似于应用视频过渡效果。 对于交叉淡化&#xff0c;要保证前剪辑的出点之后及后剪辑的入点之前有足够的预留内容&#xff08;也称“手柄”&…

大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 拦截器实现 Java

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

stm32启动过程解析startup启动文件

1.STM32的启动过程模式 1.1 根据boot引脚决定三种启动模式 复位后&#xff0c;在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。BOOT0 为专用引脚&#xff0c;而 BOOT1 则与 GPIO 引脚共用。一旦完成对 BOOT1 的采样&#xff0c;相应 GPIO 引脚即进入空闲状态&#xff0c;可用于…

如何在项目中用elementui实现分页器功能

1.在结构部分复制官网代码&#xff1a; <template> 标签: 这是 Vue 模板的根标签&#xff0c;包含所有的 HTML 元素和 Vue 组件。 <div> 标签: 这是一个普通的 HTML 元素&#xff0c;包裹了 el-pagination 组件。它没有特别的意义&#xff0c;只是为了确保 el-pagi…

15-大模型 RAG 经验篇

一、LLMs 已经具备了较强能力了&#xff0c;存在哪些不足点? 在 LLM 已经具备了较强能力的基础上&#xff0c;仍然存在以下问题&#xff1a; 幻觉问题&#xff1a;LLM 文本生成的底层原理是基于概率的 token by token 的形式&#xff0c;因此会不可避免地产生"一本正经…

数据结构-二叉树及其遍历

🚀欢迎来到我的【数据结构】专栏🚀 🙋我是小蜗,一名在职牛马。🐒我的博客主页​​​​​​ ➡️ ➡️ 小蜗向前冲的主页🙏🙏欢迎大家的关注,你们的关注是我创作的最大动力🙏🙏🌍前言 本篇文章咱们聊聊数据结构中的树,准确的说因该是只说一说二叉树以及相…

Iview DatePicker 仅允许选择当前月份及以后的月份

iview DatePicker之前月份禁用且下月可用 html代码 <DatePicker type"month" :options"options4" :value"dialogForm.estimatedStartTimeWithCreate" on-change"monthTime($event, loadDateStart)" placeholder"请选择时间&q…

r-and-r——提高长文本质量保证任务的准确性重新提示和上下文搜索的新方法可减轻大规模语言模型中的迷失在中间现象

概述 随着大规模语言模型的兴起&#xff0c;自然语言处理领域取得了重大发展。这些创新的模型允许用户通过输入简单的 "提示 "文本来执行各种任务。然而&#xff0c;众所周知&#xff0c;在问题解答&#xff08;QA&#xff09;任务中&#xff0c;用户在处理长文本时…

【GPTs】Ai-Ming:AI命理助手,个人运势与未来发展剖析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Ai-Ming主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; defcomplete_sexagenary&#xff08;年&a…

ubuntu24.04网卡配置

vim /etc/netplan/01-netcfg.yaml /24表示子网掩码的长度。这种表示法称为CIDR&#xff08;无类别域间路由&#xff09;记法。CIDR记法将IP地址和它们的子网掩码合并为一个单一的值&#xff0c;其中斜杠/后面的数字表示子网掩码中连续的1的位数。 对于/24&#xff1a; 24表示…