论文阅读《NeRF-Supervised Deep Stereo》

news2024/11/19 8:40:15

论文地址:https://arxiv.org/pdf/2303.17603.pdf
源码地址:https://nerfstereo.github.io/


概述

   针对深度估计的标签数据难以获取,自监督方法在病态(遮挡、非朗伯面)区域的表现差,跨域泛化能力弱的问题,本文提出了一种新的框架用于在无标签条件下训练双目立体深度估计模型,该方法通过NeRF来对单目拍摄的图像序列进行有监督训练得到目标场景的神经辐射场,使用体渲染得到的立体三元组来补偿遮挡区域的信息,并将深度图作为代理标签(proxy label)对双目深度估计模型进行训练。实验结果表明,这种方式填补了无监督模型与有监督模型之间的Gap,比现有的自监督方法在Middleburry数据集上有30% 到 40% 的性能提升,并在 Zero-shot 泛化方面有较好的表现。
在这里插入图片描述
本文的主要贡献如下:

  • 提出一种新的范式,用神经渲染与无标签的图像序列来生成立体匹配模型训练数据。
  • 提出一种NeRF-Supervised训练框架,结合渲染得到的三元组和深度图来解决立体匹配中的遮挡问题,并增强了细节信息。
  • 在MiddleBurry数据集上取得了SOTA的 Zero-shot 泛化性能。

模型架构

在这里插入图片描述
  模型的整体框架如图2所示,首先在多个场景中使用多视图来训练神经辐射场,然后使用提渲染技术来获取立体图像与对应的标签深度图,最后用渲染的数据来训练立体匹配网络。

图像收集与位姿估计
  使用收集拍摄一系列照片,使用COLMAP估计图像的位姿信息用于NeRF的训练。
NeRF训练
  通过批量采样光线信息,基于 L 2 L_2 L2 损失对每个场景的训练一个独立的神经辐射场:
L r e n d = ∑ r ∈ R ∣ ∣ C ^ ( r ) − C ( r ) ∣ ∣ 2 2 (1) \mathcal{L}_{rend}=\sum_{r\in R}||\hat{C}(r)-C(r)||^2_2\tag{1} Lrend=rR∣∣C^(r)C(r)22(1)
立体图像对数据渲染生成

  1. 定义虚拟的相机外参 S = I ∣ b S=\mathbb{I}|\mathbf{b} S=Ib I \mathbb{I} I 3 × 3 3\times 3 3×3 的单位矩阵, b = ( b , 0 , 0 ) T \mathbf{b} = (b, 0, 0)^T b=(b,0,0)T表示只在 x x x 轴移动的平移向量。
  2. 基于任意视角的内参 E k = R k ∣ t k \mathbf{E}_k = \mathbf{R}_k|\mathbf{t}_k Ek=Rktk 来生成中间视角的图像 I c I_c Ic
  3. 基于内参 E k L = E k × S − 1 = R k ∣ ( t k − b ) \mathbf{E}_{k}^{\mathrm{L}}=\mathbf{E}_{k} \times \mathbf{S}^{-1}=\mathbf{R}_{k} \mid\left(\mathbf{t}_{k}-\mathbf{b}\right) EkL=Ek×S1=Rk(tkb) 来生成左视角图像 I l I_l Il
  4. 基于内参 E k R = E k × S = R k ∣ ( t k + b ) \mathbf{E}_{k}^{\mathrm{R}}=\mathbf{E}_{k} \times \mathbf{S}=\mathbf{R}_{k} \mid\left(\mathbf{t}_{k}+\mathbf{b}\right) EkR=Ek×S=Rk(tk+b) 来生成右视角图像 I r I_r Ir
  5. 根据渲染生成的深度 z r z_r zr 与虚拟内参获取视差 d r d_r dr:
    z ( r ) = ∑ i = 1 N T i ( 1 − exp ⁡ ( − σ i δ i ) ) σ i , d ( r ) = b ⋅ f z ( r ) , (2) z(\mathbf{r})=\sum_{i=1}^{N} T_{i}\left(1-\exp \left(-\sigma_{i} \delta_{i}\right)\right) \sigma_{i}, \quad d(\mathbf{r})=\frac{b \cdot f}{z(\mathbf{r})},\tag{2} z(r)=i=1NTi(1exp(σiδi))σi,d(r)=z(r)bf(2)
    其中 f f f 为 COLMAP 估计的焦距。

