Files

91 lines
3.3 KiB
Python
Raw Permalink Normal View History

# Copyright (c) Alibaba, Inc. and its affiliates.
import os
import unittest
import torch
from modelscope.hub.snapshot_download import snapshot_download
from modelscope.msdatasets import MsDataset
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import DownloadMode, Tasks
from modelscope.utils.test_utils import test_level
class NeRFReconVQCompressionBlender(unittest.TestCase):
def setUp(self) -> None:
self.model_id = 'DAMOXR/cv_nerf_3d-reconstruction_vector-quantize-compression'
pretrained_model = 'ficus_demo.pt'
data_dir = MsDataset.load(
'nerf_recon_dataset', namespace='damo',
split='train').config_kwargs['split_config']['train']
nerf_synthetic_dataset = os.path.join(data_dir, 'nerf_synthetic')
self.blender_scene = 'ficus'
data_dir = os.path.join(nerf_synthetic_dataset, self.blender_scene)
self.pipeline = pipeline(
Tasks.nerf_recon_vq_compression,
model=self.model_id,
dataset_name='blender',
data_dir=data_dir,
downsample=1,
ndc_ray=False,
ckpt_path=pretrained_model)
2025-08-07 19:26:32 +08:00
@unittest.skipUnless(test_level() >= 1, 'dataset download failure')
@unittest.skipIf(not torch.cuda.is_available(), 'cuda unittest only')
def test_evalutaion(self):
render_dir = f'./exp/{self.blender_scene}'
self.pipeline(
dict(test_mode='evaluation_test', render_dir=render_dir, N_vis=5))
2025-08-07 19:26:32 +08:00
@unittest.skipUnless(test_level() >= 1, 'dataset download failure')
@unittest.skipIf(not torch.cuda.is_available(), 'cuda unittest only')
def test_render_path(self):
render_dir = f'./exp/{self.blender_scene}'
self.pipeline(
dict(test_mode='render_path', render_dir=render_dir, N_vis=30))
class NeRFReconVQCompressionLLFF(unittest.TestCase):
def setUp(self) -> None:
self.model_id = 'DAMOXR/cv_nerf_3d-reconstruction_vector-quantize-compression'
pretrained_model = 'fern_demo.pt'
data_dir = MsDataset.load(
'DAMOXR/nerf_llff_data',
subset_name='default',
split='test',
).config_kwargs['split_config']['test']
nerf_llff = os.path.join(data_dir, 'nerf_llff_data')
self.llff_scene = 'fern'
data_dir = os.path.join(nerf_llff, self.llff_scene)
self.pipeline = pipeline(
Tasks.nerf_recon_vq_compression,
model=self.model_id,
dataset_name='llff',
data_dir=data_dir,
downsample=4,
ndc_ray=True,
ckpt_path=pretrained_model)
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
@unittest.skipIf(not torch.cuda.is_available(), 'cuda unittest only')
def test_evalutaion(self):
render_dir = f'./exp/{self.llff_scene}'
self.pipeline(
dict(test_mode='evaluation_test', render_dir=render_dir, N_vis=5))
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
@unittest.skipIf(not torch.cuda.is_available(), 'cuda unittest only')
def test_render_path(self):
render_dir = f'./exp/{self.llff_scene}'
self.pipeline(
dict(test_mode='render_path', render_dir=render_dir, N_vis=10))
if __name__ == '__main__':
unittest.main()