单图像3D重建AI算法综述【2023】

计算机视觉是人工智能的一个快速发展的领域,特别是在 3D 领域。 本概述将考虑一个应用任务:2D 和 3D 环境之间的转换。

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 

1、2D和3D的转换

关于2D和3D的转换,存在两种任务:从3D模型创建2D图像,或者从2D图像重建3D模型。

1.1 正向任务:从3D模型创建2D图像

首先,我们将分析如何解决计算机图形学的正向任务,即使用 3D 模型创建 2D 图像,并熟悉基本概念。

渲染是从 3D 模型转变为 2D 投影的过程。 你可能听说过其中一些方法:

  • 光栅化(rasterization)是最早、最快的渲染方法之一。 光栅化将模型视为多边形网格。 这些多边形的顶点嵌入了位置、纹理和颜色等信息。 然后将这些顶点投影到垂直于透视图的平面上。 光栅化存在重叠对象的问题:如果表面重叠,则渲染时最后绘制的部分将被反射,这将导致显示错误的对象。 这个问题是使用z-buffering解决的(事实上,z-buffer就是深度图)。
  • 射线投射(ray casting)。 与光栅化不同,光线投射期间不会出现重叠表面的潜在问题。 光线投射,顾名思义,就是从相机的角度将光线投射到模型上。 光线输出到图像平面上的每个像素。 它首先碰到的表面将在渲染过程中显示,并且第一个表面之后的任何其他交叉点都不会被绘制。
  • 光线追踪(ray tracing)。 尽管光线投射具有诸多优点,但该技术仍然缺乏正确建模阴影、反射和折射的能力。 光线追踪方法的开发就是为了帮助解决这些问题。 光线追踪的工作原理与光线投射类似,只是它能更好地显示光线。 基本上,从相机的角度来看的主光线被引导到模型上以产生次级光线。 击中模型后,将发射阴影光线、反射光线或折射光线,具体取决于表面属性。

1.2 逆向任务:从2D图像重建3D模型

现在我们已经考虑了从 3D 模型构建 2D 图像的直接问题,让我们看看解决逆问题的方法:从 2D 图像构建 3D 模型。

二维照片是三维场景的投影。 3D 场景是 3D 网格、顶点、面、纹理贴图以及从相机或视点查看的光源的集合。 为简单起见,我们将场景限制为单个 3D 对象。 如果我们能够恢复创建 2D 照片的原始 3D 场景,我们应该能够通过使用与创建输入 2D 照片相同的视点将 3D 对象投影到 2D 来验证这一点。

要重建3D对象,需要计算顶点、面、光源和纹理的所有可能组合,当以 2D 投影时,这些组合应该在给定输入图像的情况下给出等效的 2D 图像,前提是相机位置是 相同的。 这本质上是一个搜索问题。 但暴力破解的问题在于,可以创建的顶点、面、纹理贴图和光照的组合数量巨大,因此我们无法通过暴力破解来解决这个问题。

让我们看看现有的解决这个问题的方法!

2、从2D图像重建3D模型的解决方案

这里我们介绍几种从单张2D图像重建3D模型的解决方案:DIB-R、Im2Struct、ATLAS和Mesh R-CNN。

2.1 DIB-R

DIB-R 是一种差分渲染器,它使用可微分光栅化算法对像素值进行建模。 它有两种分配像素值的方法。 一个用于前景像素,另一个用于背景像素。 在这里,与标准渲染相反,标准渲染将像素值分配给覆盖像素的最近的面,前景光栅化被视为顶点属性的插值。 在每个前景像素上,我们执行 z 缓冲测试并将其分配给最近的覆盖面。 每个像素都只受该面的影响。 因此,前景像素的计算方式是使用每个顶点的权重对最近的三个相邻顶点进行插值。 对于背景像素,即未被 3D 对象的任何面覆盖的像素,该值是根据像素到最近面的距离计算的。

DIB-R可以生成具有传统渲染难以实现的逼真光照和阴影效果的图像。

