0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单目视觉深度估计测距的前生今世

jt_rfid5 来源:新机器视觉 2023-01-06 15:42 次阅读

最近通过深度学习直接从单目摄像头的图像预测/估计深度图的方法成为一个应用的热点,惹来不少争议。

深度学习直接通过大数据的训练得到/调整一个深度NN模型的参数,在当今计算能力日新月异的平台(GPU/FPGA/ASIC/Muli-core)上实现了计算机视觉/语音识别/自然语言处理(NLP)等领域一些应用的突破。但是专家们还是对今后深度学习的发展有些期待和展望,比如

非监督学习方法的引入减轻大数据标注的负担,比如GAN;

NN模型的压缩和精简以普及深度学习在移动终端甚至物联网终端的广泛应用;

还有深度学习能够更多的引入人类知识和简单可靠的推理,以减少“暴力“学习的误差和错误,比如贝叶斯理论,知识图谱,逻辑推理,符号学习,多任务联合训练和迁移学习等等。

这里从单目深度估计在计算机视觉中的发展历程,特别是最近在采用深度学习NN模型的实验中,总结一下如何通过深度学习求解传统视觉问题,并从中发现可借鉴的地方。

深度估计问题在计算机视觉领域属于3-D重建的一部分,即Shape from X。这个X包括stereo, multiple view stereo, silhouette, motion (SfM, SLAM), focusing, hazing, shading, occlusion, texture, vanishing points, ...前面5个都是多图像的输入,从空间几何,时域变换和焦距变化的关系推导深度距离。剩下的都是单目的输入。

如果把图像模糊度建模,下图是图像边缘模糊的响应模型,那么单目图像也能估算深度,即shape from defocusing。

4b8d4370-8d83-11ed-bfe3-dac502259ad0.png

4b9f02e0-8d83-11ed-bfe3-dac502259ad0.png

另外一个现象是大气散射 (Atmosphere scattering ) 造成的霾 (haze)提供了深度信息,即depth from haze,一般有天空被拍摄下来的图像,通过散射模型能够推断像素深度。这里给出的是图像亮度C和深度z之间计算的公式:C0是没有散射情况下的图像亮度值,S是天空的图像亮度值。

4badb7ea-8d83-11ed-bfe3-dac502259ad0.png

以上两个任务可认为是deconvolution问题,blind或者non-blind。

物体表面阴影的变化可以提供深度的信息,利用图像亮度和其中物体表面的形状之间的关系,即Shape from shading。和SFM一样,这是一个病态问题,需要附加约束条件,如物体表面的特性。SFS一般假设四种表面模型:纯Lambertian,纯镜面,混合和更复杂的模型。大部分情况下都是Lambertian,即均匀照明的表面从任何一个方向观察其亮度不变。其目标函数是一个积分,求解的算法比较复杂,类似有限元之类。

4bdfb268-8d83-11ed-bfe3-dac502259ad0.png

4c0d0f60-8d83-11ed-bfe3-dac502259ad0.png

纹理的变形提供了该纹理表面形状的线索。下图是一个示意流程图:

4c1fd4d8-8d83-11ed-bfe3-dac502259ad0.png

中间第三图是表面法向图,第四个才是深度图。纹理分割是必备的基础(估计是很难的一部分),此外求解这个shape from texture的优化问题,必须加上几个纹理元素(textels)约束条件:homogeneity,isotropy,stationary。

遮挡(occlusion)也是深度的一个线索,曲率(curvature)是其中的一个体现,即shape from curvature。isophote这个词指一种封闭的物体外轮廓,一般通过对图像灰度设门限可以得到,而它的曲率用来推导对应该门限的深度,见下图所示。门限在【0,255】范围变化就能得到最终叠加平均的深度图。分割仍然是一个求解遮挡的基础,要知道当时分割算法是计算机视觉很头疼的难题,俗称“chicken-and-egg"。

4c310564-8d83-11ed-bfe3-dac502259ad0.png

