NERFS 与现实捕捉 - 弥合现实世界与数字世界之间的差距

news2024/11/22 19:39:46

NERF介绍

近年来,计算机视觉和图形领域取得了显着的进步,催生了革命性的技术,改变了各个行业。 NERFS(神经辐射场)和现实捕捉是两项备受关注的重要技术。 NERFS 和现实捕捉都是以数字形式捕捉和重建现实世界的强大工具。然而,它们在方法和应用方面存在显着差异。

1.NERFS(神经辐射场):

NERFS 是神经辐射场的缩写,是一项属于计算机图形学和计算机视觉领域的尖端技术。 NERFS 是近年来发展起来的,它利用深度学习模型通过连续 3D 函数来表示 3D 对象或场景。与依赖点云或网格表示的传统方法不同,NERFS 通过将底层场景建模为神经网络来生成逼真的重建。

2.NERFS 的工作原理:

NERFS 的工作原理是从不同角度捕获场景的大量图像。这些图像以及相应的相机参数被输入神经网络。然后,网络学习推断场景的体积表示,对复杂的细节、纹理和照明条件进行编码。

3.NERFS的应用:

  • 虚拟现实 (VR) 和增强现实 (AR):NERFS 可以为 VR/AR 应用创建高度沉浸和逼真的虚拟环境,从而增强用户体验。
  • 游戏和娱乐:NERFS 使游戏开发人员能够创建逼真的角色和环境,突破游戏视觉保真度的界限。
  • 电影和动画行业:NERFS 可以帮助为电影和动画生成逼真的 CGI(计算机生成图像),减少对传统建模和动画技术的依赖。
  • 机器人和自治系统:NERFS 在机器人和自治系统的场景理解和导航方面具有潜在的应用。

NERF技术的挑战

  • 计算复杂性:NERFS 需要大量计算资源来进行训练和推理,这使得它们的计算量很大。实时应用可能会受到神经网络复杂性的限制。
  • 有限的泛化:NERFS 擅长捕获与其训练数据中相似的场景。然而,当遇到与训练数据有很大偏差的场景时,他们可能会遇到困难,从而导致泛化能力有限。
  • 内存和存储:NERFS 的体积特性可能会导致大量的内存和存储需求。存储 3D 函数和渲染高分辨率图像可能会占用大量内存。
  • 缺乏动态场景:由于训练数据的性质,NERFS 更适合静态场景或对象。捕捉动态场景或移动物体是一个挑战,因为神经网络可能无法有效处理时间变化。

NERF使用

nerfstudio

Nerfstudio 提供了一个简单的 API,可以简化创建、训练和测试 NeRF 的端到端流程。该库通过模块化每个组件来支持 NeRF 的更可解释的实现。通过更多模块化的 NeRF,我们希望在探索该技术时创造更加用户友好的体验。

1.安装:搭建环境

安装CUDA 11.8 

创建环境
conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
pip install --upgrade pip

安装依赖
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

安装nerfstudio

pip install nerfstudio
或者
git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

2. 训练你的第一个模型!

# Download some test data:
ns-download-data nerfstudio --capture-name=poster
# Train model
ns-train nerfacto --data data/nerfstudio/poster

image

3. 导出结果

渲染视频

生成点云

ns-export pointcloud --help

生成mesh模型

ns-export poisson [-h] --load-config PATH --output-dir PATH [--num-points INT]
                  [--remove-outliers {True,False}]
                  [--reorient-normals {True,False}] [--depth-output-name STR]
                  [--rgb-output-name STR]
                  [--normal-method {open3d,model_output}]
                  [--normal-output-name STR] [--save-point-cloud {True,False}]
                  [--use-bounding-box {True,False}]
                  [--bounding-box-min FLOAT FLOAT FLOAT]
                  [--bounding-box-max FLOAT FLOAT FLOAT]
                  [--num-rays-per-batch INT]
                  [--texture-method {point_cloud,nerf}]
                  [--px-per-uv-triangle INT] [--unwrap-method {xatlas,custom}]
                  [--num-pixels-per-side INT] [--target-num-faces {None}|INT]
                  [--std-ratio FLOAT]

4. 使用自定义数据

