论文阅读:How Do Neural Networks See Depth in Single Images?

  • 是由Technische Universiteit Delft(代尔夫特理工大学)发表于ICCV,2019。
  • 这篇文章的研究内容很有趣,没有关注如何提升深度网络的性能,而是关注单目深度估计的工作机理。

What they find?

  • 所有的网络都忽略了物体的实际大小,而关注他们的垂直位置。而使用这些垂直位置需要知道相机的位姿。
  • 然而我们发现网络只部分识别了相机俯仰角(pitch)和滚动角(roll)的变化。小的俯仰角变化都会干扰估计出的深度。
  • 使用垂直图像位置允许网络估计对任意障碍物的深度-甚至是没有出现在训练集中的物体。

Introduction

  • 当只有一张图像可用时,很难应用Epipolar Geometry, 算法需要依靠图像线索(Pictorial cues):纹理梯度和已知物体的面积。
  • 人类感知深度只要依靠的线索可以总结为:
    • 在图像中位置:遥远的物体趋向于位于地平线。
    • 遮挡:遮挡提供了深度的顺序,但不提供距离信息。
    • 纹理密度:距离较远的纹理表面在图像中看起来更细粒度。
    • 线性预测:物理世界中的直线、平行线似乎在图像中汇合。
    • 目标的面积:越远的目标越小。
    • 阴影和光照:当表面正常指向光源时,表面显得更亮。光通常被认为是来自于上面的光。阴影通常提供关于表面内深度变化的信息。
    • 焦点模糊:在焦平面前或后的物体会变模糊。
    • 空中视角(天空):非常远的物体(公里)的对比度较小,呈现出蓝色。
  • 论文认为只有在图像中的位置和目标的面积会影响KITTI单目深度估计。

Position vs. apparent size

在这里插入图片描述

  • 给定目标的真实世界尺寸和在图像中的尺寸h,距离可以计算为:
    在这里插入图片描述
  • 在Kitti数据集中每一种类的高度可以认为是固定的。所以网络有可能是用目标的表观大小估计其距离。
  • 同时,网络也可以利用物体与地面的接触点位置y估计深度。给定相机距离地面的高度Y,距离可以估计为:
  • 这个方法不需要目标的真实高度H,需要网络学习 ( Y , y h ) (Y,y_h) (Y,yh)

在这里插入图片描述

在这里插入图片描述

  • 从试验结果看,网络对于距离的判断是由目标的垂直位置决定了。
  • 而且当把图像进行垂直方向上的裁剪,估计出的深度也被明显改变了。所以网络并不是在找地平线而是在找垂直图像位置。而表观尺寸的变化有可能并不影响深度估计。
  • 所有四个网络都表现出相似的行为,这也表明这是一个一般的属性,并不强烈依赖于网络架构或训练机制(半监督,双目,视频监督)

Camera Pose: constant or estimated?

  • 对于使用垂直位置作为深度估计的线索,基本假设是知道相机的位姿。
  • 有两种方式确定相机位姿:1.寻找地平线或者消失点。2.或者假设其恒定。
  • 如果是第二种假设,则在一个相机上训练的深度网络就不能直接迁移到另一个相机。
  • 论文中的实验证明(图5,图6):所有的网络都能够检测到摄像机俯仰角的变化,但地平线的改变被轻视了。 总结一下就是改变相机俯仰角和地平线位置对深度估计有影响但是影响不大。
    在这里插入图片描述
    在这里插入图片描述

Camera roll

  • 所有网络都能够检测相机的翻滚角,但是被严重低估了。
    在这里插入图片描述

Obstacle recogition

  • 正确估计目标的深度,网络要做的是:1).对于训练集中出现的物体进行记忆(车辆)。2).寻找目标与地面的接触点。3).寻找目标的轮廓并填充区域。

Color and Texture

  • 目标的颜色并不强烈影响深度估计,但如果纹理被移除,性能会大减。梯度纹理对深度估计的影响更大。

在这里插入图片描述