最后再说消失点,即某平面的一组平行线在透视投影下会聚的点。那么,它相应的平面就能得到深度图,如下图所示,在人工(特别室内)环境下可以推导深度图,沿着平行线的平面,靠近消失点的赋予大的深度值。该方法叫depth from geometrical perspective。

4c4da93a-8d83-11ed-bfe3-dac502259ad0.png

4c6879c2-8d83-11ed-bfe3-dac502259ad0.png

顺便提一下,在3维电视热的时期(2008-2010年左右)大家希望把以前拍摄的单目视频变成立体视频,给3-D电视提供更多的内容,包括3-D显示技术的普及(比如红绿眼镜)大家也想在家里share一些3-D的UGC。这个技术被称为2D-to-3D,通过深度图估计和虚拟立体视觉假设可以生成立体视频,其绘制技术称为DIBR,如下图:

4cca014c-8d83-11ed-bfe3-dac502259ad0.png

以上是典型的传统计算机视觉,需要加约束求解病态的优化问题。下面谈谈机器学习如何解决这个视觉问题:

最早看到用机器学习的方法是基于MRF的,把各种约束关系放在模型的data term和connectivity term求解。这是我看到Andrew Ng在计算机视觉方面的第一篇论文,发表在NIPS 2005年,当时他刚刚在斯坦福大学建立自己的研究组。

4cdd7376-8d83-11ed-bfe3-dac502259ad0.png

如果采用图像分割得到的super-pixels,可以得到更平滑的结果,该系统叫做Make3D。

4cf589de-8d83-11ed-bfe3-dac502259ad0.png

值得一提的是,当时CMU的博士生Derek Hoiem(后来UIUC教授)也在研究如何从单目图像中提取出景物的3-D结构,只是他采用机器学习方法在图像分割基础上做了一个简单的语义分割,即“ground”, “sky”, 和 “vertical”标注像素,然后采用简单的平面billboard做纹理映射后变成“pop-up”的3-D景物:

4e4f1bf6-8d83-11ed-bfe3-dac502259ad0.png

还有一种方法是把深度图估计变成一个搜索问题,即假设相似图像具有相似深度图:论文“2d-to-3d image conversion by learning depth from examples“

4e7326f4-8d83-11ed-bfe3-dac502259ad0.png

针对视频,可以利用optic flow做motion segmentation,那么修正上面的方法得到:微软论文“Depth Extraction from Video Using Non-parametric Sampling“

4e92d314-8d83-11ed-bfe3-dac502259ad0.png

另外一种改进是利用dictionary learning优化整个搜索过程:EBAY论文”Im2Depth: Scalable Exemplar Based Depth Transfer“

4ec7ae54-8d83-11ed-bfe3-dac502259ad0.png

下面我们看看深度学习是如何做的。

首先就是“暴力”方法直接喂数据训练模型:2篇论文

4edd584e-8d83-11ed-bfe3-dac502259ad0.png

4ef0cb9a-8d83-11ed-bfe3-dac502259ad0.png

有些方法开始考虑传统方法的结合,比如CRF:

4f427f58-8d83-11ed-bfe3-dac502259ad0.png

4f61dfce-8d83-11ed-bfe3-dac502259ad0.png

随后,双目立体视觉的空间约束被用作无监督学习单目的深度估计:三篇论文

4f7d50d8-8d83-11ed-bfe3-dac502259ad0.png

4f8e0982-8d83-11ed-bfe3-dac502259ad0.png

4fa81e94-8d83-11ed-bfe3-dac502259ad0.png

502eb440-8d83-11ed-bfe3-dac502259ad0.png

509cad1a-8d83-11ed-bfe3-dac502259ad0.png

自然地采用帧间运动为单目视频的深度估计提供帮助,实际上是双任务联合训练的例子:

50b847aa-8d83-11ed-bfe3-dac502259ad0.png

50cc394a-8d83-11ed-bfe3-dac502259ad0.png

51418bfa-8d83-11ed-bfe3-dac502259ad0.png

这是结合表面法向图的联合训练例子:GeoNet,Geometric Neural Network

