Open rexainn opened 7 months ago
如果把mask.yaml注释掉,又会有新的error:
您好,从error log来看,是没装imgui_bundle这个包
但是我使用的是evc -t test
呀,ingui是必装的吗
因吹斯汀,我尝试复现一下
Ah,和imgui没关系,原因是你之前装过easyvolcap,需要在4k4d仓库重新跑一下pip install -e .
指令(readme里的installation section有提及),否则会引用easyvolcap里的代码,自然找不到SuperChargedR4DV
Command:
evc -t test -c configs/projects/realtime4dv/rendering/4k4d_rxy_demo.yaml,configs/specs/eval.yaml,configs/specs/spiral.yaml,configs/specs/ibr.yaml,configs/specs/vf0.yaml
Error如下:
Error log
2024-02-01 22:51:17.099045 easyvolcap.runners -> <module>: Failed to import submodule volumetric_video_viewer of __init__.py:9 /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/runners/__init__.py ╭──────────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────────╮ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/runners/__init__.py:6 in <module> │ │ │ │ ❱ 6 │ │ exec(f'from . import {module}') │ │ in <module>:1 │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/runners/volumetric_video_viewer.py:21 in <module> │ │ │ │ ❱ 21 from imgui_bundle import imgui_color_text_edit as ed │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ModuleNotFoundError: No module named 'imgui_bundle' 2024-02-01 22:51:17.143225 easyvolcap.scripts.main -> preflight: Starting experiment: 4k4d_rxy_demo, command: test main.py:80 2024-02-01 easyvolca… Loading mask bytes for data/rxy/rxy_demo/masks VAL 100% ━━━━━━━━━━━ 4/4 0:00:00 < 0:00:00 258.9 it/s p… 22:51:17.… -> load_resi… 2024-02-01 easyvolca… Loading imgs bytes for data/rxy/rxy_demo/images VAL 100% ━━━━━━━━━━ 4/4 0:00:00 < 0:00:00 403.3 it/s p… 22:51:18.… -> load_resi… 2024-02-01 22:51:18.886432 easyvolcap.utils.console_utils -> inner: Runtime exception: OpenCV(4.9.0) console_utils.py:341 /io/opencv/modules/imgcodecs/src/loadsave.cpp:1121: error: (-215:Assertion failed) !image.empty() in function 'imencode' ╭──────────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────────╮ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/utils/console_utils.py:338 in inner │ │ │ │ ❱ 338 │ │ │ return func(*args, **kwargs) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:56 in inner │ │ │ │ ❱ 56 │ │ return call_from_cfg(func, cfg) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:47 in call_from_cfg │ │ │ │ ❱ 47 │ return func(**call_args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/scripts/main.py:158 in test │ │ │ │ ❱ 158 │ val_dataloader: "VolumetricVideoDataloader" = DATALOADERS.build(val_dataloader_cfg) # reuse the validataion │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:300 in build │ │ │ │ ❱ 300 │ │ return self.build_func(*args, **kwargs, registry=self) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:131 in build_from_cfg │ │ │ │ ❱ 131 │ return call_from_cfg(obj_cls, args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:47 in call_from_cfg │ │ │ │ ❱ 47 │ return func(**call_args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/dataloaders/volumetric_video_dataloader.py:94 in __init__ │ │ │ │ ❱ 94 │ │ dataset: VolumetricVideoDataset = DATASETS.build(dataset_cfg) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:300 in build │ │ │ │ ❱ 300 │ │ return self.build_func(*args, **kwargs, registry=self) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:131 in build_from_cfg │ │ │ │ ❱ 131 │ return call_from_cfg(obj_cls, args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:47 in call_from_cfg │ │ │ │ ❱ 47 │ return func(**call_args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/dataloaders/datasets/image_based_inference_dataset.py:33 i │ │ │ │ ❱ 33 │ │ call_from_cfg(super().__init__, kwargs) # will have prepared other parts of the dataset (interpolation or o │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:47 in call_from_cfg │ │ │ │ ❱ 47 │ return func(**call_args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/dataloaders/datasets/volumetric_video_inference_dataset.py │ │ │ │ ❱ 56 │ │ call_from_cfg(super().__init__, kwargs) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/engine/registry.py:47 in call_from_cfg │ │ │ │ ❱ 47 │ return func(**call_args) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/dataloaders/datasets/volumetric_video_dataset.py:272 in __ │ │ │ │ ❱ 272 │ │ │ self.load_bytes() # load image bytes (also load vhulls) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/dataloaders/datasets/image_based_inference_dataset.py:70 i │ │ │ │ ❱ 70 │ │ return VolumetricVideoDataset.load_bytes(self) # store images │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/dataloaders/datasets/volumetric_video_dataset.py:472 in lo │ │ │ │ ❱ 472 │ │ │ │ decode_crop_fill_ims_bytes(self.ims_bytes, self.mks_bytes, self.Ks.numpy(), self.Rs.numpy(), self.T │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/utils/data_utils.py:1679 in decode_crop_fill_ims_bytes │ │ │ │ ❱ 1679 │ out = parallel_execution(list(ims_bytes), list(mks_bytes), list(Ks), list(Rs), list(Ts), list(bounds), │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/utils/parallel_utils.py:69 in parallel_execution │ │ │ │ ❱ 69 │ │ │ │ results.append(async_result.get()) # will sync the corresponding thread │ │ │ │ /home/jj/.conda/envs/sadtalker/lib/python3.8/multiprocessing/pool.py:771 in get │ │ │ │ ❱ 771 │ │ │ raise self._value │ │ │ │ /home/jj/.conda/envs/sadtalker/lib/python3.8/multiprocessing/pool.py:125 in worker │ │ │ │ ❱ 125 │ │ │ result = (True, func(*args, **kwds)) │ │ │ │ /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/utils/data_utils.py:1663 in decode_crop_fill_im_bytes │ │ │ │ ❱ 1663 │ im_bytes = cv2.imencode(encode_ext, img, [cv2.IMWRITE_JPEG_QUALITY, jpeg_quality, cv2.IMWRITE_PNG_COMPRESSION, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ error: OpenCV(4.9.0) /io/opencv/modules/imgcodecs/src/loadsave.cpp:1121: error: (-215:Assertion failed) !image.empty() in function 'imencode' 2024-02-01 easyvolcap.… Cropping msks imgs for data/rxy/rxy_demo VAL 25% ━━━╺━━━━━━━━━ 1/4 0:00:01 < -:--:-- ? it/s p… 22:51:19.806… -> decode_crop… *** OpenCV(4.9.0) /io/opencv/modules/imgcodecs/src/loadsave.cpp:1121: error: (-215:Assertion failed) !image.empty() in function 'imencode' > /DATA/DATA1/rxy_code/projects/202312_demo/EasyVolcap/easyvolcap/utils/data_utils.py(1663)decode_crop_fill_im_bytes() 1661 K[1, 2] -= y 1662 -> 1663 im_bytes = cv2.imencode(encode_ext, img, [cv2.IMWRITE_JPEG_QUALITY, jpeg_quality, cv2.IMWRITE_PNG_COMPRESSION, png 1664 mk_bytes = cv2.imencode(encode_ext, msk, [cv2.IMWRITE_JPEG_QUALITY, jpeg_quality, cv2.IMWRITE_PNG_COMPRESSION, png 1665 return im_bytes, mk_bytes, K, h, w, x, y
您好,但是这个error还是没有解决。
不使用mask会报:
IndexError: list index out of range
2024-02-04 18:11:23.256265 easyvolcap.runners.volumet… 0% ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0/300 0:00:02 < -:--:-- ? it/s v…
-> test_generator:
*** list index out of range
> /DATA/DATA1/rxy_code/projects/202312_demo/4K4D/easyvolcap/models/samplers/super_charged_r4dv.py(492)<listcomp>()
490 # Extract input
491 xyz = torch.stack([self.pcds[l] for l in index]) # B, N, 3
--> 492 rad = torch.stack([self.rads[l] for l in index]) # B, N, 3
493 occ = torch.stack([self.occs[l] for l in index]) # B, N, 3
494 cent = torch.stack([self.cents[l] for l in index]) # B, S, 3
你好,4k4d现在的代码不支持training,所以会默认load trained models,load不到就会报你注释掉mask之后的错误。
evc -t test -c configs/projects/realtime4dv/rendering/4k4d_rxy_demo.yaml,configs/specs/eval.yaml,configs/specs/spiral.yaml,configs/specs/ibr.yaml,configs/specs/vf0.yaml
这行指令的意思是使用预训练模型test我的数据集嘛。那我是要怎么指定预训练模型?
我是按照readme做的,trained model都下载在指定路径里了TT我和readme唯一的区别就是使用了自己的数据集,所以重新写了config。
问题是在custom dataset上test pretrained model,他应该从data/trained_model/4k4d_0013_01
加载模型,而不是从data/trained_model/4k4d_rxy_demo
加载模型。
看起来是没有像EasyVolcap一样有inference的代码。
是的,4k4d是per-scene optimization方法
Command:
evc -t test -c configs/projects/realtime4dv/rendering/4k4d_rxy_demo.yaml,configs/specs/eval.yaml,configs/specs/spiral.yaml,configs/specs/ibr.yaml,configs/specs/vf0.yaml
Error如下:
Error log
```shell 2024-02-01 22:51:17.099045 easyvolcap.runners ->