Shape and contrast在这里插入图片描述

  • (图12)目标不需要一个相同的形状和纹理被网络识别。

Reference

[1] Dijk, T. V., & Croon, G. D. (2019). How do neural networks see depth in single images?. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 2183-2191).

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

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

相关文章

使用 openssl 进行哈希计算

版本&#xff1a;OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) SHAx 系列 如果对象完全存储在内存中&#xff0c;可以使用以下函数&#xff1a; #include <openssl/sha.h>unsigned char *SHA1(const unsigned char *data, size_t count, unsigned…

C#_WaitAll、WhenAll、async及await

Task.WhenAll、Task.WaitAll Task.WhenAll 和 Task.WaitAll 都是用于等待多个任务完成的方法&#xff0c;但它们之间有一些重要的区别。 返回类型: Task.WhenAll: 返回一个 Task 对象&#xff0c;该对象表示所有输入任务的联合任务。 Task.WaitAll: 没有返回值。它是一个同步方…

WEB APIs (4)

日期对象 实例化 代码中出现new关键字&#xff0c;创建时间对象 得到当前时间&#xff1a; const date new Date&#xff08;&#xff09; 获得指定时间&#xff1a; const date new Date&#xff08;‘2022-5-1’&#xff09; 方法作用说明getFullYear()获取年份获取…

前端算法题——字符串中的第一个唯一字符

前言 给定一个字符串&#xff0c;找到它的第一个不重复的字符&#xff0c;并返回它的索引。如果不存在&#xff0c;则返回 -1。 示例&#xff1a;s "leetcode" 返回 0s "loveleetcode" 返回 2// 提示&#xff1a;你可以假定该字符串只包含小写字母思路…

搜索专项---DFS之连通性模型

文章目录 迷宫红与黑 一、迷宫OJ链接 本题思路:DFS直接搜即可。 #include <iostream> #include <cstring> #include <algorithm>constexpr int N110;int n; char g[N][N]; bool st[N][N]; int x1, y1, x2, y2;int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, …

Python学习笔记——自定义函数(将函数存储在模块中及总结)

编写函数不仅可以做到代码复用&#xff0c;使用函数的一个特别好的优点是可将代码块与主程序分离。另外&#xff0c;不仅可以通过给函数指定描述性的名称&#xff0c;能让程序容易理解&#xff0c;还可以把函数存储在成为模块的独立文件中&#xff0c;再将模块导入&#xff08;…

数仓面试题整理(1)

什么是数据仓库&#xff1f; 答&#xff1a;数据仓库是一个集中式数据存储系统&#xff0c;用于集合、存储和分析来自不同源的大量数据。它支持决策制定过程&#xff0c;通过提供历史数据的统一视图&#xff0c;帮助组织进行复杂的查询和分析。 数据湖与数据仓库有什么区别&am…

2024 高级前端面试题之 计算机通识(基础) 「精选篇」

该内容主要整理关于 计算机通识&#xff08;基础&#xff09; 的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 计算机基础精选篇 一、网络1.1 UDP1.2 TCP1.3 HTTP1.4 DNS 二、数据结构2.1 栈2.2 队列2.3 链表2.4 树2.5 堆 三、算法3.1 时…

使用 Nuxt 构建简单后端接口及数据库数据请求

写在前面 本文主要为大家介绍&#xff0c;如何使用 Nuxt 框架实现一个简单的后端接口&#xff0c;并且从数据库中请求数据返回给前端。 实现 创建 serverMiddleware 文件夹 首先我们新建一个名字为 serverMiddleware 文件夹用来存储接口相关信息 目录结构如下&#xff1a;…

汽车电子论文学习--电动汽车电机驱动系统动力学特性分析

关键重点&#xff1a; 1. 汽车的低速转矩存在最大限制&#xff0c;受附着力限制&#xff0c;因路面不同而变化。 2. 起步加速至规定转速的时间可以计算得到&#xff1a; 3. 电机额定功率的计算方式&#xff1a; 可以采取最高设计车速90%或120km/h匀速行驶的功率作为电机额定功…