51614ddc-8d83-11ed-bfe3-dac502259ad0.png

518415ba-8d83-11ed-bfe3-dac502259ad0.png

51f68c8a-8d83-11ed-bfe3-dac502259ad0.png

结合view synthesis也是利用几何约束和成像特性的工作:之前已经有文章直接通过Deep3D模型做单目到双目的合成,这里的工作只是最终结果是深度估计而不是图像。

5206a192-8d83-11ed-bfe3-dac502259ad0.png

521d9730-8d83-11ed-bfe3-dac502259ad0.png

这是结合运动和边缘信息的联合训练例子:

524281e4-8d83-11ed-bfe3-dac502259ad0.png

这个工作延续了以前利用分割提高深度估计的想法,只是假设上attention机制:

52a12280-8d83-11ed-bfe3-dac502259ad0.png

CVPR18 商汤科技的工作:“GeoNet--Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose”,和光流,姿态一起估计了,还是无监督学习方法。

52d39666-8d83-11ed-bfe3-dac502259ad0.png

谷歌最近的工作延续了camera motion的结合,同时加上了其中物体各自运动的信息:可以认为是将optic flow分成了camera ego motion和object motion的工作,和加入语义分割有类似的思路吧,文章发表在AAAI‘19.

52f131f8-8d83-11ed-bfe3-dac502259ad0.png

总之,深度学习在这个计算机视觉的传统问题上一开始是暴力的数据学习方法,慢慢地加入了传统方法的约束和先验知识,一定程度上缓解了数据标注的压力(pixel级别的ground truth是个挑战性的工作,structured light带来的数据多半是室内的,激光雷达的数据也存在“黑洞”现象),同时设计新的loss function同时多任务联合训练都能提升模型算法的性能。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机视觉
    +关注

    关注

    8

    文章

    1600

    浏览量

    45619
  • 深度学习
    +关注

    关注

    73

    文章

    5239

    浏览量

    119920
  • 知识图谱
    +关注

    关注

    2

    文章

    131

    浏览量

    7594

原文标题:【光电智造】单目视觉深度估计测距的前生今世

