Make feature extractor pluggable

Summary: Make ResNetFeatureExtractor be an implementation of FeatureExtractorBase.

Reviewed By: davnov134

Differential Revision: D35433098

fbshipit-source-id: 0664a9166a88e150231cfe2eceba017ae55aed3a
This commit is contained in:
Jeremy Reizenstein
2022-05-18 08:50:18 -07:00
committed by Facebook GitHub Bot
parent cd7b885169
commit 9ec9d057cc
12 changed files with 151 additions and 57 deletions

View File

@@ -9,6 +9,9 @@ import unittest
from omegaconf import OmegaConf
from pytorch3d.implicitron.models.autodecoder import Autodecoder
from pytorch3d.implicitron.models.feature_extractor.resnet_feature_extractor import (
ResNetFeatureExtractor,
)
from pytorch3d.implicitron.models.generic_model import GenericModel
from pytorch3d.implicitron.models.implicit_function.idr_feature_field import (
IdrFeatureField,
@@ -63,7 +66,6 @@ class TestGenericModel(unittest.TestCase):
provide_resnet34()
args = get_default_args(GenericModel)
args.view_pooler_enabled = True
args.image_feature_extractor_enabled = True
args.view_pooler_args.feature_aggregator_class_type = (
"AngleWeightedIdentityFeatureAggregator"
)
@@ -77,9 +79,13 @@ class TestGenericModel(unittest.TestCase):
)
self.assertIsInstance(gm._implicit_functions[0]._fn, IdrFeatureField)
self.assertIsInstance(gm.sequence_autodecoder, Autodecoder)
self.assertIsInstance(gm.image_feature_extractor, ResNetFeatureExtractor)
self.assertFalse(hasattr(gm, "implicit_function"))
instance_args = OmegaConf.structured(gm)
if DEBUG:
full_yaml = OmegaConf.to_yaml(instance_args, sort_keys=False)
(DATA_DIR / "overrides_full.yaml").write_text(full_yaml)
remove_unused_components(instance_args)
yaml = OmegaConf.to_yaml(instance_args, sort_keys=False)
if DEBUG: