复现nerfstudio并训练自己制作的数据集

网站:安装 - nerfstudio

GitHub - nerfstudio-project/nerfstudio:NeRF 的协作友好工作室

安装之前要确保电脑上已经有CUDA11.8或以上版本(更高版本的可以安装11.8的toolkit)

创建环境

conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip

安装依赖

首先,如果安装了2.0.1之前的PyTorch版本,则应卸载PyTorch、functhor和miny-cuda nn的早期版本。可以通过以下命令实现:

pip uninstall torch torchvision functorch tinycudann

结合CUDA11.8,安装Pytorch2.1.2

pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

安装CUDA所需要的扩展,通过以下命令实现:

conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit

安装tiny-cuda-nn包

这里先要从github上下载tiny-cuda-nn,然后在Microsoft VIsual C++的环境下编译资源。所以如果直接执行:

pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

可能会报错,提示:

× python setup.py egg_info did not run successfully.│ exit code: 1╰─> [8 lines of output]Traceback (most recent call last):File "<string>", line 2, in <module>File "<pip-setuptools-caller>", line 34, in <module>File "C:\Users\xxx\AppData\Local\Temp\pip-req-build-lz_n7l05\bindings/torch\setup.py", line 53, in <module>raise RuntimeError("Could not locate a supported Microsoft Visual C++ installation")RuntimeError: Could not locate a supported Microsoft Visual C++ installationBuilding PyTorch extension for tiny-cuda-nn version 1.7Obtained compute capability 86 from PyTorch[end of output]

这里参考了这两篇博客:安装tiny-cuda-nn时报错RuntimeError: Could not locate a supported Microsoft Visual C++ installation-CSDN博客、nerfstudio搭建 win11踩坑记录之tinycudann_nerfstudio windows-CSDN博客]

我直接说一下我的操作:

首先安装Visual Studio 2019的installer,并且选择“使用C++的桌面开发”,如下所示:

在这里插入图片描述

安装好以后记住安装路径,如果忘记了,可以在这里查看:

在这里插入图片描述

然后在path中添加环境变量,路径就是你的Visual Studio 2019安装路径后面加上\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64。

比如我的就是D:\Software\VisualStudio2019\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64:

在这里插入图片描述

在这里插入图片描述

添加好环境变量后,在虚拟环境nerfstudio中进入到 xxxxx\VC\Auxiliary\Build这个路径下,然后输入以下指令打开脚本,

.\vcvars64.bat

或者

start vcvars64.bat

接下来在弹出的新的命令行中重新输入:

pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

即可完成tiny-cuda-nn的安装。

安装ffmpeg

得到项目并配置好环境后,还需要在电脑上安装ffmpeg,否则会报错未在电脑上找到ffmpeg,这个时候我们需要单独安装ffmpeg。首先,进入ffmpeg官网:Download FFmpeg。找到以下选项,并下载essential版本。

在这里插入图片描述

在这里插入图片描述

下载压缩包并解压后,将里面bin文件夹添加进系统PATH环境变量,该文件夹下有三个exe文件:

在这里插入图片描述
在这里插入图片描述

接下来,在命令行输入:

ffmpeg -version

就可以查到ffmpeg版本了:

在这里插入图片描述

训练自己制作的数据集:

这里就不说怎么用官方提供的数据集,看看怎么把自己拍的照片拿去训练:

首先把自己拍的照片文件夹保存在一个路径下,比如我的是:D:\Project\nerfstudio\data\demorobo\images
在这里插入图片描述

官网给的指导是:

ns-process-data {video,images,polycam,record3d} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}

那我们就在命令行输入:

 ns-process-data images --data data/demorobo/images --output-dir data/demorobo  

这样就可以对我们的照片进行colmap操作,并且进行下采样:

在这里插入图片描述

得到的文件夹结构如下:

在这里插入图片描述

然后执行训练,官网说法是:

ns-train nerfacto --data {PROCESSED_DATA_DIR}

我们可以这样写:

ns-train nerfacto --data data/demorobo  

如果此时报错无法下载权重:

Saving config to: outputs\demorobo\nerfacto\2024-02-29_113035\config.yml             experiment_config.py:136
Saving checkpoints to: outputs\demorobo\nerfacto\2024-02-29_113035\nerfstudio_models           trainer.py:136
[11:30:36] Auto image downscale factor of 1                                                 nerfstudio_dataparser.py:484
Loading data batch ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Started threads
Setting up evaluation dataset...
Caching all 7 images.Downloading: "https://download.pytorch.org/models/alexnet-owt-7be5be79.pth" to C:\Users\28291/.cache\torch\hub\checkpoints\alexnet-owt-7be5be79.pth                                                      2%|███▋                                                                                                                                                         | 5.41M/233M [11:36<8:07:48, 8.16kB/s]
......
......
......
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