文章出处:【微信号:今日光电,微信公众号:今日光电】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    目视觉系统检测车辆的测距方法

    以前提过单目测距的问题,检测的障碍物2-D框加上摄像头的姿态和路面假设。以下根据公开发布的论文讨论具体的算法。
    发表于 01-11 10:47 180次阅读
    单<b class='flag-5'>目视觉</b>系统检测车辆的<b class='flag-5'>测距</b>方法

    LabVIEW开发自动驾驶的双目测距系统

    挑战,包括激光雷达、测距和双目视觉技术等。在当前的高级辅助驾驶技术(ADAS)中,双目视觉技术在距离检测方面表现出色,它可以精确地测量物体的距离,提供更客观的数据。 为了应对这一需
    发表于 12-19 18:02

    单目深度估计开源方案分享

    可以看一下单目深度估计效果,这个深度图的分辨率是真的高,物体边界分割的非常干净!这里也推荐工坊推出的新课程《单目深度估计方法:算法梳理与代码
    的头像 发表于 12-17 10:01 470次阅读
    单目<b class='flag-5'>深度</b><b class='flag-5'>估计</b>开源方案分享

    动态场景下的自监督单目深度估计方案

    自监督单目深度估计的训练可以在大量无标签视频序列来进行,训练集获取很方便。但问题是,实际采集的视频序列往往会有很多动态物体,而自监督训练本身就是基于静态环境假设,动态环境下会失效。
    发表于 11-28 09:21 278次阅读
    动态场景下的自监督单目<b class='flag-5'>深度</b><b class='flag-5'>估计</b>方案

    一种利用几何信息的自监督单目深度估计框架

    本文方法是一种自监督的单目深度估计框架,名为GasMono,专门设计用于室内场景。本方法通过应用多视图几何的方式解决了室内场景中帧间大旋转和低纹理导致自监督深度估计困难的挑战。
    发表于 11-06 11:47 185次阅读
    一种利用几何信息的自监督单目<b class='flag-5'>深度</b><b class='flag-5'>估计</b>框架

    适于高阻接地的端时域测距算法

    在各种端时域测距算法中,解微分方程算法具有算法简单,实时性好,不必滤除衰减直流分量和不受电网频率波动的影响等优点,可在电网保护等领域得到应用。然而传统的解微分方程算法受过渡电阻影响,使其在测距精度
    发表于 09-27 07:17

    双目立体视觉是什么?单目视觉与双目立体视觉的区别?

    双目更多的是基于物理测量,而单目视觉则是基于逻辑推理,通过大量的数据训练,先识别出目标,再根据目标的大小和高度估算距离。因此,单目视觉的漏检率高于双目立体视觉,因为客观上存在corner case。
    发表于 08-17 09:40 2532次阅读
    双目立体<b class='flag-5'>视觉</b>是什么?单<b class='flag-5'>目视觉</b>与双目立体<b class='flag-5'>视觉</b>的区别?

    浅谈机器视觉系统的组成和工作原理

    机器视觉也称为计算机视觉,包括单目视觉、双目(立体)视觉和多目视觉研究用计算机来模拟生物外部显示器或宏观
    发表于 08-11 09:34 401次阅读

    AI深度相机-人体姿态估计应用

    我们非常高兴地发布一个新的代码示例,展示虹科AI深度相机SDK的惊人功能。只需6行源代码,您就可以实时准确地估计和跟踪人体姿态!我们最新的代码示例使用AI机器学习技术来识别和跟踪人体的关键点,使您能
    的头像 发表于 07-31 17:42 617次阅读
    AI<b class='flag-5'>深度</b>相机-人体姿态<b class='flag-5'>估计</b>应用

    双目立体视觉原理 HALCON的双目视觉系统研究

    、图像预处理和特征提取、立体匹配以及三维重建。为解决智能移动机器人、工业装配机器人、家用机器人、公共服务机器人的视觉问题,双目立体视觉技术的进一步研究可对多目视觉具有重要的启发。  本文对双目立体
    发表于 07-19 14:18 0次下载

    一文带你了解这三种3D视觉技术

    本文对ToF、双目视觉、结构光这三种技术展开分析,帮助你了解其各自的特点及应用
    的头像 发表于 07-10 16:04 975次阅读
    一文带你了解这三种3D<b class='flag-5'>视觉</b>技术

    目视觉的原理和应用

    视差(Disparity):视差是指同一物体在两个图像中投影点之间的水平距离,它与物体到相机的距离成反比,因此可以用来估计物体的深度。视差图(Disparity Map)是指存储立体校正后单视图所有像素视差值的二维图像。
    发表于 06-19 10:14 1221次阅读
    双<b class='flag-5'>目视觉</b>的原理和应用

    探讨智能驾驶提当下双目视觉传感器技术

    目视觉传感器有效弥补了数据驱动的 AI 算法在泛化性能上的短板,深度学习模型与视差点云技术的结合,极大扩张了视觉传感器的工作边界。
    发表于 06-07 14:16 245次阅读
    探讨智能驾驶提当下双<b class='flag-5'>目视觉</b>传感器技术

    自动驾驶入门(十一)之深度估计

    在自动驾驶感知算法中,有一个重要的分支是单目视觉检测,在检测目标是单目相机最困难的地方在于恢复目标物的深度信 息,无论使用小孔成像还是逆透视变换等方法都无法做到任意场景的鲁棒,并且在远距离也有较好
    发表于 06-07 11:48 0次下载
    自动驾驶入门(十一)之<b class='flag-5'>深度</b><b class='flag-5'>估计</b>

    自动驾驶感知之视觉感知经典算法

    输入数据来源可以是单目视觉相机、双目视觉相机,数据可以是灰度图或者彩色图。 基于单目图片的称为单目车道线检测技术,基于双目图片的称为双目车道线检测技术。
    发表于 06-01 14:18 0次下载
    自动驾驶感知之<b class='flag-5'>视觉</b>感知经典算法