损失函数

  给定三元图像组 I l , I c , I r I_l,I_c, I_r Il,Ic,Ir,将 I c , I r I_c, I_r Ic,Ir 作为立体匹配网络的输入,使用NS损失来训练模型,NS损失包含以下两方面:
三元光度一致性损失

L ρ ( I c , I ^ c r ) = β ⋅ 1 − SSIM ⁡ ( I c , I ^ c r ) 2 + ( 1 − β ) ⋅ ∣ I c − I ^ c r ∣ (3) \mathcal{L}_{\rho}\left(I_{c}, \hat{I}_{c}^{r}\right)=\beta \cdot \frac{1-\operatorname{SSIM}\left(I_{c}, \hat{I}_{c}^{r}\right)}{2}+(1-\beta) \cdot\left|I_{c}-\hat{I}_{c}^{r}\right|\tag{3} Lρ(Ic,I^cr)=β21SSIM(Ic,I^cr)+(1β) IcI^cr (3)

其中 I ^ c r \hat{I}_{c}^{r} I^cr 为右视图基于预测的视差图warp回中间视图的图像。 SSIM ⁡ ( ⋅ ) \operatorname{SSIM}(\cdot) SSIM() 为结构一致性损失。结构一致性损失在遮挡区域无法起到很好的监督作用,如 I c I_c Ic 左边界的像素点,为此使用左视图 I l I_l Il沿着预测视差图投影到中间视图 I ^ c l \hat{I}_{c}^{l} I^cl,用于计算光度一致性损失 L ρ ( I ^ l c , I c ) \mathcal{L}_{\rho}\left(\hat{I}_{l}^{c}, I_{c}\right) Lρ(I^lc,Ic),用于补偿遮挡区域的预测误差。最后的三元光度损失函数为:
L 3 ρ ( I ^ l c , I c , I ^ r c ) = min ⁡ ( L ρ ( I ^ l c , I c ) , L ρ ( I c , I ^ r c ) ) (4) \mathcal{L}_{3 \rho}\left(\hat{I}_{l}^{c}, I_{c}, \hat{I}_{r}^{c}\right)=\min \left(\mathcal{L}_{\rho}\left(\hat{I}_{l}^{c}, I_{c}\right), \mathcal{L}_{\rho}\left(I_{c}, \hat{I}_{r}^{c}\right)\right)\tag{4} L3ρ(I^lc,Ic,I^rc)=min(Lρ(I^lc,Ic),Lρ(Ic,I^rc))(4)

在这里插入图片描述
  上图展示了遮挡区域(明亮部分)对计算三元光度一致性损失的影响,计算三元光度一致性损失时忽略遮挡,最后无纹理区域被掩膜 μ \mu μ 消除:

μ = [ min ⁡ L 3 ρ ( I ^ l c , I c , I ^ r c ) < min ⁡ L 3 ρ ( I l , I c , I r ) ] (5) \mu=\left[\min \mathcal{L}_{3 \rho}\left(\hat{I}_{l}^{c}, I_{c}, \hat{I}_{r}^{c}\right)<\min \mathcal{L}_{3 \rho}\left(I_{l}, I_{c}, I_{r}\right)\right]\tag{5} μ=[minL3ρ(I^lc,Ic,I^rc)<minL3ρ(Il,Ic,Ir)](5)

渲染视差损失
  计算匹配网络预测的视差图与NeRF渲染的视差图之间的 L 1 L_1 L1 损失
L disp  = ∣ d c − d ^ c ∣ (6) \mathcal{L}_{\text {disp }}=\left|d_{c}-\hat{d}_{c}\right|\tag{6} Ldisp = dcd^c (6)

  为了消除NeRF渲染视差图的伪影,使用 Ambient Occlusion(AO) 来计算渲染视差图的置信度:
