CVPR24《Neural Markov Random Field for Stereo Matching》

news2024/9/24 15:19:22

论文地址: https://arxiv.org/abs/2403.11193
源码地址: https://github.com/aeolusguan/NMRF


概述

  手工设计的MRF模型在传统的立体匹配中占据主导地位,但与端到端的深度学习模型相比,其建模准确性不足。尽管深度学习大大改进了MRF模型中的一元项(即单个像素的匹配成本),但整体准确性仍然受到手工设计的二元项(即像素对之间的平滑性约束)和消息传递机制的限制。为了克服这些问题,论文提出了一种神经MRF模型,使用数据驱动的神经网络来设计潜在函数和消息传递机制。这个模型基于变分推理理论构建,以避免收敛问题并保留立体MRF的图结构偏差。为了使推理变得可行并能很好地扩展到高分辨率图像,论文提出了DPN,可以自适应地修剪视差搜索空间。所提出的方法在KITTI 2012和2015排行榜上名列第一,且运行时间快于100毫秒。与之前的方法相比,显著降低了错误率,如在KITTI 2015上将D1指标降低了50%以上。该方法展示了强大的跨领域泛化能力,能够在合成数据集和真实数据集(如KITTI、Middlebury、ETH3D)之间取得良好效果,并能够恢复清晰的边缘。


模型架构

在这里插入图片描述

  本文的方法分为两个阶段,首先在低分辨率特征图上进行视差估计,然后在高分辨率特征图上进行细化。
局部特征提取 使用一个Siamese卷积神经网络从图像对中提取多层次特征。该网络由一系列残差块、实例归一化层和下采样层组成。低分辨率(1/8)的特征图用于初步视差估计,高分辨率(1/4)的特征图用于视差细化。

神经MRF模型

神经MRF模型公式

利用离散候选标签集为每个像素构建概率图。图的节点对应于候选标签,边则连接相邻像素的标签对,具体公式如下:
p ( { x v } , { z v } ) ∝ ∏ v ∈ V Φ ( x v , z v ) ∏ ( u , v ) ∈ E Ψ ( z u , z v ) (1) p(\{x_v\}, \{z_v\}) \propto \prod_{v \in V} \Phi(x_v, z_v) \prod_{(u,v) \in E} \Psi(z_u, z_v) \tag{1} p({xv},{zv})vVΦ(xv,zv)(u,v)EΨ(zu,zv)(1)
其中 v v v 对应于候选标签,边 ( u , v ) (u, v) (u,v) 连接相邻像素的标签对。函数 Φ , Ψ \Phi, \Psi Φ,Ψ 分别表示数据似然和二元潜在函数。 ∏ v ∈ V Φ ( x v , z v ) \prod_{v \in V} \Phi(x_v, z_v) vVΦ(xv,zv) 这一项表示每个节点的独立概率,乘积遍历了图中的所有节点 v v v ,它衡量了给定标签 z v z_v zv 的情况下,观测到的节点特征 x v x_v xv 的概率。节点 x v x_v xv 结合了左视图和右视图的匹配线索,通常通过一个卷积神经网络(CNN)进行特征提取和匹配计算。 ∏ ( u , v ) ∈ E Ψ ( z u , z v ) \prod_{(u,v) \in E} \Psi(z_u, z_v) (u,v)EΨ(zu,zv) 表示表示每对相邻标签 ( z u , z v ) (z_u, z_v) (zu,zv) 之间的相互作用,控制标签对之间的相互作用,通常根据标签差异和图像内容来定义。文中通过神经网络学习潜在函数,以捕获复杂的像素关系和几何信息, 乘积遍历了图中的所有边 ( u , v ) (u,v) (u,v), 它衡量了标签 ( z u , z v ) (z_u, z_v) (zu,zv)之间的相容性。该公式表示整个图模型的概率是所有节点的概率和边的概率的乘积。通过这种方式,可以捕捉到图像中各个像素之间的复杂关系。

嵌入均值场推理