如何区分期权,很简单WeTrade众汇教你两招

二元期权有许多变体&#xff0c;很多投资者难以区分外汇和二元期权&#xff0c;很简单WeTrade众汇教你两招1秒快速区分&#xff0c;我们可以根据这两个最重要的参数进行区分: 1)合同类型的范围 只有一种外汇合约。当然&#xff0c;你可以交易货币对、差价合约、商品或证券&am…

脉冲电流源测试旁路二极管热性能方案

热斑效应&#xff1a;太阳能电池一般是由多块电池组件串联或并联起来。串联支路中可能由于电池片内部缺陷或者外部遮挡&#xff0c;将被当作负载消耗其他有光照的太阳电池组件所产生的能量。被遮蔽的太阳电池组件此时会严重发热而受损。 旁路二极管&#xff1a;是指并联于太阳能…

Nginx 403 forbidden

1、没有权限问题 Linux系统中如果Nginx没有web目录的操作权限&#xff0c;也会出现403错误。解决办法&#xff1a;修改web目录的读写权限&#xff0c;或者是把Nginx的启动用户改成目录的所属用户&#xff0c;重启Nginx即可解决。(windows 下则用管理员启动nginx即可)。 chmod -…

Android全新UI框架之Jetpack Compose入门基础

Jetpack Compose是什么 如果有跨端开发经验的同学&#xff0c;理解和学习compose可能没有那么大的压力。简单地说&#xff0c;compose可以让Android的原生开发也可以使用类似rn的jsx的语法来开发UI界面。以往&#xff0c;我们开发Android原生页面的时候&#xff0c;通常是在xml…

第2.4章 StarRocks表设计——分区分桶与副本数

目录 一、数据分布 1.1 概述 1.2 数据分布方式 1.2.1 Round-Robin 1.2.2 Range 1.2.3 List 1.2.4 Hash 1.3 StarRocks的数据分布方式 1.3.1 不分区 Hash分桶 1.3.2 Range分区Hash分桶 三、分区 3.1 分区概述 3.2 创建分区 3.2.1 手动创建分区 3.2.2 批量创建分区…

OJ_不连续1的子串

题干 C实现 #include<iostream> using namespace std;int f0(int n); int f1(int n);int main() {int n;cin >> n;cout << f0(n) f1(n);return 0; }int f0(int n) {//末尾为0的串if (n 1) {return 1;}else {return f0(n - 1) f1(n - 1);} } int f1(int n…

linux系统离线安装docker服务教程

1、下载、上传docker-20.10.0.tgz压缩包至服务器&#xff0c;其中&#xff0c;docker下载地址https://download.docker.com/linux/static/stable/x86_64/ 2、新建安装docker脚本docker-install.sh #!/usr/bin/env bash tar -xvf docker-20.10.0.tgzcp docker/* /usr/bin/cat …

多维时序 | Matlab实现TCN-RVM时间卷积神经网络结合相关向量机多变量时间序列预测

多维时序 | Matlab实现TCN-RVM时间卷积神经网络结合相关向量机多变量时间序列预测 目录 多维时序 | Matlab实现TCN-RVM时间卷积神经网络结合相关向量机多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现TCN-RVM时间卷积神经网络结合相关向量机…

【STM32】如何将版本信息编进代码?

文章目录 参考const uint8_t cu8RteBspVerName[]__attribute__((section(".ARM.__at_0x8011DA6"))) = "SY_ECU_STM32H563_V1.0.0.0";

Linux--shell编程中有关数组的详细内容

文章中数组相关内容目录 一、定义数组 二、读取数组 ​​​​​​​​​​​​​​三、获取数组中的所有元素 ​​​​​​​​​​​​​​四、获取数组的长度 五、遍历数组​​​​​​​ 一、定义数组 数组中可以存放多个值。Bash Shell 只支持一维数组&#xff08;不…