| """ |
| PRIMA: Boosting Animal Mesh Recovery with Biological Priors and Test-Time Adaptation |
| |
| Official implementation of the paper: |
| "PRIMA: Boosting Animal Mesh Recovery with Biological Priors and Test-Time Adaptation" |
| by Xiaohang Yu, Ti Wang, and Mackenzie Weygandt Mathis |
| Licensed under a modified MIT license |
| """ |
|
|
| from .prima import PRIMA |
|
|
|
|
| def load_prima(checkpoint_path): |
| from pathlib import Path |
| from ..configs import get_config |
| model_cfg = str(Path(checkpoint_path).parent.parent / '.hydra/config.yaml') |
| model_cfg = get_config(model_cfg) |
|
|
| |
| if (model_cfg.MODEL.BACKBONE.TYPE == 'vit') and ('BBOX_SHAPE' not in model_cfg.MODEL): |
| model_cfg.defrost() |
| assert model_cfg.MODEL.IMAGE_SIZE == 256, f"MODEL.IMAGE_SIZE ({model_cfg.MODEL.IMAGE_SIZE}) should be 256 for ViT backbone" |
| model_cfg.MODEL.BBOX_SHAPE = [192, 256] |
| model_cfg.freeze() |
| if (model_cfg.MODEL.BACKBONE.TYPE == 'dinov3') and ('BBOX_SHAPE' not in model_cfg.MODEL): |
| model_cfg.defrost() |
| assert model_cfg.MODEL.IMAGE_SIZE == 256, f"MODEL.IMAGE_SIZE ({model_cfg.MODEL.IMAGE_SIZE}) should be 256 for dino backbone" |
| model_cfg.MODEL.BBOX_SHAPE = [256, 256] |
| model_cfg.freeze() |
|
|
| if (model_cfg.MODEL.BACKBONE.TYPE == 'dinov2') and ('BBOX_SHAPE' not in model_cfg.MODEL): |
| model_cfg.defrost() |
| assert model_cfg.MODEL.IMAGE_SIZE == 252, f"MODEL.IMAGE_SIZE ({model_cfg.MODEL.IMAGE_SIZE}) should be 252 for dino backbone" |
| model_cfg.MODEL.BBOX_SHAPE = [252, 252] |
| model_cfg.freeze() |
| |
| |
|
|
| |
| if ('PRETRAINED_WEIGHTS' in model_cfg.MODEL.BACKBONE): |
| model_cfg.defrost() |
| model_cfg.MODEL.BACKBONE.pop('PRETRAINED_WEIGHTS') |
| model_cfg.freeze() |
|
|
| |
| |
| model = PRIMA.load_from_checkpoint( |
| checkpoint_path, |
| strict=False, |
| cfg=model_cfg, |
| map_location='cpu', |
| init_renderer=False, |
| ) |
| return model, model_cfg |
|
|