Data Capture DeviceRequirementsns-process-data Speed
📷 ImagesAnyCOLMAP 🐢
📹 VideoAnyCOLMAP 🐢
🌎 360 DataAnyCOLMAP 🐢
📱 PolycamIOS with LiDARPolycam App 🐇
📱 KIRI EngineIOS or AndroidKIR
ns-process-data {images, video} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}

sdfstudio

SDFStudio 是一个用于神经隐式表面重建的统一模块化框架,建立在出色的 nerfstudio 项目之上。我们提供了三种主要隐式表面重建方法的统一实现:UniSurf、VolSDF 和 NeuS。 SDFStudio 还支持各种场景表示,例如 MLP、Tri-plane 和 Multi-res。特征网格和多点采样策略,例如 UniSurf 中的表面引导采样和 NeuralReconW 中的体素表面引导采样。它进一步集成了该领域的最新进展,例如单目线索(MonoSDF)的利用、几何正则化(UniSurf)和多视图一致性(Geo-NeuS)。由于统一和模块化的实现,SDFStudio 可以轻松地将想法从一种方法转移到另一种方法。例如,Mono-NeuS 将 MonoSDF 的思想应用到 NeuS,Geo-VolSDF 将 Geo-NeuS 的思想应用到 VolSDF。

参考资料:

https://github.com/nerfstudio-project/nerfstudio/

GitHub - autonomousvision/sdfstudio: A Unified Framework for Surface Reconstruction

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

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

相关文章

无涯教程-Perl - dbmclose函数

描述 此函数关闭哈希和DBM文件之间的绑定。将领带功能与合适的模块配合使用。 语法 以下是此函数的简单语法- dbmclose HASH返回值 如果失败,此函数返回0,如果成功,则返回1。 请注意,在大型DBM文件上使用键和值之类的功能时,它们可能会返回巨大的列表。您可能更喜欢使用e…

HBase-写流程

