sdfstudio跑neus系列算法

1、数据转换

先声明2-5步是用的官方replica_room0数据,暂时还没有跑自己的数据。neus算法的数据格式需要转换一下,用sdfdtudio中的转换脚本,在 脚本转换格式,终端在sdfdtudio工程目录下打开,在终端输入一下命令

python sdfstudio/scripts/datasets/process_nerfstudio_to_sdfstudio.py --data "input_dir" --output-dir "output_dir" --data-type choices=["colmap", "polycam"] --scene-type choices=["indoor", "object", "unbound"]

上面4个参数是必须选择的,--data-type choices=["colmap", "polycam"]意思是你之前的数据是用colmap生成的还是用polycam生成的。经过脚本转换后会有meda_data.jsion的文件,这个是必须要有的。

2、训练

跑neus系列算法,在终端运行ns-train neus-xxx -h可以查看相关命令行参数,下面以neus-facto算法为例

ns-train neus-facto --pipeline.model.sdf-field.inside-outside True --pipeline.model.mono-depth-loss-mult 0.1  --pipeline.model.mono-normal-loss-mult 0.05  --vis viewer --experiment-name replica8.3-17.58 sdfstudio-data --data data/sdfstudio-demo-data/replica-room0 --include_mono_prior True

data就是在1中转换之后的数据路径。如果报端口被占用的错误,就上面命令中加上--viewer.websocket-port 8005 更改端口。

nues系列部分算法对显存有要求,我的12G的显存跑算法时总是加载数据时进程被杀死。neus-fanto-angelo算法如果使用默认的射线数可能需要40多G的显存,我将射线数减半勉强在24G显存上跑起来。

如果是室内数据则将下面的命令设置为True,如果是室外数据则设置为False,比如室内数据

--pipeline.model.sdf-field.inside-outside True

3、提取mesh

在终端输入ns-extract-mesh -h查看命令行参数,我的neus-facto算法提取mesh的命令如下

ns-extract-mesh --load-config outputs/replica8.2_13.44/neus-facto/2023-08-02_134440/config.yml --output-path meshes/replica8.2_13.44.ply

4、mesh贴图

贴图的命令不在参数命令行里,需要再终端运行scripts/texture.py脚本,在终端运行python scripts/texture.py -h同样可以查看相关参数,

python scripts/texture.py --load-config outputs/replica8.4-11.19/neus-facto/2023-08-04_112253/config.yml --output-dir meshes/texture --input-mesh-filename meshes/replica8.4-11.19.ply

5.渲染成视频

输入一下命令,会有一个窗口,需要手动旋转拖动,要不然视频是静止的,个人觉的渲染成视频没有必要了,上面4步就足够了。

ns-render-mesh --meshfile meshes/replica8.2_13.44.ply --traj interpolate  --output-path renders/replica8.2_13.44.mp4 sdfstudio-data --data data/sdfstudio-demo-data/replica-room0

你可能感兴趣的:(java,服务器,前端)