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

news/2024/12/23 2:44:19/

计算机视觉是人工智能的一个快速发展的领域,特别是在 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.ppmy.cn/news/1230097.html

相关文章

LongAdder功能和原理

AtomicLong能保证并发情况下计数的准确性,其内部通过CAS来解决并发安全性的问题。 AtomicLong的缺点: 可以看到在高并发情况下,当有大量线程同时去更新一个变量,任意一个时间点只有一个线程能够成功,绝大部分的线程在尝…

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `ajax()`

嗨,亲爱的读者们!欢迎来到这篇关于使用 jQuery 中的 ajax() 方法进行 Ajax 请求的博客。在前端开发中,jQuery 提供了简便而强大的工具,其中 ajax() 方法为我们处理异步请求提供了便捷的解决方案。无需手动创建 XMLHttpRequest 对象…

CTFHub Git泄露

Log 前言 根据题目描述,这个题目需要使用到工具 GitHack 来完成,而 CTFHub 上提供的工具需要在 python2 环境中执行,注意 python3 环境无法使用。 GitHack准备(kali Linux) 打开虚拟机 sudo su 以管理员的身份运行…

vue统一登录

说明: 统一登录其实就是前端去判断Url地址的token 之后如果有token未过期就直接跳转到首页。 说到浏览器输入url地址,那从浏览器输入地址一共发生了几件事大致如下: DNS解析域名,获取IP地址 --》 建立TCP连接(三次握…

MLP感知机python实现

from torch import nn from softmax回归 import train_ch3 import torch import torchvision from torch.utils import data from torchvision import transforms# ①准备数据集 def load_data_fashion_mnist(batch_size, resizeNone):# PyTorch中的一个转换函数,它…

手把手从零开始训练YOLOv8改进项目(官方ultralytics版本)教程

手把手从零开始训练 YOLOv8 改进项目 (Ultralytics版本) 教程,改进 YOLOv8 算法 本文以Windows服务器为例:从零开始使用Windows训练 YOLOv8 算法项目 《芒果 YOLOv8 目标检测算法 改进》 适用于芒果专栏改进 YOLOv8 算法 文章目录 官方 YOLOv8 算法介绍改进网络代码汇总第…

母婴服务预约小程序的效果如何

二胎家庭增速明显,占比较大,成为市场各母婴品牌的目标,而随着行业发展及市场变化,线上互联网深入人们生活,各家母婴品牌开始向“数字化”靠拢。 目前母婴门店商家主要面临服务/产品线上曝光不足、宣传度不够或扩圈无门…

【Spring Boot】如何集成Redis

在pom.xml文件中导入spring data redis的maven坐标。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 在application.yml文件中加入redis相关配置。 spr…