DSNeRF复现流程

news/2024/5/8 17:46:47

创建虚拟环境安装依赖

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.mrgr.cn/p/52841742

相关文章

Qt xml示范

1.数据格式 #ifndef XML_DATA_H #define XML_DATA_H#include<QWidget>struct Student {int s_id;QString s_name;double s_math_score;double s_english_score;}; struct Teacher{int t_id;QString t_name;QVector<Student> t_students_v; };#endif // XML_DATA_H…

Day01 Web服务搭建站库分离路由访问

常规的Web应用搭建: 1.购买云服务器,购买域名2.云服务器去搭建中间件 windows server 安装web角色后默认可以直接通过域名打开网站首页3.下载并上传Web程序源码 zblog源码官网可下载4.添加网站并绑定域名目录 域名解析设置:二级域名ablog.whgojp.top 解析到该服务器zblog程序…

网络安全防护措施:保障信息安全的关键

随着互联网的普及和信息技术的快速发展&#xff0c;网络安全已成为企业和个人必须重视的重要问题。网络安全不仅涉及到保护个人隐私和机密信息&#xff0c;还关系到企业的声誉和财务安全。在这个信息爆炸的时代&#xff0c;制定有效的网络安全防护措施至关重要。本文将探讨几种…

什么是langchain

概念 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。他主要拥有 2 个能力&#xff1a; -可以将 LLM 模型&#xff08;大规模语言模型&#xff09;与外部数据源进行连接 -允许与 LLM 模型进行交互基础功能 支持多种模型接口&#xff0c;比如 OpenAI、Hugging Fac…

c++使用googletest进行单元测试

googletest进行单元测试 使用Google test进行测试一、单元测试二、使用gmock测试 使用Google test进行测试 使用场景&#xff1a; 在平时写代码中&#xff0c;我们需要测试某个函数是否正确时可以使用Google test使用&#xff0c;当然&#xff0c;我们也可以自己写函数进行验证…

什么是储能电站的一次设备与二次设备?

随着国家政策导向和扶持&#xff0c;储能电站的建设&#xff0c;在各地均稳步推进&#xff0c;储能电站的设备主要分一次设备和二次设备两种&#xff0c;下面分别介绍这两方面内容&#xff1a; 储能电站一次设备 一次设备是储能电站的电路基础设施&#xff0c;包含变压器、主…

基于Python实现的推箱子小游戏

Python贪吃蛇小游戏实现: 推箱子曾经在我们的童年给我们带来了很多乐趣。推箱子这款游戏现在基本上没人玩了&#xff0c;甚至在新一代人的印象中都已毫无记忆了。。。但是&#xff0c;这款游戏可以在一定程度上锻炼自己的编程能力。 运行效果如图所示&#xff1a; 游戏关卡有点…

就业班 第三阶段(nginx) 2401--4.22 day1 nginx1 http+nginx初识+配置+虚拟主机

一、HTTP 介绍 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据&#xff08;HTML 文件…

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音&#xff0c;英语简写是 tts) 包括接收 app 中需要语音合成的文本&#xff0c;再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis&#xff0c;外加一些处理如何表示要被合成的文本 (也被称为 utte…

curl wget 下载文件

curl 下载文件:curl -kO https://10.0.8.5:8888/chfs/shared/Application/360se13.1.6055.0.exe #下载远程服务器上的文件,需要定位到末端文件-k #忽略服务器ssl证书 -O #保存文件至本地,并使用源文件名 -o zhang.exe #使用自定义文件名 zhang.exe…

网络安全数字孪生:一种新颖的汽车软件解决方案

摘要 随着汽车行业转变为数据驱动的业务&#xff0c;软件在车辆的开发和维护中发挥了核心作用。随着软件数量的增加&#xff0c;相应的网络安全风险、责任和监管也随之增加&#xff0c;传统方法变得不再适用于这类任务。相应的结果是整车厂和供应商都在努力应对汽车软件日益增加…

CarrierConfig 加载流程和配置覆盖问题

问题 有的MVNO卡没有配置过 CarrierConfig及相关 overlay,但是实际运行的时候功能被override了 ,此时可能是因为CarrierConfig用了父类(同MCCMNC等情况)的配置,因此在直接查找对应卡cid或mccmnc+mvno属性时候的CarrierConfig是没办法找到影响功能的配置项的。 代码逻辑 …

力扣-LCR 126. 斐波那契数

1.题目 题目地址(LCR 126. 斐波那契数 - 力扣(LeetCode)) https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/ 题目描述 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) …

qml 下拉框图片的代码,不是ComBox

// 导入 QtQuick 2.2 模块 import QtQuick 2.2// 定义一个 Rectangle 组件&#xff0c;作为下拉菜单的容器 Rectangle {id: dropdown // 下拉菜单的 IDx: 0 // x 坐标y: 0 // y 坐标z: 0 // z 坐标width: 458 // 宽度height: 60 // 高度radius: 8 // 圆角半径color: "tran…

力扣HOT100 - 200. 岛屿数量

解题思路&#xff1a; 岛屿题目一般使用dfs。 1.判断是否越界 2.用0&#xff0c;1&#xff0c;2三个状态标识当前格子的状态&#xff08;三个状态比两个状态更清晰&#xff09; 3.向周围四个方向遍历 class Solution {public int numIslands(char[][] grid) {int cnt 0;fo…

R语言银行信用数据SOM神经网络聚类实现可视化

原文链接:http://tecdat.cn/?p=3231 原文出处:拓端数据部落公众号当今社会,“信用”越来越多的人们关注个人或企业,有望获得最高的信用评分,以享受更多的信贷额度,更优惠的利率。 那么我们如何评分信用,并使我们的客户可视化? 自组织地图( SOM )是一种无监督的数据可…

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024)

2024年大数据应用、智能控制与软件工程国际会议(BDAICSE2024) 会议简介 我们诚挚邀请您参加2024年大数据应用、智能控制和软件工程国际会议&#xff08;BDAICSE2024&#xff09;。这次会议将在美丽的长沙市举行。 本次大会旨在汇聚全球大数据应用、智能控制、软件工程等领…

PostgreSql-Install

PostgreSql源码安装 一、源代码下载二、操作系统配置三、编译安装四、启动数据库五、相关命令 PostgreSQL是一个强大的 开源对象关系数据库系统&#xff0c;它使用并扩展了SQL语言&#xff0c;并结合了许多功能&#xff0c;可以安全地存储和扩展最复杂的数据工作负载。 一、源…

第四章:Total Store Order and the x86 Memory Model

chapter4:TSO于X86内存模型 1、为什么需要TSO/x86 处理器内核长期以来使用write buffer来保存已提交的store指令,直到内存系统可以处理这些store请求。当store指令提交时,store请求进入write buffer,而当需要写入的缓存行在内存系统中可以保证缓存一致性时,store请求就退出…