2.2 Im2Struct:SMN+SRN

结构掩膜网络 (SMN:Structural Masking Network) 根据不同比例的输入 2D 图像创建对象掩膜。 这是一个多层卷积神经网络(CNN)。 它的任务是保存有关表单的信息,同时查看不相关的信息:背景和纹理。

结构恢复网络(SRN:Structure Restoring Network)以长方体结构的形式递归地重建对象细节的层次结构。 SRN接收来自SMN的输入数据,添加2D图像的CNN特征,然后将这些函数传递给递归神经网络(RvNN)解码成3D结构。 在输出中,我们得到具有合理空间配置的三维长方体形式的图像。

与传统 3D 扫描方法相比,Im2Struct 具有多个优势,因为它可以从单个 2D 图像恢复物体的 3D 结构,这通常比从多个视点扫描物体更快、更便宜。

2.3 ATLAS

ATLAS将任意长度的 RGB 图像序列作为输入。 每幅图像的内部特征和姿势都是已知的。 这些图像通过 2D CNN 主干进行特征提取。 然后将对象投影回 3D 体素体积并使用当前平均值进行累积。 一旦图像元素以 3D 形式组合,我们就直接使用 3D CNN 对 TSDF 进行回归。

ATLAS 可用于多种行业,包括制造、工程和考古。 ATLAS 3D 的一个限制是它要求被扫描的物体是静止的,这在某些应用中可能并不总是可行。 此外,系统可能难以捕捉具有高反射或透明表面的物体的精细细节和纹理。

2.4 Mesh R-CNN

Mesh R-CNN框架采用两阶段方法:在第一阶段,它使用卷积神经网络 (CNN) 检测和分割图像中的对象,类似于流行的 Mask R-CNN 框架。 在第二阶段,它使用网格预测网络对每个对象实例的一组 3D 顶点进行回归。

Mesh R-CNN 的主要优点之一是它能够重建对象的详细 3D 网格,包括其细粒度的几何形状和纹理。 这使得它对于虚拟现实、增强现实和 3D 打印等应用非常有用

3、从单张2D图像生成深度图

我们介绍了几种解决逆向图形任务的最先进的解决方案。 所有这些解决方案都可以帮助你解决各种任务,例如重建房间、创建 3D 局部地图、从单个图像重建 3D 场景,甚至估计农作物或地形的高度和深度以指导种植、收割和灌溉决策。

请记住,所有这些解决方案都基于不同的渲染、体素预测、网格预测等方法。 但它们都有一个共同的需求,即以一种或另一种形式构建或预测深度图。

这就是为什么我也建议单独考虑构建深度图的问题。

让我们看一下单目图像预测深度图的几种最先进的解决方案。

3.1 GLPN

GLPN单目深度估计网络具有贯穿整个网络的全局和局部特征路径的新架构。 该框架的整体结构如下:transformer编码器使模型能够学习全局依赖性,并且所提出的解码器通过跳跃连接和特征融合模块构建局部路径,成功地将提取的特征恢复到目标深度图中。

3.2 Dense Depth模型

Dense Depth模型的编码环节使用在 ImageNet 中预训练的 DenseNet-169 网络将 RGB 输入图像编码为对象向量。然后将该向量输入到一系列连续的层中,并增加采样,以构建分辨率等于输入一半的最终深度图。 这些上采样层及其相关的带宽连接形成了解码器。

3.3 Midas

Midas架构以视觉多连接transformer为基础来表示。 过去成功预测的整体编码器-解码器结构被保留。 通过提取非重叠部分,然后对其平滑表示(DPT-Base 和 DPT-Large)进行线性投影,或者通过应用 ResNet-50 (DPT-Hybrid),将输入图像转换为标记。 图像嵌入辅以位置嵌入和独立于补丁的标记。 标记要经历几个转换阶段。 从不同阶段收集标记作为多分辨率图像(重新组装)。 Fusion 模块逐渐合并和上采样视图以生成详细的预测。