可以手动下载权重,在命令行输入:

curl -o C:/Users/28291/.cache/torch/hub/checkpoints/alexnet-owt-7be5be79.pth https://download.pytorch.org/models/alexnet-owt-7be5be79.pth

这样就可以正常训练了,能看到以下内容说明训练开始:
在这里插入图片描述

在服务器:http://localhost:7007里就可以实时查看训练进度。

看到以下内容说明训练结束:

在这里插入图片描述

输入ctrl+c退出训练。

评估训练指标

如果想评估训练指标,官网给的指令是:

ns-eval --load-config={PATH_TO_CONFIG} --output-path=output.json

就是把输出文件夹替换掉这个目录即可:

ns-eval --load-config=outputs/demorobo/nerfacto/2024-02-29_120354/config.yml --output-path=output.json

这样可以在项目根目录下的看到一个output.json文件,用记事本打开就可以看到指标:

{"experiment_name": "demorobo","method_name": "nerfacto","checkpoint": "outputs\\demorobo\\nerfacto\\2024-02-29_120354\\nerfstudio_models\\step-000029999.ckpt","results": {"psnr": 22.653573989868164,"psnr_std": 2.9266517162323,"ssim": 0.7372194528579712,"ssim_std": 0.10289175808429718,"lpips": 0.08905620872974396,"lpips_std": 0.026574086397886276,"num_rays_per_sec": 244670.8125,"num_rays_per_sec_std": 78561.875,"fps": 0.46850264072418213,"fps_std": 0.1504325270652771}
}

如果想在关闭后查看渲染情况,官网给的指令是:

ns-viewer --load-config {outputs/.../config.yml}

比如我的就是:

ns-viewer --load-config outputs/demorobo/nerfacto/2024-02-29_120354/config.yml 

然后点击Viser就可以打开可视化工具了。因为我训练的图片数量比较少,且分辨率比较低,所以目前只能得到这样的效果:

在这里插入图片描述

当然也可以在这里查看深度图等其他类型的可视化:

在这里插入图片描述

至于更多的使用方式,可以在官网查看介绍视频,说的很详细。

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

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

相关文章

Vector容器介绍

一、引言 在C标准库中&#xff0c;vector是一个非常重要的容器&#xff0c;它提供了动态数组的功能。与静态数组不同&#xff0c;vector可以在运行时动态地增加或减少其大小。这使得vector在处理不确定数量的数据时变得非常有用。vector容器保证了元素的连续存储&#xff0c;因…

浅谈 Linux 网络编程 - Server 端模型、sockaddr、sockaddr_in 结构体

文章目录 前言前置知识Server 端核心模型 【重点】相关函数 【重点】socket 函数bind 函数listen 函数accept 函数close 函数 sockaddr 数据结构 【重点】 前言 本文主要是对 Linux 网络编程中&#xff0c;Server 端的模型、相关函数 以及 sockaddr、sockaddr_in 结构体做介绍…

图片压缩上传实例

前台图片上传压缩是一种常见的需求&#xff0c;可以通过前端技术实现图片的压缩&#xff0c;减小图片的大小&#xff0c;提高页面加载速度。以下是一个前台图片上传压缩的实例&#xff1a; 首先&#xff0c;在前端页面中添加一个文件上传的input标签&#xff1a; <input ty…

黑马程序员——接口测试——day05——Request库、Cookie、Session、UnitTest框架

目录&#xff1a; Requests库 Requests库安装和简介设置http请求语法应用案例 案例1案例2案例3案例4Cookie Cookie简介CookieSession认证方式案例5-看演示&#xff0c;此代码不需实现Session Session简介Session自动管理Cookie案例6面试题Cookie和Session区别获取指定响应数据…

Codeforces Round 929 (Div. 3)

A. 全部负数处理到前面&#xff0c;全部都能变成正数 // Problem: A. Turtle Puzzle: Rearrange and Negate // Contest: Codeforces - Codeforces Round 929 (Div. 3) // URL: https://codeforces.com/contest/1933/problem/A // Memory Limit: 256 MB // Time Limit: 2000 …

300分钟吃透分布式缓存(拉钩教育总结)