嵌入均值场推理是一种技术,用于简化复杂概率图模型的推理过程。通过均值场理论,后验分布可以近似为每个节点的独立边缘分布的乘积。这使得推理变得更加高效。为了简化推理过程,本文利用均值场理论将后验分布近似为独立边缘分布的乘积,即:
p ( { z v } ∣ { x v } ) ≈ ∏ v q v ( z v ) (2) p(\{z_v\}|\{x_v\}) \approx \prod_vq_v(z_v)\tag{2} p({zv}{xv})vqv(zv)(2)
通过最小化近似后验分布和真实后验分布之间的KL散度,得到每个节点 v v v 的边缘分布 q v ( z v ) q_v(z_v) qv(zv) 的最优解。该解满足以下的固定方程:
log ⁡ ( q v ( z v ) ) = c v + log ⁡ ( Φ ( x v , z v ) ) + ∑ u ∈ N ( v ) ∫ R d q u ( z u ) log ⁡ ( Ψ ( z u , z v ) ) d z u , (3) \begin{aligned}\log(q_v(\mathbf{z}_v))&=c_v+\log(\Phi(\mathbf{x}_v,\mathbf{z}_v))+\sum_{u\in\mathcal{N}(v)}\int_{\mathbb{R}^d}q_u(\mathbf{z}_u)\log(\Psi(\mathbf{z}_u,\mathbf{z}_v))\mathrm{d}\mathbf{z}_u,\end{aligned}\tag{3} log(qv(zv))=cv+log(Φ(xv,zv))+uN(v)Rdqu(zu)log(Ψ(zu,zv))dzu,(3)

消息传递更新机制

