NeRF 源码分析解读(一)

本文深入解析了PyTorch版NeRF的代码,从数据加载的lego图像示例入手,讲解了如何获取图像、转置矩阵和生成光线。后续章节将探讨网络架构与渲染过程。

NeRF 源码解读(一)

前言

NeRF 是三维视觉中新视图合成任务的启示性工作,最近领域内出现了许多基于 NeRF 的变种工作。本文以pytorch 版 NeRF 作为基础对 NeRF 的代码进行分析。
主要从以下方面开展:

  1. 数据的加载
  2. 光线的生成
  3. NeRF 网络架构
  4. 渲染过程

一、数据的加载

本文以加载合成数据集中 lego 图像为例。
首先我们观察 ./data/nerf_synthetic/lego 文件夹下的树结构:
文件结构
train、test、val 三个文件夹下包含了训练要用到的 .png 图像,每个文件夹下包含 100 个文件。.json 文件包含了相机的 camera2word 转置矩阵,下图展示了部分文件中的内容。关于此转置矩阵不再展开叙述,具体知识可查看 SLAM 14 讲。了解以上基本信息后解析数据加载的代码。
在这里插入图片描述
frame 的值是一个列表,其中列表中的值是字典

def train():

    # 设置参数
    parser = config_parser()
    args = parser.parse_args()
    
    ...
    
    elif args.dataset_type == 'blender':
	    images, poses, render_poses, hwf, i_split = load_blender_data(args.datadir, args.half_res, args.testskip)
	    print('Loaded blender', images.shape, render_poses.shape, hwf, args.datadir)
	    i_train, i_val, i_test = i_split
		
		# 设定边界框的远近边界
	    near = 2.
	    far = 6.
		
		# 将 RGBA 转换成 RGB 图像
	    if args.white_bkgd:
	    	# 如果使用白色背景
	        images = images[...,:3]*images[...,-
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值