开篇寄语 开篇寄语&#xff1a;缓存&#xff0c;你真的用对了吗&#xff1f; 你好&#xff0c;我是你的缓存老师陈波&#xff0c;可能大家对我的网名 fishermen 会更熟悉。 我是资深老码农一枚&#xff0c;经历了新浪微博从起步到当前月活数亿用户的大型互联网系统的技术演进…

Linux|centos7|yum和编译安装ImageMagick记录

一&#xff0c; yum安装imagemagick imagemagick这个软件是图像文件的处理神器&#xff0c;可以文字转图像以及图像的剪辑等等工作&#xff0c;也是配合人工智能工程的不可或缺的工具&#xff0c;具体的用处和特点就不在这里废话了&#xff0c;有兴趣的百度就行了 本次是在…

SpringBoot底层原理

SpringBoot底层原理 一 配置优先级 1.配置方式 Springboot中支持三种配置方式&#xff0c;分别为&#xff1a; application.propertiesapplication.ymlapplication.yaml 2.配置优先级 当存在多份配置文件时&#xff0c;配置文件会按照它们的优先级生效。 优先级从高到底…

Linux中df和du命令

当涉及到在Linux系统中管理磁盘空间时&#xff0c;df和du命令是非常有用的工具。除了基本用法外&#xff0c;它们还具有一些高级用法&#xff0c;可以提供更详细和定制化的磁盘信息。下面是Linux中df和du命令的十个常用的高级用法&#xff0c;附带相应的代码和输出。 df -i - 显…

欧盟网络安全产业分析

文章目录 前言一、欧盟网络安全战略历程二、欧盟网络安全政策法规2.1 《电子识别和信任服务条例》2.2 《支付服务指令(第二版)》2.3 NIS 指令系列三.欧盟主要的网络安全机构3.1 ENISA3.2 欧盟委员会3.3 欧洲数据保护委员会3.4 欧盟成员国自设的网络安全机构四、欧盟网络安全…

蓝桥杯-灌溉

参考了大佬的解题思路&#xff0c;先遍历一次花园&#xff0c;找到所有的水源坐标&#xff0c;把它们存入 “水源坐标清单” 数组内&#xff0c;再读取数组里的水源坐标进行扩散。 #include <iostream> using namespace std; int main() {int n,m,t,r,c,k,ans0,list_i0;…

c# aes加密解密私钥公钥通钥

using System.Security.Cryptography; using System.Text; namespace EncryptTest { internal class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); string 密 EncryptAESBASE64("你…

(每日持续更新)jdk api之OutputStreamWriter基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

c++ for 循环语句

循环语句 在C中&#xff0c;有几种循环语句可用于重复执行一段代码&#xff0c;直到满足指定条件为止&#xff0c;主要有 for 循环、while 循环、do-while 循环三种循环语句。三者区别&#xff1a; 循环类型特点for 循环1. 适用于已知循环次数的情况&#xff0c;循环次数事先…

教师资格证相关

文章目录&#xff1a; 一&#xff1a;考试时间 二&#xff1a;考试科目 三&#xff1a;相关网站 四&#xff1a;相关 一&#xff1a;考试时间 教资 笔试 面试笔试报名笔试考试笔试公布面试报名面试时间面试公布上半年1月14日3月12日4月15日4月…

推荐系统经典模型YouTubeDNN代码

文章目录 前言数据预处理部分模型训练预测部分总结与问答 前言 上一篇讲到过YouTubeDNN论文部分内容&#xff0c;但是没有代码部分。最近网上教学视频里看到一段关于YouTubeDNN召回算法的代码&#xff0c;现在我分享一下给大家参考看一下&#xff0c;并附上一些我对代码的理解…

一张图读懂人工智能

一、生成人工智能的概念和应用&#xff0c;以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力&#xff0c;被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和&#xff0c;并回答任何…

go语言基础 -- map的定义与使用

map的定义与使用 map声明基础语法map的基本使用map的遍历map切片map排序 map声明基础语法 // map的声明 var xxx_map map[key_type]value_typemap的key可以是基本数据类型&#xff0c;channel&#xff0c;接口&#xff0c;结构体&#xff0c;数组&#xff0c;但不能是slice&am…

leetcode刷题(剑指offer) 47.全排列Ⅱ

47.全排列Ⅱ 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]]示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[…

c#委托、lambda、事件

Lambda Lambda表达式是一种匿名函数&#xff0c;Lambda表达式通常以箭头“>”分隔左侧的输入和右侧的输出。 (parameter_list) > { statement_block } parameter_list 是由一个或多个参数组成的逗号分隔列表&#xff0c;每个参数都包括类型和名称&#xff0c;可以为空。…