4、众包之手

在后一种情况下,MIDAS 能够通过链接新的数据源来实现其结果,而这是以前没有人实现过的。 大规模收集不同的深度数据集是很困难的,因此引入了一种工具来组合互补的数据源。 此外,基于 3D 电影的新数据集提供了有关各种动态场景的可靠信息。

因此,我想重点关注3D方向的数据问题。 每个开发人员都面临这个问题,并且必须以某种方式回避它,包括在架构上。 我描述的所有这些解决方案都使用几乎相同的开放数据集。

这还不够,因为由于遮挡、光照条件差、视角有限等多种原因,收集如此复杂和高质量的数据并不是那么简单。 当没有足够的可用数据时,就很难准确估计场景的深度和结构,从而导致 3D 重建不准确或不完整。

众包可以作为解决 3D 重建需要更多数据的问题的潜在解决方案。 通过利用大量个人的集体努力,众包可以提供场景的额外数据和视角,从而提高 3D 重建的准确性和完整性。

例如,众包平台可用于收集大量贡献者从不同角度拍摄的场景的多幅图像。 然后可以使用多视图立体或运动结构技术处理这些图像,以创建更准确的场景 3D 重建。

这正是 Neatsy 项目中为了部分弥补 3D 数据缺乏而实施的内容。 Neatsy 开发了用于虚拟调整鞋子尺寸的人工智能软件。 他们使用 Toloka 众包平台进行额外的数据收集(超过 5 万张新照片),并对模型的指标进行了改进。 他们的软件使用大约 50 种不同的测量方法创建脚的 3D 模型,并帮助你找到一双完美的运动鞋。 该项目已经继续进行,现在他们还可以诊断足部的健康问题,这一切都归功于人群中的数据。 这只是开发 3D 技术的巨大潜力的一个例子。

5、结束语

有许多最先进的解决方案可用于正向和逆向图形任务以及预测深度图。 我们研究了每种方法在实际应用中的情况,并注意到由于缺乏 3D 数据而造成的限制。 众包平台有潜力解决数据收集问题并支持现实计算机视觉应用的 3D 技术开发。


原文链接:单图像3D重建AI综述 - BimAnt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python趣味编程-5分钟实现一个蛇梯游戏(含源码、步骤讲解)

蛇梯游戏是用Python编程语言开发的,它是一个桌面应用程序。 这个Python蛇梯游戏可以免费下载开源代码,它是为想要学习Python的初学者创建的。 该项目系统使用了 Pygame 和 Random 模块。 Pygame 是一组跨平台的 Python 模块,专为编写视频游戏而设计。 此游戏包含 Python …

《洛谷深入浅出基础篇》P5266 学籍管理——map的应用

上链接:P5266 【深基17.例6】学籍管理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P5266#submit 题干: 题目描述 您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的…

盼望许久的百度熊终于收到了

文|洪生鹏 我怀着激动的心情,终于收到了百度熊礼品。 在我想象中,这只熊应该很大,能够填满我的怀抱。 但当我打开礼盒的那一刻,我有些惊讶。 它居然这么小,与我预期的相差甚远。 不过,当我们仔细一看&#…

录制第一个jmeter性能测试脚本2(http协议)——webtour

我们手工编写了一个测试计划,现在我们通过录制的方式来实现那个测试计划。也就是说‘’测试计划目标和上一节类似:让5个用户在2s内登录webtour,然后进入 页面进行查看。 目录 欢迎访问我的免费课程 PPT、安装包、视频应有尽有! …

图书管理系统(图文详解,附源码)

