DSNeRF复现流程

创建虚拟环境安装依赖

conda create -n DSNeRF python=3.7
pip install -r requirements.txt``

下载LLFF数据放在创建的data文件下

https://drive.google.com/file/d/1RjhfcbsywOvw0ts1AFSri91mKANvEVOa/view?usp=sharing在这里插入图片描述
在这里插入图片描述

下载预先训练好的模型

bash download_models.sh

在这里插入图片描述

渲染视频

python run_nerf.py --config configs/fern_dsnerf.txt --render_only

报错显示没有这个文件

run_nerf.py: error: Unable to open config file: configs/fern_dsnerf.txt. Error: No such file or directory


## 修改文件为python run_nerf.py --config configs/fern_2v.txt --render_only

又报错

FileNotFoundError: [Errno 2] No such file or directory: ‘data/split_allview_npy/fern_2view/train_images.npy’

此时将文件名split_allview_new改为split_allview_npy

在这里插入图片描述

继续渲染

python run_nerf.py --config configs/fern_2v.txt --render_only

又报错

Loaded colmap llff (5, 756, 1008, 3) (120, 3, 5) [ 756. 1008.
829.89215] ./data/split_allview_npy/fern_2view DEFINING BOUNDS NEAR FAR 1.200000035762787 5.672883987426758 Found ckpts
[‘./logs/release/fern_2v/50000.tar’] Reloading from
./logs/release/fern_2v/50000.tar Not ndc! RENDER ONLY test poses shape
torch.Size([120, 3, 5]) 0%|
| 0/120 [00:00<?, ?it/s]0 0.0010442733764648438
/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/torch/functional.py:504:
UserWarning: torch.meshgrid: in an upcoming release, it will be
required to pass the indexing argument. (Triggered internally at
…/aten/src/ATen/native/TensorShape.cpp:3190.) return
_VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined] torch.Size([756, 1008, 3]) torch.Size([756, 1008]) max: 5.531892 0%|
| 0/120 [00:48<?, ?it/s] Traceback (most recent call last): File
“/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/PIL/PngImagePlugin.py”,
line 1286, in _save
rawmode, mode = _OUTMODES[mode] KeyError: ‘F’

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File “run_nerf.py”, line 1134, in

train() File “run_nerf.py”, line 795, in train
rgbs, disps = render_path(render_poses, hwf, args.chunk, render_kwargs_test, gt_imgs=images, savedir=testsavedir,
render_factor=args.render_factor) File “run_nerf.py”, line 191, in
render_path
imageio.imwrite(os.path.join(savedir, ‘{:03d}_depth.png’.format(i)), depth) File
“/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/imageio/v2.py”,
line 397, in imwrite
return file.write(im, **kwargs) File “/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/imageio/core/v3_plugin_api.py”,
line 367, in exit
self.close() File “/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/imageio/plugins/pillow.py”,
line 123, in close
self._flush_writer() File “/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/imageio/plugins/pillow.py”,
line 457, in _flush_writer
primary_image.save(self._request.get_file(), **self.save_args) File
“/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/PIL/Image.py”,
line 2432, in save
save_handler(self, fp, filename) File “/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/PIL/PngImagePlugin.py”,
line 1289, in _save
raise OSError(msg) from e OSError: cannot write mode F as PNG

Begin接下来一步步解决报错的问题:

1、这个警告表示在未来的PyTorch版本中,调用torch.meshgrid函数时,将需要显式地传递一个indexing参数。indexing参数用来指定网格输出的索引方式,可以是’ij’或’xy’。'ij’表示矩阵索引,而’xy’表示笛卡尔索引。当前,这个参数是可选的,但警告建议应该显式地传递这个参数以避免未来的不兼容问题。

/home/uriky/anaconda3/envs/DSNeRF/lib/python3.7/site-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at …/aten/src/ATen/native/TensorShape.cpp:3190.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]

如图修改成这样子

return _VF.meshgrid(tensors, **kwargs, indexing=‘ij’)

在这里插入图片描述

2、现在不会再又警告,但是出现KeyError:F

在这里插入图片描述

很奇怪图像模式都没看见F,不知道从哪里冒出来的KeyError:F和cannot write mode F as PNG这个报错

在这里插入图片描述

这个KeyError:F,搜了一下原因:代码中可能没有看到直接设置图像模式为 ‘F’ 的地方,但是有可能 depth 变量是一个浮点类型的数组,而当尝试使用 imageio.imwrite 保存它时,imageio 或其底层的库(如 PIL/Pillow)可能试图将其解释为某种图像模式,并默认选择了 ‘F’。

