Spaces:
Sleeping
Sleeping
Download src/utils/model_utils.py from Tirath5504/MedAI-ACM: direct link, hf CLI and curl.
- Browser
- Download file 2.17 kB
-
https://huggingface.co/spaces/Tirath5504/MedAI-ACM/resolve/main/src/utils/model_utils.py
- Command line
-
hf download hf://spaces/Tirath5504/MedAI-ACM/src/utils/model_utils.py
-
curl -L -o model_utils.py https://huggingface.co/spaces/Tirath5504/MedAI-ACM/resolve/main/src/utils/model_utils.py
2.17 kB
| import torch.nn as nn | |
| import timm | |
| import torchvision.models as tvmodels | |
| def get_model(name: str, num_classes: int, pretrained: bool = True): | |
| """Loads and adapts model architecture.""" | |
| name = name.lower() | |
| if name.startswith('swin'): | |
| model = timm.create_model('swin_small_patch4_window7_224', pretrained=pretrained) | |
| if hasattr(model, 'reset_classifier'): | |
| model.reset_classifier(num_classes=num_classes) | |
| else: | |
| model.head = nn.Linear(model.head.in_features, num_classes) | |
| return model | |
| if name.startswith('convnext'): | |
| model = timm.create_model('convnext_tiny', pretrained=pretrained) | |
| if hasattr(model, 'reset_classifier'): | |
| model.reset_classifier(num_classes=num_classes) | |
| else: | |
| model.head.fc = nn.Linear(model.head.fc.in_features, num_classes) | |
| return model | |
| if name.startswith('densenet'): | |
| model = tvmodels.densenet169(pretrained=pretrained) | |
| model.classifier = nn.Linear(model.classifier.in_features, num_classes) | |
| return model | |
| if name.startswith('mobilenet'): | |
| model = timm.create_model('mobilenetv2_100', pretrained=pretrained) | |
| if hasattr(model, 'reset_classifier'): | |
| model.reset_classifier(num_classes=num_classes) | |
| else: | |
| model.classifier = nn.Linear(model.classifier.in_features, num_classes) | |
| return model | |
| if name.startswith('efficientnet'): | |
| model = timm.create_model('efficientnet_b0', pretrained=pretrained) | |
| if hasattr(model, 'reset_classifier'): | |
| model.reset_classifier(num_classes=num_classes) | |
| else: | |
| model.classifier = nn.Linear(model.classifier.in_features, num_classes) | |
| return model | |
| if name.startswith('maxvit'): | |
| model = timm.create_model('maxvit_tiny_tf_224', pretrained=pretrained) | |
| if hasattr(model, 'reset_classifier'): | |
| model.reset_classifier(num_classes=num_classes) | |
| else: | |
| model.head.fc = nn.Linear(model.head.fc.in_features, num_classes) | |
| return model | |
| raise ValueError(f'Unknown model: {name}') | |