mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-12-20 14:20:38 +08:00
lazy all_train_cameras
Summary: Avoid calculating all_train_cameras before it is needed, because it is slow in some datasets. Reviewed By: shapovalov Differential Revision: D38037157 fbshipit-source-id: 95461226655cde2626b680661951ab17ebb0ec75
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b2dc520210
commit
3783437d2f
@@ -30,9 +30,10 @@ class DataSourceBase(ReplaceableBase):
|
||||
def get_datasets_and_dataloaders(self) -> Tuple[DatasetMap, DataLoaderMap]:
|
||||
raise NotImplementedError()
|
||||
|
||||
def get_all_train_cameras(self) -> Optional[CamerasBase]:
|
||||
@property
|
||||
def all_train_cameras(self) -> Optional[CamerasBase]:
|
||||
"""
|
||||
If the data is all for a single scene, returns a list
|
||||
If the data is all for a single scene, a list
|
||||
of the known training cameras for that scene, which is
|
||||
used for evaluating the viewpoint difficulty of the
|
||||
unseen cameras.
|
||||
@@ -59,6 +60,7 @@ class ImplicitronDataSource(DataSourceBase): # pyre-ignore[13]
|
||||
|
||||
def __post_init__(self):
|
||||
run_auto_creation(self)
|
||||
self._all_train_cameras_cache: Optional[Tuple[Optional[CamerasBase]]] = None
|
||||
|
||||
def get_datasets_and_dataloaders(self) -> Tuple[DatasetMap, DataLoaderMap]:
|
||||
datasets = self.dataset_map_provider.get_dataset_map()
|
||||
@@ -68,5 +70,10 @@ class ImplicitronDataSource(DataSourceBase): # pyre-ignore[13]
|
||||
def get_task(self) -> Task:
|
||||
return self.dataset_map_provider.get_task()
|
||||
|
||||
def get_all_train_cameras(self) -> Optional[CamerasBase]:
|
||||
return self.dataset_map_provider.get_all_train_cameras()
|
||||
@property
|
||||
def all_train_cameras(self) -> Optional[CamerasBase]:
|
||||
if self._all_train_cameras_cache is None: # pyre-ignore[16]
|
||||
all_train_cameras = self.dataset_map_provider.get_all_train_cameras()
|
||||
self._all_train_cameras_cache = (all_train_cameras,)
|
||||
|
||||
return self._all_train_cameras_cache[0]
|
||||
|
||||
@@ -118,8 +118,6 @@ def evaluate_dbir_for_category(
|
||||
if test_dataset is None or test_dataloader is None:
|
||||
raise ValueError("must have a test dataset.")
|
||||
|
||||
all_train_cameras = data_source.get_all_train_cameras()
|
||||
|
||||
image_size = cast(JsonIndexDataset, test_dataset).image_width
|
||||
|
||||
if image_size is None:
|
||||
@@ -149,7 +147,7 @@ def evaluate_dbir_for_category(
|
||||
preds["implicitron_render"],
|
||||
bg_color=bg_color,
|
||||
lpips_model=lpips_model,
|
||||
source_cameras=all_train_cameras,
|
||||
source_cameras=data_source.all_train_cameras,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user