Download clean/video/mintime/models/efficientnet/sotabench.py from deepsafe/model-code: direct link, hf CLI and curl.
- Browser
- Download file 2.09 kB
-
https://huggingface.co/deepsafe/model-code/resolve/main/clean/video/mintime/models/efficientnet/sotabench.py
- Command line
-
hf download hf://deepsafe/model-code/clean/video/mintime/models/efficientnet/sotabench.py
-
curl -L -o sotabench.py https://huggingface.co/deepsafe/model-code/resolve/main/clean/video/mintime/models/efficientnet/sotabench.py
2.09 kB
| import os | |
| import numpy as np | |
| import PIL | |
| import torch | |
| from torch.utils.data import DataLoader | |
| import torchvision.transforms as transforms | |
| from torchvision.datasets import ImageNet | |
| from efficientnet_pytorch import EfficientNet | |
| from sotabencheval.image_classification import ImageNetEvaluator | |
| from sotabencheval.utils import is_server | |
| if is_server(): | |
| DATA_ROOT = DATA_ROOT = os.environ.get('IMAGENET_DIR', './imagenet') # './.data/vision/imagenet' | |
| else: # local settings | |
| DATA_ROOT = os.environ['IMAGENET_DIR'] | |
| assert bool(DATA_ROOT), 'please set IMAGENET_DIR environment variable' | |
| print('Local data root: ', DATA_ROOT) | |
| model_name = 'EfficientNet-B5' | |
| model = EfficientNet.from_pretrained(model_name.lower()) | |
| image_size = EfficientNet.get_image_size(model_name.lower()) | |
| input_transform = transforms.Compose([ | |
| transforms.Resize(image_size, PIL.Image.BICUBIC), | |
| transforms.CenterCrop(image_size), | |
| transforms.ToTensor(), | |
| transforms.Normalize( | |
| mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), | |
| ]) | |
| test_dataset = ImageNet( | |
| DATA_ROOT, | |
| split="val", | |
| transform=input_transform, | |
| target_transform=None, | |
| ) | |
| test_loader = DataLoader( | |
| test_dataset, | |
| batch_size=128, | |
| shuffle=False, | |
| num_workers=4, | |
| pin_memory=True, | |
| ) | |
| model = model.cuda() | |
| model.eval() | |
| evaluator = ImageNetEvaluator(model_name=model_name, | |
| paper_arxiv_id='1905.11946') | |
| def get_img_id(image_name): | |
| return image_name.split('/')[-1].replace('.JPEG', '') | |
| with torch.no_grad(): | |
| for i, (input, target) in enumerate(test_loader): | |
| input = input.to(device='cuda', non_blocking=True) | |
| target = target.to(device='cuda', non_blocking=True) | |
| output = model(input) | |
| image_ids = [get_img_id(img[0]) for img in test_loader.dataset.imgs[i*test_loader.batch_size:(i+1)*test_loader.batch_size]] | |
| evaluator.add(dict(zip(image_ids, list(output.cpu().numpy())))) | |
| if evaluator.cache_exists: | |
| break | |
| if not is_server(): | |
| print("Results:") | |
| print(evaluator.get_results()) | |
| evaluator.save() | |