将均值场推理中的复杂非线性依赖关系参数化为神经网络进行消息传递操作:
μ v t = f ~ ( x v , μ v t − 1 , { μ u t − 1 } u ∈ N ( v ) ) , (4) \mu_v^t=\tilde f(\mathbf{x}_v,\mu_v^{t-1},\{\mu_u^{t-1}\}_{u\in\mathcal{N}(v)}), \tag{4} μvt=f~(xv,μvt1,{μut1}uN(v)),(4)
在每一层 t t t ,节点 v v v 的嵌入 μ u ( t ) \mu_u^{(t)} μu(t) 是节点特征 x v x_v xv 和邻居节点嵌入 { μ u ( t − 1 ) } \{\mu_u^{(t-1)}\} {μu(t1)} 的函数。这个函数可以通过神经网络来表示。
消息传递通过以下步骤实现:
聚合邻居节点信息
m E → v = ∑ u ∈ N ( v ) α u v  (Value from  u )  (5) m_{E\to v} = \sum_{u \in N(v)} \alpha_{uv} \text{ (Value from } u \text{) }\tag{5} mEv=uN(v)αuv (Value from u(5)
( α u v ) (\alpha_{uv}) (αuv):邻居节点 u u u v v v 之间的注意力权重。值的聚合通过加权邻居节点的值来实现。
更新节点嵌入:
μ v ( t + 1 ) = MLP ( μ v ( t ) + m E → v ) (6) \mu_v^{(t+1)} = \text{MLP}(\mu_v^{(t)} + m_{E\to v})\tag{6} μv(t+1)=MLP(μv(t)+mEv)(6)
使用多层感知机(MLP)更新节点嵌入。
自注意力机制:
在神经消息传递过程中,使用自注意力机制来计算消息传递的权重。自注意力机制能够根据节点特征和邻居节点特征动态调整信息聚合的权重:
α u v = softmax ( q v ⊤ k u + r u v ) (7) \alpha_{uv} = \text{softmax}(q_v^\top k_u + r_{uv})\tag{7} αuv=softmax(qvku+ruv)(7)
r u v r_{uv} ruv: 位置编码。
视差估计:
通过解码节点嵌入 μ v \mu_v μv 来得到视差估计和对应的概率。

视差提议网络

为了使神经MRF推理在高分辨率图像上变得可行,并保持高效,文中提出了视差提议网络(DPN)。DPN的主要目的是自适应地修剪视差搜索空间,从而降低计算负担,同时保持良好的性能。 在立体匹配任务中,计算每个像素的视差是一项计算密集型任务。传统方法通常需要在大量的视差候选集中进行搜索,这对于高分辨率图像尤其耗时。因此,有效地减少视差候选集的大小,同时保证视差估计的准确性,是提升立体匹配效率的关键。DPN通过两个主要步骤实现高效的视差估计:候选标签提议和标签种子传播。

候选标签提议(Top k Label Seeds)

初始匹配得分计算:
DPN首先计算每个像素的初始匹配得分。具体来说,对于像素 o = ( i , j ) o = (i, j) o=(i,j),计算视差范围 [ 0 , z max ⁡ ] [0, z_{\max}] [0,zmax] 内的匹配得分:
C ( i , j , z ) = ⟨ F ~ L ( i , j ) , F ~ R ( i − z , j ) ⟩ (8) C(i, j, z) = \langle \tilde{F}_L(i, j), \tilde{F}_R(i - z, j) \rangle \tag{8} C(i,j,z)=F~L(i,j),F~R(iz,j)⟩(8)
其中, F ~ L \tilde{F}_L F~L F ~ R \tilde{F}_R F~R 分别是左图和右图的特征。
识别视差模式
通过1D最大池化和topk操作得到计算初始匹配得分,每个模式由其位置 p p p 和匹配特征 d d d 表示,统称为标签种子。

标签种子传播(Label Seeds Propagation)

特征增强:
初始标签种子可能在纹理少或被遮挡的区域表现不佳。DPN通过消息传递网络增强标签种子的匹配特征,以纠正错误的标签种子。

消息传递网络:
使用交叉窗口自注意力机制(Cross-shaped Window Self-Attention)在标签种子之间交换信息,高效聚合匹配特征。这种机制可以在长距离范围内有效地交换信息,处理遮挡和大面积纹理缺失区域。

视差估计:
通过对增强后的标签种子进行解码,DPN生成每个像素的候选标签集。每个像素的视差估计通过从候选标签集中选择最佳标签来确定。
视差提议网络(DPN)通过有效地修剪视差搜索空间,大大降低了计算复杂度,同时保证了高精度的视差估计。其核心步骤包括计算初始匹配得分、识别视差模式、增强标签种子特征和最终的视差估计。这种方法不仅提高了立体匹配的效率,还在处理高分辨率图像时表现出色。

视差细化

在细化过程中,首先需要在1/4分辨率的特征图上提取更多细节信息。这些高分辨率特征图由一个局部特征卷积神经网络(CNN)生成,包含丰富的纹理和边界信息,有助于视差细化。在高分辨率特征图上,利用神经马尔可夫随机场(Neural MRF)模型进行推理。这一过程中,每个像素只有一个候选标签,因此推理过程更为高效。
视差残差: 通过解码节点嵌入,计算每个像素的视差残差。这些残差用于调整初步估计的视差值。
边际概率: 计算每个像素的边际概率分布,用于衡量视差估计的不确定性。
通过上述步骤得到的视差残差和边际概率,对初步视差图进行调整和细化。具体步骤如下:

  1. 初始化:使用初步视差估计作为细化过程的起点。
  2. 视差调整:根据计算得到的视差残差,逐像素调整初步视差值。
  3. 不确定性权重:利用边际概率分布,对视差调整过程进行加权,确保在高不确定性区域进行更谨慎的调整。

视差细化过程显著提高了视差估计的精度,尤其是在细节和边界区域。通过结合高分辨率特征图和自注意力机制,细化步骤能够有效地减少初步估计中的误差,为立体匹配任务提供了更加精确和可靠的视差图。


损失函数


实验结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

力扣SQL50 修复表中的名字 字符串函数

Problem: 1667. 修复表中的名字 👨‍🏫 参考题解 select user_id, CONCAT(UPPER(left(name, 1)), LOWER(RIGHT(name, length(name) - 1))) as name from Users order by user_id

SQL注入实例(sqli-labs/less-2)

0、初始网页 1、闭合方式判断 当没有闭合符号进行注释时,网页并没有报错,所以可以确定无闭合符号,为数值型注入 2、确定查询表的列数 可以确定列数小于4 ?id1 order by 4 -- 确定查询表的列数为3列 ?id1 order by 3 -- 3、确定回显位置…

MySQL系列之--关系型数据库以及SQL语句分类之DDL数据库和表的操作

文章目录 前言关系型数据库(RDBMS)关系型数据库的特点 MySQL数据模型SQL介绍基本语法规则SQL语句的分类DDL的介绍DDL的数据库操作DDL的表操作 前言 上一节MySQL系列之–详细安装教程和启动方法中介绍了MySQL如何安装,以及如何启动和客户端连接…

c++| c++11左右值引用,完美转发,可变参数模板,functional包装器,bind函数

c| c11的新特性 左,右值引用什么是左值,右值左值引用和右值引用右值引用解决什么问题呢?移动构造万能引用形式 完美转发格式 lambada表达式格式 可变参数模板可变参数模板实现打印不同类型emplace_push以list的emplace_back的实现举例包装器b…

新160个crackme - 020-cosh.3

运行分析 老规矩,需要破解Name和Serial PE分析 c程序,32位,无壳 静态分析&动态调试 ida查找关键字符串 分析关键函数,得出以下结论:Name、Serial每一位进行亦或计算,若计算结果相等则弹窗成功 算法分析…

吴恩达机器学习作业-ex7(主成分分析)

data1 导入库,读取数据,并进行可视化数据 import numpy as np import scipy.io as sio import matplotlib.pyplot as plt#读取数据 path "./ex7data1.mat" data sio.loadmat(path) # print(data.keys()) X data.get("X") # pri…

Python数据分析案例58——热门游戏数据分析及其可视化

案例背景 有哪个男生不喜欢玩游戏呢?就算上了班儿也要研究一下游戏以及热门的游戏。正好这里有个热门的游戏数据集,全球热门游戏数据集来做一下一些可视化的分析。 数据介绍 该文件包含一个数据集,详细说明了多个平台上的各种流行游戏。每个…

【Golang 面试 - 进阶题】每日 3 题(十五)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

Cesium 高德地图暗黑化

Cesium 高德地图暗黑化 高德电子地图实现暗黑效果 // 设置图层滤镜new ImageryLayerFilter({viewer: viewer,imageryLayer: imageryLayer,});

YOLOv5轻量化改进 | backbone | 结合MobileNetV4(包含多个结构和使用方式)

YOLOv5轻量化改进 | backbone | 结合MobileNetV4(包含多个结构) 本文介绍论文原理介绍网络代码多种yaml设置网络测试及实验结果<!-- 这里放入论文图片 --> &emsp;;本文介绍 本文给大家带来的改进机制是结合MobileNetV4骨干网络,其中来自2024.5月发布的MobileNetV4…

Pageadmin 漏洞教程

上传文件解压拿webshell 用哥斯拉&#xff0c;生成一个asp木马 这个就是我们生成的asp木马 不能直接上传 压缩为zip文件 上传 上传以后我们点击解压 就成功了 然后我们去访问 然后用哥斯拉访问 然后再点击添加 这样就成功了 成功进入

VSCode在windows系统下的配置简单版

参考链接 从零开始的vscode安装及环境配置教程(C/C)(Windows系统)_vscode搭建编译器环境-CSDN博客 vscode生成tasks.json、launch.json、c_cpp_properties.json文件_vscode生成launch.json-CSDN博客 自动生成配置文件简单方便&#xff01;&#xff01;&#xff01; 运行c代…

点击clean失败的操作Error running ‘demo4 [clean]‘ No valid Maven installation found.

错误情况&#xff1a; 解决方法&#xff1a; 重新调整自己的maven&#xff1a; 点击settings&#xff0c;搜索maven&#xff0c;点击进入&#xff1a; 选择自己的真实路径&#xff1a; 效果: 可以发现&#xff0c;运行clean成功&#xff01;

Useless Fan

灵感来源于老外的一个作品&#xff0c;但是只有风扇功能&#xff0c;除了袖珍感觉没啥用。 在淘宝上十几块买了一堆原件&#xff0c;于是手痒&#xff0c;自己手搓了一个&#xff0c;设计了个简单的3D打印外壳。 包括3大功能&#xff1a;风扇&#xff0c;充电宝&#xff08;2…

Spring MVC 快速入门指南及实战演示

1、SpringMVC简介 1.1 背景 Servlet属于web层开发技术&#xff0c;技术特点&#xff1a; 1. 每个请求都需要创建一个Servlet进行处理 2. 创建Servlet存在重复操作 3. 代码灵活性低&#xff0c;开发效率低 是否有技术方案可以解决以上问题&#xff1f; 1.2 SpringMVC概述 Sp…

C#加班统计次数

C#加班统计次数 运行环境&#xff1a;vs2022 .net 8.0 社区版 1、用C#语言&#xff1b;2、有界面上传Excel文件; 3、对Excel列&#xff08;部门、人员姓名、人员编号、考勤时间 &#xff09;处理&#xff1a;&#xff08;1&#xff09;按人员编号、考勤日期分组且保留原来字段&…

矩阵快速幂优化dp

之前一直想找一个矩阵快速幂的专题&#xff0c;但是都没有题目来总结&#xff0c;今天就来水一下 这个题目的转移方程我们可以很快想出来&#xff0c;但是我们如何作为我们矩阵快速幂的敲门砖呢&#xff1f; 有一个问题要注意的是我们由于这题不是取模的&#xff0c;可能会溢出…

网络安全-渗透测试工具及插件介绍和使用方法

1、Burp Suite Burp Suite 是用于攻击web 应用程序的集成平台。 是一款广泛使用的网络安全工具套件&#xff0c;主要用于测试Web应用程序的安全性。它可以帮助安全研究人员、渗透测试人员和开发人员发现和利用Web应用程序中的安全漏洞。 &#xff08;1&#xff09;下载和安装&a…

QuanTide-weekly第1期

本周Po文 这周我们共发表5篇文章。《基于 XGBoost 的组合策略…》等两篇详细讲解了机器学习构建组合策略的框架和常见问题。 文章要点与结论&#xff1a; 通过两阶段式方案实现多因子、多资产的组合策略构建。第一阶段基于XGBoost构建多个多因子单标的模型&#xff0c;第二阶…

安卓基本布局(下)

TableLayout 常用属性描述collapseColumns设置需要被隐藏的列的列号。shrinkColumns设置允许被伸缩的列的列号。stretchColumns设置允许被拉伸的列的列号。 <TableLayout xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/TableL…