实验笔记之——基于windows复现Instant-NGP

之前博客对NeRF-SLAM进行了调研,本博文先复现一下Intant-NGP。

学习笔记之——NeRF SLAM(基于神经辐射场的SLAM)-CSDN博客文章浏览阅读851次,点赞22次,收藏21次。NeRF 所做的任务是 Novel View Synthesis(新视角合成),即在若干已知视角下对场景进行一系列的观测(相机内外参、图像、Pose 等),合成任意新视角下的图像。传统方法中,通常这一任务采用三维重建再渲染的方式实现,NeRF 希望不进行显式的三维重建过程,仅根据内外参直接得到新视角渲染的图像。为了实现这一目的,NeRF 使用用神经网络作为一个 3D 场景的隐式表达,代替传统的点云、网格、体素、TSDF 等方式,通过这样的网络可以直接渲染任意角度任意位置的投影图像。https://blog.csdn.net/gwplovekimi/article/details/135083274?spm=1001.2014.3001.5501Intant-NGP论文链接:https://dl.acm.org/doi/pdf/10.1145/3528223.3530127

代码链接:https://github.com/NVlabs/instant-ngp

原理解读部分在调研博客里面已经写了,此处就不再详述。本博文仅仅记录配置实验过程。本博文部分资料来源于网络,仅供本人学习记录用~

首先看看电脑的gpu信息。点击“此电脑-管理-设备管理器-显示适配器”。

电脑的GPU是3090,那么应该就是属于下面第一个类别的了

  • RTX 3000 & 4000 series, RTX A4000–A6000, and other Ampere & Ada cards
  • RTX 2000 series, Titan RTX, Quadro RTX 4000–8000, and other Turing cards
  • GTX 1000 series, Titan Xp, Quadro P1000–P6000, and other Pascal cards

解压后打开exe文件即可。

它的UI长这样:

GUI包括以下部分:

  • 全面控制以交互方式探索神经图形基元
  • 通过虚拟现实头戴设备查看神经图形基元的VR模式
  •  保存和加载“快照”,以便在互联网上分享您的图形基元
  • 相机路径编辑器用于创建视频,
  • NeRF->Mesh和SDF->Mesh转换,
  • 相机位置和镜头优化,

然后把data里nerf的fox拖进去就可以,如下面视频所示

Instant NGP testing fox

GUI按键各个功能如下:

Instant NGP testing GUI

通过下图中所示的按键也可以可视化相机的位置

fox里面一共115张图片,确实是瞬间就渲染出比较好的纹理效果~

对于fox文件里面还有一共transform.json文件,里面记录的就是相机的内参和外参(pose)了。

再测试一下用其他序列的效果,从视频可以看到,这个算法确实是挺不错的,再这些序列下都可以出来不错的效果~

Instant NGP testing different dataset

接下来看看用SDF作为输入的效果

Instant NGP testing SDF as input

好了~测试完作者给出的gui后,接下来看看用自己的采集数据测试的效果。作者提供了三个不同的script来处理数据,使得可以用inatant-ngp作为输入

  • COLMAP to create a dataset from a set of photos or a video you took
  • Record3D to create a dataset with an iPhone 12 Pro or newer (based on ARKit)
  • NeRFCapture to create a dataset or stream posed images directly to instant-ngp with an iOS device.

首先作者建议用python3.7以上的版本来处理。先安装Anaconda(Free Download | Anaconda) 

然后打开Anaconda Promp,并创建虚拟环境( nerf-ngp)

conda create -n nerf-ngp python=3.8

然后切换到虚拟环境下

conda activate nerf-ngp

再把下面的依赖包安装一下

pip install commentjson imageio numpy opencv-python-headless pybind11 pyquaternion scipy tqdm

应该都安装齐全了~

由于我的手机正好是iphone 12 pro,因此采用Record3D来测试。Record3D是一个IOS的app,可以用ARKit来估算camera的pose。

首先安装这个app(Record3D — 3D Videos and Point Cloud (RGBD) Streaming for iOS)。

然后,录制一段视频。如下所示,应该就是利用了iphone12的lidar测深度?

Record3D in Iphone 12 pro

然后用“Shareable/Internal format (.r3d)”格式导出,将文件传到电脑。然后将.r3d变为.zip文件,并且解压如下

然后执行下面命令

python record3d2nerf.py --scene ..\data\mydesk

如果采用横向方位捕捉视频,就添加-- rotate

就成功生成了pose与image序列~

然后用instant-NGP测试,结果报错如下

是因为序列太多了?那改一下用少点的序列看看~

还是不行~应该是由于图片太大?,占满了gpu的内存导致的?

但是看了一下图片的尺寸只是1140*1920(但一共有1573张图片,好像确实有点多,因此改一下帧率,让图像少些吧~)

结果要付费了。。。cao,为了科研,冲!

测试了几次,需要有足够的激励的~如下所示

Instant NGP testing self collect dataset

对于实际的场景,如果大大的超出了cube(如上视频所示),需要将将transforms.json中的参数aabb_scale设置为2的整数次方,最大为128(即1、2、4、8、...、128)(目前上面的视频展示为16,修改成4,截图如下)

