基于深度学习的视觉三维重建研究总结

基于深度学习的视觉三维重建研究总结

1.三维重建意义

三维重建作为环境感知的关键技术之一,可用于自动驾驶、虚拟现实、运动目标监测、行为分析、安防监控和重点人群监护等。现在每个人都在研究识别,但识别只是计算机视觉的一部分。真正意义上的计算机视觉要超越识别,感知三维环境。我们活在三维空间里,要做到交互和感知,就必须将世界恢复到三维。所以,在识别的基础上,计算机视觉下一步必须走向三维重建

2.三维重建定义

在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而多视图的三维重建(类似人的双目定位)相对比较容易, 其方法是先对摄像机进行标定, 即计算出摄像机的图象坐标系与世界坐标系的关系.然后利用多个二维图象中的信息重建出三维信息。

3.常见的三维重建表达方式

常规的3D shape representation有以下四种:深度图(depth)、点云(point cloud)、体素(voxel)、网格(mesh)

1.深度图
深度图其每个像素值代表的是物体到相机xy平面的距离,单位为 mm。
在这里插入图片描述
2.体素
体素是三维空间中的一个有大小的点,一个小方块,相当于是三维空间种的像素。
在这里插入图片描述
3.点云
点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等。在我看来点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。万物皆点云,获取方式可通过三维激光扫描等。
在这里插入图片描述
4.三角网格就是全部由三角形组成的多边形网格。多边形和三角网格在图形学和建模中广泛使用,用来模拟复杂物体的表面,如建筑、车辆、人体,当然还有茶壶等。任意多边形网格都能转换成三角网格。
三角网格需要存储三类信息:
(1)顶点:每个三角形都有三个顶点,各顶点都有可能和其他三角形共享。.
(2)边:连接两个顶点的边,每个三角形有三条边。
(3)面:每个三角形对应一个面,我们可以用顶点或边列表表示面
在这里插入图片描述

4.三维重建的分类

根据采集设备是否主动发射测量信号,分为两类:基于主动视觉理论和基于被动视觉的三维重建方法。

主动视觉三维重建方法:主要包括结构光法和激光扫描法。

被动视觉三维重建方法:被动视觉只使用摄像机采集三维场景得到其投影的二维图像,根据图像的纹理分布等信息恢复深度信息,进而实现三维重建。

其中,双目视觉和多目视觉理论上可精确恢复深度信息,但实际中,受拍摄条件的影响,精度无法得到保证。单目视觉只使用单一摄像机作为采集设备,具有低成本、易部署等优点,但其存在固有的问题:单张图像可能对应无数真实物理世界场景(病态),故使用单目视觉方法从图像中估计深度进而实现三维重建的难度较大。

一、从单张图像恢复深度图

在这里插入图片描述
Depth, NIPS 2014, Cited by 1011

这篇论文思路很简单,算是用深度学习做深度图估计的开山之作,网络分为全局粗估计和局部精估计,对深度由粗到精的估计,并且提出了一个尺度不变的损失函数。
在这里插入图片描述
在这里插入图片描述

二、用体素来做单视图或多视图的三维重建

在这里插入图片描述
在这里插入图片描述
总结:
(1)采用深度学习从2D图像到其对应的3D voxel模型的映射,模型设计为Encoder+3D LSTM + Decoder。
(2)既适用单视图,也适用多视图。
(3)以体素的表现形式做的三维重建。
(4)缺点是需要权衡体素分辨率大小(计算耗时)和精度大小。

5.自监督

1. 高分辨率信息(Image Superresolution)

要想学习物体的高分辨率信息(细节信息)作为下游模型的先验知识,我们只需要在原图的基础上剔除细节信息,将原图缩放成小图,并训练模型根据小图重构原图。这种策略在 Image Superresolution 任务中很常见。

现有工作一般使用双线性差值对图像进行缩放,得到原图和其对应的小图(缩略图)。

在这里插入图片描述

学习高分辨率信息 step 1:在原图的基础上剔除细节信息

之后使用 GAN 模型,将小图作为输入重构高分辨率图像。在训练时,将重构的高分辨率图像与原图的 MSE(L2 距离)、内容损失(Content Loss)和对抗损失作为生成器的损失函数,将二分类损失作为判别器的损失函数,将生成器和判别器进行对抗训练。

在训练过程中,生成器能够掌握图像中物体的细节信息,生成逐渐清晰的图像;判别器能够掌握一张图片的细节信息是否准确,判别生成图像和原图的差异。生成器和判别器都可以用在下游任务中取得较好的效果。
在这里插入图片描述

2.关联信息(Image Clustering)

在训练 CNN 时,样本间的关联关系往往会被忽视,但是在图像检索等领域这些关联关系却对提高任务精度为重要。在魔改损失函数时,我们可能会用到 metric learning;

在魔改网络结构时,我们会使用 GCN 计算节点之间的相似度进行图卷积。而在自监督学习中,我们可以显式地让模型学习这些信息。

现有工作一般使用聚类算法先对图像进行聚类,记录聚类结果并将样本标注上对应簇的标签;(当然也可以理解为剔除相关样本带来的簇信息)并训练模型根据图像预测样本所属的簇。

相比于任务相关的类别标签,簇所指向的标签更符合数据本来的特征(例如真假人脸分类可能会聚簇为男女),粒度可能也更细(例如猫狗分类可能会聚簇成不同颜色的猫狗等)。

学习样本间的信息 step 1:对图像进行聚类并记录聚类结果作为标签
在这里插入图片描述
之后使用 CNN-based 的分类器(CFN),图像作为输入,预测图像所属的簇。在训练时,使用多分类损失作为损失训练分类器学习样本间的模式差异。
在这里插入图片描述

发布了27 篇原创文章 · 获赞 81 · 访问量 5647

猜你喜欢

转载自blog.csdn.net/qq_39426225/article/details/104993548
今日推荐