写流程顺序正如API编写顺序,首先创建HBase的重量级连接 (1)读取本地缓存中的Meta表信息;(第一次启动客户端为空) (2)向ZK发起读取Meta表所在位置的请求; (…

chapter13:springboot与任务

Spring Boot与任务视频 1. 异步任务 使用注解 Async 开启一个异步线程任务, 需要在主启动类上添加注解EnableAsync开启异步配置; Service public class AsyncService {Asyncpublic void hello() {try {Thread.sleep(3000);} catch (InterruptedExcept…

为什么很多人都在吹ChatGPT改变世界?一文全面了解

ChatGPT早已让全世界的互联网炸锅,它已经从一个新颖的聊天机器人演变成一项推动下一个创新时代到来的技术。已经很久没有出现一款让大家充满兴趣、兴奋、恐惧且具有争议的科技产品了。 如果你现在才接触到它,你可能会想知道这到底是怎么回事。这里建议你…

linux gcc __attribute__

__attribute__ 1. 函数属性1.1 __attribute__((noreturn))1.2 __attribute__((format))1.3 __attribute__((const)) 2. 变量属性2.1. __attribute__((aligned))2.2. __attribute__((packed)) 3. 类型属性 __attribute__ 是 GCC 编译器提供的一种特殊语法,它可以用于…

测试该知道的二三事:浅谈响应式网页设计

1.起因 最近几天正巧在帮朋友的公司团队做质量保障体系的培训,在此期间与几个测试人员闲聊,正是其中的一件事让我对今天的话题提起了兴趣:朋友公司里的研发团队招了一个应届毕业生,做了半年之后接了某个web项目的其中一个拓展功能…

质检工具(FindBugs、CheckStyle、Junit、Jmeter、Apifox)

1、Findbugs IDEA软件中可以装该插件,2018版本以前主要搜索FindBugs-IDEA 、2018版本以后主要搜索 SpotBugs。 1.1、FindBugs-IDEA安装及使用流程: 1.2、SpotBugs安装及使用流程: 2、Checkstyle IDEA软件中可以装该插件,所有版本的插件一致:CheckStyle 2.1、安装流程…

【C# 基础精讲】为什么选择C# ?

C#(C Sharp)是由微软开发的一种通用、面向对象的编程语言。它最初于2000年发布,自那时以来逐渐成为开发者的首选之一。C#的设计目标是提供一种简单、现代、可靠且安全的编程语言,使开发者能够轻松构建各种类型的应用程序。 为什么…

Apache Doris 助力中国联通万亿日志数据分析提速 10 倍

本文导读: 在数据安全管理体系的背后,离不开对安全日志数据的存储与分析。以终端设备为例,中国联通每天会产生百亿级别的日志数据,对于保障网络安全、提高系统稳定性和可靠性具有至关重要的作用。目前,Apache Doris 在…

解决树莓派“由于没有公钥,无法验证下列签名“

目录 简介:在换完国内源后,树莓派尝试更新同步/etc/apt/sources.list和/etc/apt/sources.list.d中列出的软件源的软件包版本也就是(apt-get update)和更新已安装的所有或者指定软件包(也即是apt-get upgrade&#xff0…

java+springboot摄影作品竞赛报名系统 微信小程序--论文

随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理摄影竞赛小程序的最新形式。本小程序是以构建摄影竞赛为目标,使用java技术制作,…

xLua学习

xLua教程:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/XLua%E6%95%99%E7%A8%8B.md xLua配置:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/configure.md FAQ:https://github.com/Tencent/xLua/blob/maste…

【Leetcode】反转链表||基础题||击败100%(头插法)

step by step. 题目: 反转链表,基础题了,要很熟练的境界—— 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示…

awk筛选给定时间范围内的日志

目录标题 筛选日志时间示例编写1.awk文件准备一个需要筛选时间的日志执行awk命令 筛选日志时间 grep/sed/awk用正则去筛选日志时,如果要精确到小时、分钟、秒,则非常难以实现。 但是awk提供了mktime()函数,它可以将时间转换成epoch时间值。 …

opencv基础43- 图像梯度-Laplacian 算子( cv2.Laplacian)边缘检测基础

Laplacian算子是一种图像处理中常用的边缘检测算子,它用于检测图像中的边缘和轮廓。该算子计算图像中每个像素点的二阶导数,从而突出图像中灰度值变化较大的区域,这些区域通常对应图像的边缘或者轮廓。 Laplacian(拉普拉斯&#x…

【Spring Cloud 七】Sleuth+Zipkin 链路追踪

Sleuth链路追踪 系列博客背景一、 什么是链路追踪二、为什么要有链路追踪三、Sleuth与ZipkinSleuthZipkinSleuth和Zipkin的关系是什么? 四、使用Sleuthzipkin进行链路追踪4.1下载zipkin4.2案例说明项目代码服务提供者pom文件yml配置文件项目启动类controller 抽离出…

Android network — iptables四表五链

Android network — iptables四表五链 1. iptables简介2. iptables的四表五链2.1 iptables流程图2.2 四表2.3 五链2.4 iptables的常见情况 3. NAT工作原理3.1 BNAT3.2 NAPT 4. iptables配置 本文主要介绍了iptables的基本工作原理和四表五链等基本概念以及NAT的工作原理。 1. i…

MyBatis-Flex 一个优雅的 MyBatis 增强框架

文章目录 网站MyBatis-Flex 是什么特征1、很轻量2、只增强3、高性能4、更灵动 快速开始hello world(原生)QueryWrapper 示例select *select columnsselect functionswherewhere 动态条件 1where 动态条件 2where 自动忽略 null 值where selectexists, no…

AlmaLinux 9 安装 Go 1.20

AlmaLinux 9 安装 Golang 1.20 1. 下载 go 安装包2. 安装 go3. 配置环境变量4. 确认 go 版本 1. 下载 go 安装包 访问 https://go.dev/dl/,下载你想安装的版本,比如 go1.20.7.linux-amd64.tar.gz, 2. 安装 go (可选)删除旧版本,…

检查网站是HTTP那种协议与获取域名的ipv6地址

前言 最近在做HTTPS的应用,可能需要使用ipv6的地址做SLB,但是怎么检查配置正确,总不能每次都看日志吧,实际上客户端也很容易查看,总结工作经验。 检查HTTP协议版本 笔者想到了使用浏览器方式,或者抓包&a…