要解决这个问题的话,需要确保 depth 变量在保存为 PNG 之前被转换为合适的图像模式。(通常,深度图会以灰度图像的形式保存,其模式为 ‘L’,并且像素值范围在 0 到 255 之间。如果 depth 数组是浮点数类型,并且范围不在这个区间内,需要先将其转换为合适的整数范围。)

插入一个冷知识:

深度图(Depth Map):是一种灰度图像,其中每个像素点代表传感器距离物体的实际距离。它是计算机视觉中常用的一种图像表示方式,用于描述场景的三维结构。在深度图中,像素的灰度值表示物体距离相机的远近,灰度值越大,表示物体距离相机越远;反之,灰度值越小,表示物体距离相机越近。

找了半天没见这个depth然后打开github,https://github.com/dunbar12138/DSNeRF/issues/107,这个佬说改一下这一行代码(我的救星呜呜呜)
在这里插入图片描述

把depth = depth.cpu().numpy()

改成depth = depth.cpu().numpy().astype(np.uint8)

在这里插入图片描述

插入冷知识:

.astype(np.uint8)是NumPy数组的一个方法,用于更改数组的数据类型。np.uint8是无符号8位整数类型,常用于表示图像的像素值(范围从0到255)。如果depth的原始数据类型不是np.uint8,这个操作会将其转换为np.uint8

全部错误已解决(1、2、两个错误)

在这里插入图片描述

现在开始渲染视频

在这里插入图片描述

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

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

相关文章

【Linux】进程间通信(共享内存、消息队列、信号量)

一、System V —— 共享内存&#xff08;详解&#xff09; 共享内存区是最快的 IPC 形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说&#xff0c;就是进程不再通过执行进入内核的系统调用来传递彼此的数…

C# WinForm —— 10 单选按钮与复选框的介绍与使用

单选按钮 RadioButton 一组单选按钮中&#xff0c;只能选择一个&#xff0c;互相排斥 常用属性、事件&#xff1a; 属性用途(Name)单选按钮的ID&#xff0c;在代码里引用的时候会用到,一般以 rb开头Text单选按钮旁边显示的 文本信息Checked单选按钮的勾选状态Appearance控制单…

【JavaScript】内置对象 ④ ( Math 内置对象常用方法 | 取绝对值 | 向下取整 | 向上取整 | 四舍五入取整 | 取随机数 )

文章目录 一、Math 内置对象常用方法1、计算绝对值 - Math.abs2、取整计算 - Math.floor 向下取整 / Math.ceil 向上取整 / Math.round 四舍五入3、随机数 - Math.random4、代码示例 - 猜随机数 一、Math 内置对象常用方法 1、计算绝对值 - Math.abs 向 Math.abs() 方法中 传入…

报错:测试报错postman(测试接口)

报错如下 c.e.exception.GlobalExceptionHandler : 异常信息&#xff1a; Content type multipart/form-data;boundary--------------------------952399813172082093419475;charsetUTF-8 not supported 解决&#xff1a; 异常信息 Content type multipart/form-data;boundary…

力扣-1832.判断句子是否全为字母句

思路: 首先&#xff0c;我们初始化了一个长度为 26 的布尔值列表 exist&#xff0c;所有值都为 False&#xff0c;表示所有字母初始都未出现过。然后&#xff0c;我们遍历输入的字符串 sentence 中的每个字符。对于每个字符&#xff0c;我们通过计算其 ASCII 码值减去字母 a 的…

深度学习从入门到精通—Transformer

1.绪论介绍 1.1 传统的RNN网络 传统的RNN&#xff08;递归神经网络&#xff09;主要存在以下几个问题&#xff1a; 梯度消失和梯度爆炸&#xff1a;这是RNN最主要的问题。由于序列的长距离依赖&#xff0c;当错误通过层传播时&#xff0c;梯度可以变得非常小&#xff08;消失…

【产品经理修炼之道】- 需求挖掘之手机话费充值

画原型图从来就不是面试考察的重点&#xff0c;分析、解决问题才是产品经理的核心能力。那么该如何积累产品经验呢&#xff1f;本文以以「手机话费充值」为案例&#xff0c;分享整个设计流程和思路&#xff0c;希望对你有所启发。 不少产品新人有个误区&#xff1a;产品经理的日…

C#带引导窗体的窗体设计方法:创建特殊窗体

目录 1.设计操作流程 2.实例 &#xff08;1&#xff09;Resources.Designer.cs &#xff08;2&#xff09;Frm_Main.Designer.cs &#xff08;3&#xff09;Frm_Main.cs &#xff08;4&#xff09;Frm_Start.Designer.cs &#xff08;5&#xff09;Frm_Start.cs &#…