A O = ∑ i = 1 N T i α i , α i = 1 − exp ⁡ ( − σ i δ i ) (7) \mathrm{AO}=\sum_{i=1}^{N} T_{i} \alpha_{i}, \quad \alpha_{i}=1-\exp \left(-\sigma_{i} \delta_{i}\right)\tag{7} AO=i=1NTiαi,αi=1exp(σiδi)(7)
使用两部分的加权损失作为最后的损失:
L N S = γ d i s p ⋅ η disp  ⋅ L disp  + μ ⋅ γ 3 ρ ⋅ ( 1 − η disp  ) ⋅ L 3 ρ (8) \begin{aligned} \mathcal{L}_{N S} & =\gamma_{d i s p} \cdot \eta_{\text {disp }} \cdot \mathcal{L}_{\text {disp }} +\mu \cdot \gamma_{3 \rho} \cdot\left(1-\eta_{\text {disp }}\right) \cdot \mathcal{L}_{3 \rho} \end{aligned}\tag{8} LNS=γdispηdisp Ldisp +μγ3ρ(1ηdisp )L3ρ(8)

η disp  = { 0  if  A O < t h A O  otherwise  (9) \eta_{\text {disp }}=\left\{\begin{array}{ll} 0 & \text { if } \mathrm{AO}<t h \\ \mathrm{AO} & \text { otherwise } \end{array}\right. \tag{9} ηdisp ={0AO if AO<th otherwise (9)


实验结果

在这里插入图片描述

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

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

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

相关文章

【jvm系列-06】深入理解对象的实例化、内存布局和访问定位

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

Vue——组件基础

目录 定义一个组件​ 使用组件​ 传递 props​ 监听事件​ 通过插槽来分配内容​ 动态组件​ DOM 模板解析注意事项​ 大小写区分​ 闭合标签​ 元素位置限制​ 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行单独的思考。在实际应…

Learning to summarize from human feedback导读(1)

总结&#xff1a; &#xff08;1&#xff09;生成摘要等模型&#xff0c;虽然有评估方法&#xff0c;但是人类总结的质量依旧难以相比 总结&#xff1a; &#xff08;1&#xff09;在各种NLP任务中&#xff0c;大规模语言模型的预训练以及取得了很高的性能 &#xff08;2&am…

PHP快速入门09-正则相关,附一定要学会的20个高频使用案例

文章目录前言一、正则表达式介绍二、正则高频案例20个2.1 检查字符串是否以字母开头2.2 检查字符串是否以数字开头2.3 检查字符串是否包含特定字符2.4 检查字符串是否以特定字符结尾2.5 检查字符串是否为纯数字2.6 检查字符串是否为纯字母2.7 检查字符串是否为有效的电子邮件地…

Bean对象的作用域和生命周期

文章目录&#xff1a;一.Bean的作用域 (1)Bean作用域的含义 &#xff08;2)Bean的6种作用域 二.Bean的生命周期&#xff08;1&#xff09;开辟内存空间 &#xff08;2&#xff09; 属性注入 &#xff08;3&#xff09;初始化 &#xff08;4&#xff09;使用Bean &#xff08;…

【CSDN|每日一练】运输石油

目录 运行结果题目描述输入描述:输出描述:示例代码结语运行结果 题目描述 某石油公司需要向A、B两地运输石油。 两地的需求量不同,而一辆车只能装载一定量的石油。 经过计算A地需要a辆车,B地需要b辆车运输才能满足需求。 现在一共有n辆车分布在各地,每辆车前往A、B两地…

HFSS一些使用技巧总结

1. 快捷键&#xff1a; CTRLH&#xff0c;隐藏选择的object、face 字母E&#xff0c;选择edge&#xff08;线&#xff09; alt左键双击九个区域&#xff0c;切换9个不同的视角&#xff08;与789组合使用) 2. 复制&#xff1a; 这样的复制好处在于&#xff1a;复制完的物体相…

使用Excel打造一款个人日志系统

写在前面 我很多年前看过晨间日志的奇迹这一本书&#xff0c;我深受启发&#xff0c;这本书的中心思想就是通过九宫格的方式写连体日志&#xff0c;自己可以方便查找而有而且有激情去完成这个日志&#xff0c;书中推荐的方法是使用excel写日志。但是自己总感觉用excel过于麻烦…

Java 源码中的 <? extends U>与 <? super L>是什么?

目录 ? extends U ? super L 总结一下: ? extends U 其中extends意思为&#xff1a;扩大;扩展;延长&#xff0c;&#xff1f;我们可以把他看作一个通配符&#xff0c;匹配所有的接口&#xff0c;U就一个泛型占位符&#xff0c;所以连在一起可联想到&#xff0c;从U…

前后端分离下的-SpringSecurity

前后端分离下的SpringSecurity 项目创建 使用SpringBoot初始化器创建SpringBoot项目 修改项目依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2…

电容笔和Apple pencil的区别是什么?好用电容笔推荐

Apple Pencil与目前市场上常见的电容笔最大的不同之处在于&#xff0c;普通电容笔并不具备苹果Pencil特有的重力压感&#xff0c;而仅仅是一种倾斜的压感。不过&#xff0c;其在其它方面的表现也很出色&#xff0c;与Apple Pencil相似&#xff0c;而且价格仅为200元。现在&…

项目管理中的冲突是什么?

项目管理中的冲突可以采取多种不同的形式。团队成员在创意愿景上存在分歧&#xff0c;与高层管理人员就期望和时间表发生争执&#xff0c;甚至与第三方供应商发生争执&#xff0c;都是项目冲突的主要例子。 冲突的常见原因是什么&#xff1f; 基于项目的组织内部冲突的典型原因…

【记录】Git连接gitee、新建仓库

学习记录1.连接gitee2.新建仓库1.连接gitee https://www.cnblogs.com/cokefentas/p/14727592.html git安装与卸载 apt-get install git apt-get remove gitgit配置 配置用户名 git config --global user.name "your name" 配置邮箱 git config --global user.email…

2023都说测试行业饱和了,为什么我们公司新招的的测试开了15K?

其实每年都有人说测试行业饱和了&#xff0c;但依旧有很多人找到了薪资不错的工作。来说说我的看法吧&#xff0c;我认为不用担心测试会饱和的问题&#xff0c;我们人口基数大&#xff0c;任何一个行业都有竞争&#xff0c;这是非常正常的情况。而且在有技术能力的人面前永远没…

Vue3通透教程【十一】初探TypeScript

文章目录&#x1f31f; 写在前面&#x1f31f; TypeScript是什么&#xff1f;&#x1f31f;TypeScript 增加了什么&#xff1f;&#x1f31f;TypeScript 初体验&#x1f31f; 写在最后&#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue …

什么是进程,线程,协程

一.进程1.简介计算机的核心是CPU&#xff0c;它承担了所有的计算任务&#xff1b;而操作系统是计算机的管理者&#xff0c;它负责任务的调度、资源的分配和管理&#xff0c;统领整个计算机硬件&#xff1b;应用程序则是具有某种功能的程序&#xff0c;程序是运行于操作系统之上…

十分钟验证一个轻量化车联网解决方案

智能网联汽车在车联网的应用上&#xff0c;通常是以智能传感器、物联网、GIS技术为基础&#xff0c;结合大数据、人工智能技术&#xff0c;通过OT&#xff08;Operation tecnology&#xff09;和IT&#xff08;information tecnology&#xff09;融合的方式&#xff0c;实现智能…

使用Ubuntu22.04搭建k8s环境和一些k8s基础知识

minikube搭建 基本环境 我使用virtualBox构建的ubuntu&#xff0c;选择4核4G内存minikube是一个K8S集群模拟器&#xff0c;可以快速构建一个单节点的集群&#xff0c;用于在本地测试和开发首先使用官方脚本安装docker curl -fsSL https://test.docker.com -o test-docker.sh…

nacos源码服务注册

nacos服务注册序言1.源码环境搭建1.1idea运行源码1.2 登录nacos2.服务注册分析2.1 客户端2.1.1容器启动监听2.1.2注册前初始化2.1.3注册服务2.2 服务端2.2.1注册2.2.2重试机制3.注意事项序言 本文章是分析的是nacos版本2.2 这次版本是一次重大升级优化&#xff0c;由原来&#…

【MySQL | 基础篇】02、MySQL 函数详解

目录 一、字符串函数 1.1 concat : 字符串拼接 1.2 lower : 全部转小写 1.3 upper : 全部转大写 1.4 lpad : 左填充 1.5 rpad : 右填充 1.6 trim : 去除空格 1.7 substring : 截取子字符串 1.8 案例 二、数值函数 2.1 ceil&#xff1a;向上取整 2.2 floor&#xff…