这个值变小了后,场景就集中于这个杯子上了。那如果变为64呢?恢复的场景会大些,但是效果看上去是差不多的~感觉这个工作还是要继续深入了解一下,看看这些参数背后的意义~

至于渲染的效果好像都差不多没有太大的提升

根据作者给出的tips

NeRF模型在展示最佳效果时,需要50至150张图像,这些图像表现出最小的场景移动、运动模糊或其他模糊的伪影。重建的质量取决于先前的脚本能够从图像中提取准确的相机参数。请查看前面的部分,了解如何验证这一点的信息。

colmap2nerf.py 和 record3d2nerf.py 脚本假设训练图像大致指向一个共同的兴趣点,并将其放置在原点。该点是通过计算所有训练图像对中心像素射线的最近交点的加权平均值找到的。在实践中,这意味着当训练图像朝向感兴趣的对象时,脚本效果最佳,尽管它们不需要完整地围绕该对象完成全景视图。如果aabb_scale设置为大于1的数字,解释如上所述,仍然会重建出感兴趣对象背后可见的任何背景。

参考资料

https://github.com/MarvinChung/Orbeez-SLAM

Creating your own NeRF

快速跑 nerf instant-ngp 快速调试与配置,跑自己的数据_instant ngp在2080ti训练-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git提交代码发生冲突的场景与解决方案

问题 当我们在使用 Git 向远程仓库提交代码时,可能会遇到如下所述的错误提示: To https://github.com/xxxxx/gitmerge.git! [rejected] master -> master (fetch first) error: failed to push some refs to https://github.com/xxxxx/gitme…

CMake入门教程【核心篇】编译类型Debug、Release、MinSizeRel、RelWithDebInfo

文章目录 1.说明1.1 Debug 配置1.2 Release 配置1.3 MinSizeRel 配置1.4 RelWithDebInfo 配置 2.提供的编译类型3.示例结论 1.说明 CMake作为一款强大的构建系统,提供了多种编译配置选项。这些配置影响编译过程中的优化级别和调试信息的包含情况。以下是CMake提供的…

成功的交易员是如何走向成熟的?

如果不能严格遵守纪律,你可能会犯下10000种错误;但是,如果你能够严格的遵守纪律,你就一个错误都犯不了。 本文为大家讲讲交易员进阶的五个阶段,希望大家能有所收获哦!~ 一、掌握技术分析基础 当你刚开始接触…

第二证券:瑞玛精密盘中上演“天地板”走势

瑞玛精密3日开盘即涨停,随后快速跳水,盘中一度触及跌停,上演“天地板”走势。到发稿,该股迫临跌停,成交超4亿元,换手率达18%。此前,该股已接连3日涨停。 公司1日晚间在公告中指出,近…

综合场景搭建、在线分享,这款地理空间数据管理软件功能太多了!

《四维轻云》是一款轻量化的地理空间数据管理云平台,支持地理空间数据的在线管理、编辑及分享。平台具有项目管理、数据上传、场景搭建、发布分享、SDK开发等功能模块,支持多用户在线协作管理,实现了轻量化、便捷化的空间数据应用。 一、发布…

CRLF注入与检测

一、CRLF介绍 CRLF是CR和LF两个字符的拼接,它们 分别代表”回车换行”(\r\n)。十六进制编码分别为0x0d和0x0a,URL编码为%0D和%0A。CR和LF组合在一起即CRLF命令,它表示键盘上的"Enter"键,许多应用…

ArkTS - @Prop、@Link

一、作用 Prop 装饰器 和Link装饰器都是父组件向子组件传递参数,子组件接收父组件参数的时候用的,变量前边需要加上Prop或者Link装饰器即可。(跟前端vue中父组件向子组件传递参数类似) // 子组件 Component struct SonCom {Prop…

华为校招开奖,岗位职级薪资汇总(精华面经分享)

华为开奖 近期,不少同学都收到了来自 华为 的冬至礼物。 以目前形式来说,华为仍然属于优先考虑的企业。 我这里收集转发一下由牛客网统计到的各职位薪资情况: 统计表里面的薪资,有些写了具体金额,有些写的则是职级&…

如何在ArcGIS Pro中指定坐标系

在进行制图的时候,为了实现某些特定的效果,需要指定特定的坐标系,但是现有的数据可能不是所需要的坐标系,这时候就需要对现有的数据坐标系进行处理,这里为大家介绍一下ArcGIS Pro中指定坐标系的方法,希望能…

计算机毕业设计——基于SSM+Layui的图书管理系统(附源码)

1,项目背景 国家大力推进信息化建设的大背景下,城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区,商业和服务业也比较发达,公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息…

Flink-【时间语义、窗口、水位线】

1. 时间语义 1.1 事件时间:数据产生的事件(机器时间); 1.2 处理时间:数据处理的时间(系统时间)。 🌰:可乐 可乐的生产日期 事件时间(可乐产生的时间&…

【震撼低价】4G RTU 物联网采集控制网关仅需198元!现货包邮!机不可失,速来抢购!!!

今天,只有一件事情,那就是给大家送福利! 今天,只有一件事情,那就是给大家送福利! 钡铼技术官方旗舰店 给大家来一点清新脱俗的 推出线上感恩回馈活动 为您送上超值福利 享受最低4折优惠 这个“双十一…