美文网首页
NeRF不同阶段时间消耗测试结果

NeRF不同阶段时间消耗测试结果

作者: 小黄不头秃 | 来源:发表于2024-01-23 09:26 被阅读0次

    测试设备:Windows 11 专业版
    显卡型号:NVIDIA 3050
    显存:4G
    CPU型号: Intel 12th Gen i5-12450H
    内存:16G
    测试代码https://github.com/xunull/read-nerf-pytorch
    测试数据集描述:自建数据集,原始图像大小:1280 px X 720 px,测试过程中使用下采样数据集,下采样2x之后的图像大小为:640px X 360px。数据集中一共包含:113张图片。使用colmap进行位姿恢复。数据格式为:LLFF。

    参数设置

    #实验名称和数据集位置
    expname = xxx_test
    basedir = ./logs
    datadir = ./data/llff/test
    dataset_type = llff
    
    # 下采样倍数
    factor = 2
    llffhold = 2
    
    #批量大小1024根光线
    N_rand = 1024
    N_samples = 64
    N_importance = 64
    
    use_viewdirs = True
    raw_noise_std = 1e0
    
    spherify = True
    render_only = True
    

    1、训练过程:

    (1)数据准备过程

    (2)主循环(20000次迭代,每一次迭代是一个批量的数据)

    3、结论分析:

    在数据准备的过程中,将数据集重构最花费时间,将图像数据构建为[(N-3)*H*W, ro+rd+rgb, 3],所需要的时间最多。

    然而在训练过程中,最花费时间的是主循环的内容,主循环包括了:获取数据、前向推理和反向传播三个环节。在评估推理时间时,我们将保存模型、测试视频和测试图片的时间出去。当每完成一个批次的训练,将会花费1.3秒钟左右,其中模型前向推理的时间最多,占比81%。如果主循环轮次为20000轮,则可估计出在该电脑配置上,将需要7.2小时完成训练。

    在测试过程中,每一个的相机位姿需要10.67秒推理一张图片,所以完成120个相机位姿的计算总共需要花费21.2分钟。经排查,测试过程中最花费时间的仍然是前向推理过程,训练过程中一个批次只有1024条光线参与推理,形状为:[1024, 11]。但是在测试的时候,一张图像存在640*360个像素,所以,输入的数据的形状是:[230400, 11]。输入的数据量更大,自然需要更多的时间。

    关于NeRF神经网络的速度优化可以从以下几方面进行优化:
    (1)利用instant-ngp、3D高斯等技术加速训练过程。
    (2)利用神经网络压缩技术对网络结构进行优化
    (3)可以考虑利用maching cubes技术将隐式模型,转换为mesh、点云、obj等格式。可直接获得整体模型,但可能会导致模型精度变差。
    (4)不使用colmap生成位姿,由slam直接获取位姿。

    相关文章

      网友评论

          本文标题:NeRF不同阶段时间消耗测试结果

          本文链接:https://www.haomeiwen.com/subject/idoyodtx.html