调用另一个程序的数据 IMPORT EXPORT MEMORY ID

*字段介绍&#xff1a; *1.SELNAME 屏幕字段名 *2.KIND 参数类型 P PARAMETER S SELECT-OPTION *3.其他的字段和SELECT-OPTION 一样 SUBMIT xxx VIA SELECTION-SCREEN "要不要显示选择屏幕 WITH SELECTION-TABLE xxx "选择屏幕的值 AND RETURN . 利用SUBMIT XXX …

模拟信号的离散化

本文介绍模拟信号的离散化。 1.采样定理 定义&#xff1a;若想重建输入的模拟信号&#xff0c;采样频率必须大于等于输入模拟信号最高频率的2倍&#xff0c;即&#xff1a; 其中&#xff0c;为采样频率&#xff0c;为输入模拟信号最高频率 否则&#xff0c;信号会发生混叠 2…

电脑本地搭建privateGPT流程

文章目录 前言效果所需文件流程1,python版本2,工程文件安装2.1服务端搭建2.2客户端搭建 3,模型下载 前言 当我的电脑主机在本地运行privateGPT的时候我听到了cpu风扇在呼啸, 至于privateGPT是干什么的, 其实就相当于一个文档分析软件,只不过内置了一个gpt,你把文件丟给他,你可…

Oracle delete删除数据是否为逻辑删除、新插入数据占用的数据块位置实验

假设一&#xff1a;数据库delete删除为直接删除 假设二&#xff1a;数据库delete删除为逻辑删除&#xff0c;在数据块标记出来&#xff0c;但是实际并没有删除。 方式一&#xff1a;通过dump数据块的方式来实现 我们先用小数据量&#xff0c;通过dump数据块的方式来实现 -- 数…

虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本

虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本 情况描述原因分析解决方法 情况描述 公司开发机上打开虚拟机报错&#xff08;w10ent64d.vmx&#xff09;&#xff08;这虚拟机是我在家里开发机上创建的&#xff09;&#xff0c;报错截图如下&#xff1a; 报错信息…

个人音乐播放网站项目(SpringBoot+Linux部署上线)

在做完第一个博客系统项目以后&#xff0c;接着做下一个项目&#xff1a;音乐播放网站项目&#xff0c;此项目应用的技术栈和第一个项目是差不多的&#xff0c;即算是学完SSM等知识以后的两个入门级Java开发项目吧。 此项目包含的核心功能有&#xff1a; 一、登录、注册、退出…

初学python记录:力扣1146. 快照数组

题目&#xff1a; 实现支持下列接口的「快照数组」- SnapshotArray&#xff1a; SnapshotArray(int length) - 初始化一个与指定长度相等的 类数组 的数据结构。初始时&#xff0c;每个元素都等于 0。void set(index, val) - 会将指定索引 index 处的元素设置为 val。int sna…

中国版VIX—基于上证50ETF

中国版VIX—基于上证50ETF 文章目录 中国版VIX—基于上证50ETF背景VIX与SKEW指数复现方法概要部分代码&#xff1a; 完整代码及资料可关注gzh “finance褪黑素” 回复关键字 【3003】 获取 背景 VIX指数是芝加哥期权交易所引入的用于衡量股票市场波动率的指标&#xff0c;主要…

比亚迪24届春招Offer面经

本文介绍2024届春招中&#xff0c;比亚迪的高级底盘工程师岗位1场面试的基本情况、提问问题等。 2024年04月投递了比亚迪的系统开发类、 技术研发类、 技术研究类岗位&#xff0c;面试结束后分配至高级底盘工程师岗位&#xff1b;面试前未确定部门&#xff0c;面试结束后分配至…

区块链技术与应用学习笔记(1-4节)——北大肖臻课程

目录 1. 区块链初识(课程简介&#xff09; 被过度炒作&#xff0c;落地应用有限&#xff1f; 下一代的价值互联网&#xff1f;世界上最慢的数据库&#xff1f; 2. BTC-密码学原理&#xff08;比特币&#xff09; 1)哈希 哈希函数特点 个人学习所得 2)签名 个人对于…

利用Spring Boot后端与Vue前端技术构建现代化电商平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

竞赛课第九周(埃式筛法,矩阵乘法)

1.埃式筛法:求区间[2, n]内所有的素数对 【参考代码】 #include <bits/stdc.h> using namespace std;const int N 1e5; vector<int> prime; bool visit[N];int main() {int n;cin>>n;memset(visit, false, sizeof(visit));for(int i2; i<sqrt(n); i){i…