前言:本文旨在用面向对象的思想编程实现图书管理系统,功能包括增删查找,完整源码放在文末,大家有需自取 目录 一.整体框架 二.书籍和书架 书籍(Book) 书架(BookRack) 三.对书籍的相关操作 操作接口(IOperation) 新增图书(A…

数据结构【DS】栈

共享栈 共享栈的目的是什么? 目的:有效利用存储空间。 共享栈的存取数据时间复杂度为? 存取数据时间复杂度为O(1) 共享栈如何判空?如何判满? 两个栈的栈顶指针都指向栈顶元素,𝑡𝑜𝑝…

【电路笔记】-欧姆定律

欧姆定律 文章目录 欧姆定律1、概述2、AC电路的等效性2.1 输入电阻2.2 输入电感2.3 输入电容 3、欧姆定律的局部形式3.1 介绍和定义3.2 德鲁德模型(Drude Model)3.3 局部形式表达式 4、电阻和宏观欧姆定律5、总结 电流、电压和电阻之间的基本关系被称为欧姆定律,可能…

C/C++高精度

个人主页:仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏:算法_仍有未知等待探索的博客-CSDN博客 为什么需要高精度算法? 由于c不能进行位数过高的数据运算,所以要通过模拟数组来进行运算,首先是加法。…

参考文献格式

目录 期刊会议预印本(如arxiv) 期刊 找不到页码可以在文献中查看bibtex格式,其中有 外文期刊可在web of science中查找卷号、期号和所在页数: [1] ZHANG F, HU Z Q, FU Y K, et al. A New Identification Method for Surface …

【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…

【SpringBoot3+Vue3】四【基础篇】-前端(vue基础)

目录 一、项目前置知识 二、使用vscode创建 三、vue介绍 四、局部使用vue 1、快速入门 1.1 需求 1.2 准备工作 1.3 操作 1.3.1 创建html 1.3.2 创建初始html代码 1.3.3 参照官网import vue 1.3.4 创建vue应用实例 1.3.5 准备div 1.3.6 准备用户数据 1.3.7 通过…

《许犁庭与柔性世界》第十六章 五大势力

“咱们伊拉斯蒂克学院的学生,大致分为五类,分别对应着弹性之城的五大势力。” “唔~” “第一类是极少数贵族家庭的孩子。他们背后是城主,秘书长与各大部长们,属于令老师们头疼,连院长都不敢管的角色。” “唔~” “第…

酷开会员丨酷开系统让居家K歌变得更简单!

音乐到底有着怎样的力量呢?一般的健身运动大多活动四肢和肌肉,而唱歌却能能按摩到内脏,促进脏腑健康。唱歌时,吸气与呼气间,横膈肌大幅度、频繁地上下移动,使胸腔、腹腔产生振动,这种震荡作用可…

[原创]解决老款AMD CPU在Win10/Win11无故重启的问题.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…

信息中心网络提出的背景、研究现状及研究内容

信息中心网络什么时候提出的?未来发展前景?有什么著名实验室在做? 1、提出背景: 互联网产生于上世纪60年代: (1)网络设备数量呈指数性增长 截至2022年底全球范围内预计将有超过280亿台终端设…

汽车标定技术--A2L格式分析

目录 1.A2L由来 2.A2L格式 2.1 PROJECT 2.2 MODULE中包含的内容 3. INCA和CANape兼容吗? 最近有朋友用Vector ASAP2Editor编译的A2L文件在INCA7.4中无法识别,我记得以前做的时候是可以识别的,难不成最近有什么变动吗?出于好…

MySQL 的执行原理(五)

5.6 再深入查询优化 5.6.1. 全局考虑性能优化 5.6.3.1. 为什么查询速度会慢 在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间。如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间。…

Google codelab WebGPU入门教程源码<3> - 绘制网格(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#4 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。 class Color4 {r: number;g: number;b: number;a: number;constructor(pr 1.0, p…

【实用技巧】更改ArduinoIDE默认库文件位置,解放系统盘,将Arduino15中的库文件移动到其他磁盘

本文主要介绍更改Arduino IDE (含2.0以上版本)默认库文件位置的方法。 原创文章,转载请注明出处: 【实用技巧】更改ArduinoIDE默认库文件位置,解放C盘,将Arduino15中的库文件移动到其他磁盘-CSDN博客文章浏…