zju3dv / EasyVolcap

[SIGGRAPH Asia 2023 (Technical Communications)] EasyVolcap: Accelerating Neural Volumetric Video Research
Other
577 stars 41 forks source link

在自己的数据集上使用,请问bounds是什么? #15

Open rexainn opened 5 months ago

rexainn commented 5 months ago

按照https://github.com/zju3dv/EasyVolcap/blob/main/docs/misc/static.md 教程进行,复制粘贴cfg之后看到需要改变bounds,但我根本不知道他是啥,又该怎么改变呢?

rexainn commented 5 months ago

请问对于bounds这个参数的定义是什么?这是在custom dataset上运行必须修改的吗?

dendenxu commented 5 months ago

Hi @rexainn 。欢迎使用我们的代码! 在easyvolcap里 bounds是当前数据集的粗略包围盒(bounding box),默认的sampler会控制算法在这个包围盒里进行sample。我默认的bounding box设置的比较大,除非是在大规模数据集上跑算法,用默认的即可(删掉复制出来的config里的bounds条目用的就是默认的bounds了)

rexainn commented 5 months ago

感谢您的及时回复@dendenxu 。尝试之后,报了很多这种错误:

截屏2024-01-11 18 41 08
dendenxu commented 5 months ago

这个报错是因为python版本太低了,我没有特意支持过python3.7及以下的版本。推荐使用3.9或更高。当然这个位置的报错应该可以通过把这句话改成return [K] + list_of_imgs解决,您可以试一下

rexainn commented 5 months ago

@dendenxu 感谢!!还有几个小问题:

  1. 现在对于每一个视频我都需要先train再render吗?
  2. 有没有预训练模型可以用来直接render呢?因为在另一个issue中看到train的时间好像是24h起,每个视频都这样的话时间太长了。
dendenxu commented 5 months ago

我们有pretrained enerf模型,可以用于泛化的看novel view。

具体例子可以参考下面两个链接: https://github.com/zju3dv/EasyVolcap#inferencing-with-enerfi

https://github.com/zju3dv/EasyVolcap/blob/main/docs/misc/static.md#our-improved-enerf-implementation-and-generalization

这个文档里也有更详细的描述: https://github.com/zju3dv/EasyVolcap/blob/main/docs/projects/enerf.md

rexainn commented 5 months ago

您好!

  1. 如果想要在我自己的多视角动态数据集上使用,我的每个视角也就是每个摄像机是固定的,对于每个摄像机有一个视频,这样的一个多视频数据集是不是该按照https://github.com/zju3dv/EasyVolcap/blob/main/docs/misc/custom_dataset.md 这个文档来准备数据集呢?
  2. 这里面的多种校准方法是只要使用一种成功获取intri.yml和extri.yml之后就可以进行Video to Images->Segmentation->Space Carving这些流程了吗?
  3. 这样操作后的数据集直接evc -c configs/exps/l3mhet/l3mhet_${expname}.yaml进行训练就可以了吧?还需要对数据集进行后续的修改吗?
dendenxu commented 5 months ago

对于1和2,只要能有标定结果就可以进行下面的流程了,您粘贴的文档里我们介绍了几种标定方法,当然您也可以通过其他方式获得相机参数,我们的相机参数文件里只有R T(外参)和K D(内参)是硬性要求。

对于3,您需要为自己的数据集创建一个对应的实验yaml文件,最好同时再创建一个dataset文件来分别管理他们。您粘贴的文档里有介绍相关的流程。

rexainn commented 5 months ago

您好,我现在的理解是在我自己的数据集上使用,对于从头训练和直接使用预训练模型渲染,vhulls、surfs、masks、bkgd都不是必须的?只要有images和intri、extri就可以进行对吧?额外增加这些步骤只是为了提高性能?

rexainn commented 5 months ago

以及python scripts/segmentation/inference_bkgdmattev2.py --data_root ${datadir}需要使用的torchscript_resnet101_fp32.pth并未上传

dendenxu commented 5 months ago

以及python scripts/segmentation/inference_bkgdmattev2.py --data_root ${datadir}需要使用的torchscript_resnet101_fp32.pth并未上传

分割网络需要去BackgroundMattingV2这里单独下载的。我们会在doc里把这点说的更清楚。

dendenxu commented 5 months ago

您好,我现在的理解是在我自己的数据集上使用,对于从头训练和直接使用预训练模型渲染,vhulls、surfs、masks、bkgd都不是必须的?只要有images和intri、extri就可以进行对吧?额外增加这些步骤只是为了提高性能?

是的,对于ngp和enerf这类算法,只有相机参数和图像是必须的。 对于只需要前景的数据,提供mask并加入mask loss可以获得更好更稳定的效果(您粘贴的文档里有介绍如何使用mask)。 获得mask之后,可以计算visual hull以获得更好的bounding box估计(use_vhulls=True),对于基于点云的方法visual hull也是一种初始化(例如4K4D和3DGS,其中3DGS在本仓库的main readme和static.md里都有介绍使用方式)。

rexainn commented 5 months ago

感谢您的回复!以及这两个yaml也找不到了。这个是用来计算vhull的那部分。 image

dendenxu commented 5 months ago

您好,我更新了doc,现在的example config的路径应该已经修复了。

感谢您的回复!以及这两个yaml也找不到了。这个是用来计算vhull的那部分。 image