Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第1张图片
项目论文
项目Github

你好! 这里是“出门吃三碗饭”本人,本文章接下来将介绍如何从0运行2020会议Mip-Nerf的Pytorch版本,让你自己动手渲染第一个三维模型。视频解说可以关注B站,搜索 出门吃三碗饭 ,),另外可以关注《AI知识物语》 公众号获取更多详情信息。

挖个坑,争取文章发布一周内更新好其代码讲解

1:百度搜索"PaperCode"

PaperCode网址放在这里了

2:左上角输入MipNerf 右键Enter

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第2张图片

2:选择第3个代码库(第2个也强烈推荐,其包含多个Nerf的复现)

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第3张图片

3:选择用git指令下载or zip包下载

在这里我们看到文件目录里面是没有 数据集文件的

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第4张图片

4:选择用git指令下载or zip包下载

这里只需要下载画横线的那个压缩包即可

数据集下载地址 Google Drive 需要科学上网
Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第5张图片

5:确认项目目录

把下载好的数据集文件放入项目的data(没有就自己创建)文件夹下,如下图

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第6张图片

6:创建python环境

具体需要安装的包在 requirements.txt

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第7张图片

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第8张图片
因为下载比较慢,建议使用镜像下载,

python -m pip install pytorch-lightning==1.5.2 einops==0.3.2 opencv-python==4.5.4.58 matplotlib==3.5.0 imageio==2.10.4 scipy==1.8.0 imageio-ffmpeg==0.4.5 tqdm==4.64.0 open3d==0.14.1 -i https://pypi.douban.com/simple

使用镜像下载的命令  把pytorch-lightning==1.5.2 换成自己需要下载的包即可
python -m pip install pytorch-lightning==1.5.2  -i https://pypi.douban.com/simple

这个是安装 torch的,我显卡版本是11.6  后面是cu116, 根据自己显卡情况改
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu116


在安装完包后,记得去查看每个.py 文件看看是否有import 方面的报错,有的话就 install对应的包来解决

7:开始训练

使用指令

训练单视角的Lego
python train.py --out_dir OUT_DIR --data_path UZIP_DATA_DIR --dataset_name blender exp_name EXP_NAME


训练多视角的Lego
python train.py --out_dir OUT_DIR --data_path OUT_DATA_DIR --dataset_name multi_blender exp_name EXP_NAME

我使用的命令(根据自己目录情况修改)
python train.py --out_dir out --data_path ./data/nerf_synthetic/lego --dataset_name blender exp_name exp

成功运行如下

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第9张图片

如果遇到缓存报错
Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第10张图片

解决办法:
1:调整batch_size num_samples等大小
Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第11张图片
Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第12张图片
Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第13张图片

2:在mip_nerf.py 修改代码,大概109行左右,目的是对报错的该行代码添加一个if条件,释放无关内存

view_direction = repeat(view_direction, 'batch feature -> batch sample feature', sample=num_samples)
            x = torch.cat([bottleneck, view_direction], dim=-1)
         #  if hasattr(torch.cuda, 'empty_cache'):
       #         x = torch.cat([bottleneck, view_direction], dim=-1) #这里取了条件前置
            # Here use 1 extra layer to align with the original nerf model.
            x = self.view_layers(x)
        raw_rgb = self.color_layer(x)
        return raw_rgb, raw_density

3:换云服务器or更好的显卡

8:测试(生成3D模型,以视频形式输出方便观察)

使用以下指令评估单尺度和多尺度模型,将所有目录更改为您的目录
# eval single scale model
python eval.py --ckpt CKPT_PATH --out_dir OUT_DIR --scale 1 --save_image
# eval multi scale model
python eval.py --ckpt CKPT_PATH --out_dir OUT_DIR --scale 4 --save_image
# summarize the result again if you have saved the pnsr.txt and ssim.txt
python eval.py --ckpt CKPT_PATH --out_dir OUT_DIR --scale 4 --summa_only


渲染球面路径视频
# Render spheric video
python render_video.py --ckpt CKPT_PATH --out_dir OUT_DIR --scale 4
# generate video if you already have images
python render_video.py --gen_video_only --render_images_dir IMG_DIR_RENDER

Mip-Nerf三维重建Pytorch使用Pycharm运行0基础教程_第14张图片

到这里就大功告成了,本文项目可以关注微信公众号发送关键词 资源 获得

你可能感兴趣的:(pytorch,pycharm,python,nerf,mip-nerf)