你好! 这里是“出门吃三碗饭”本人,本文章接下来将介绍如何从0运行2020会议Mip-Nerf的Pytorch版本,让你自己动手渲染第一个三维模型。视频解说可以关注B站,搜索 出门吃三碗饭 ,),另外可以关注《AI知识物语》 公众号获取更多详情信息。
挖个坑,争取文章发布一周内更新好其代码讲解
PaperCode网址放在这里了
在这里我们看到文件目录里面是没有 数据集文件的
这里只需要下载画横线的那个压缩包即可
把下载好的数据集文件放入项目的data(没有就自己创建)文件夹下,如下图
具体需要安装的包在 requirements.txt
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对应的包来解决
使用指令
训练单视角的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
成功运行如下
解决办法:
1:调整batch_size num_samples等大小
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更好的显卡
使用以下指令评估单尺度和多尺度模型,将所有目录更改为您的目录
# 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
到这里就大功告成了,本文项目可以关注微信公众号发送关键词 资源 获得