feature_extractor
model.feature_extractor
ForwardHookFeatureExtractor
Bases: Module
Extract intermediate features from the model with forward hooks.
return example: {"layer1": layer1_output, "layer2": layer2_output, ..}
Note
- DOES NOT work with DataParallel. forward input이 단일 tensor가 아닌 경우 device로 분류하는 기존 방식이 동작하지 않기 때문에 제거함.
- DOES work with DistributedDataParallel.
Source code in SaigeToolkit/model/feature_extractor.py
build_backbone
Source code in SaigeToolkit/model/backbone/builder.py
build_feature_extractor
build_feature_extractor(backbone: Union[dict, Module], _target_: str = 'create_feature_extractor', layers: Optional[List[str]] = None, **params) -> Module
Build feature extractor
Parameters:
-
backbone(dict | Module) –backbone config.
-
_target_(str, default:'create_feature_extractor') –feature extractor target. Defaults to "create_feature_extractor".
-
layers(List[str], default:None) –feature layers to extract. Defaults to None.
Returns:
-
Module–nn.Module: feature extractor
Note
ForwardHookFeatureExtractor의 경우 hook을 사용하므로 기존 모델과의 동일성이 보장되지만 불필요한 레이어까지 모두 사용하게됨.IntermediateLayerGetter의 경우 타겟 레이어 이후의 레이어를 제거해 효율적. 하지만 기존 모델의 forward가 복잡한 경우 동일성이 보장되지 않을 수 있음.create_feature_extractor의 경우 연산 그래프를 고려하여 타겟 레이어 이외의 레이어를 제거해 동일성과 효율성 측면에서 좋음. 하지만 timm 모델은 사용할 수 없는듯.