-
Notifications
You must be signed in to change notification settings - Fork 37
/
sotabench.py
136 lines (117 loc) · 4.1 KB
/
sotabench.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import gc
import math
import torch
from torchbench.datasets.utils import download_file_from_google_drive
from torchbench.image_classification import ImageNet
from torchvision.transforms import transforms
import GENet
# GENet-large
file_id = '1xuyW2GB_kUfJNf2G146rk1sdKuYGxWlE'
destination = './GENet_params/'
filename = 'GENet_large.pth'
download_file_from_google_drive(file_id, destination, filename=filename)
input_image_size = 256
model = GENet.genet_large(pretrained=True, root='./GENet_params/')
model = GENet.fuse_bn(model)
input_image_crop = 0.875
resize_image_size = int(math.ceil(input_image_size / input_image_crop))
transforms_normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
transform_list = [transforms.Resize(resize_image_size),
transforms.CenterCrop(input_image_size), transforms.ToTensor(), transforms_normalize]
transformer = transforms.Compose(transform_list)
# load model
model = model.cuda().half()
model.eval()
def send_data(input, target, device, dtype=torch.float16, non_blocking: bool = True):
input = input.to(device=device, dtype=torch.float16, non_blocking=non_blocking)
if target is not None:
target = target.to(device=device, dtype=torch.float16, non_blocking=non_blocking)
return input, target
print('Benchmarking GENet-large-pro')
# Run the benchmark
ImageNet.benchmark(
model=model,
paper_model_name='GENet-large-pro',
paper_arxiv_id='2006.14090',
input_transform=transformer,
send_data_to_device=send_data,
batch_size=256,
num_workers=8,
num_gpu=1,
pin_memory=True,
paper_results={'Top 1 Accuracy': 0.813},
model_description="GENet-large-pro"
)
del model
gc.collect()
torch.cuda.empty_cache()
# GENet-normal
file_id = '1rpL0BKI_l5Xg4vN5fHGXPzTna5kW9hfs'
destination = './GENet_params/'
filename = 'GENet_normal.pth'
download_file_from_google_drive(file_id, destination, filename=filename)
input_image_size = 192
model = GENet.genet_normal(pretrained=True, root='./GENet_params/')
model = GENet.fuse_bn(model)
input_image_crop = 0.875
resize_image_size = int(math.ceil(input_image_size / input_image_crop))
transforms_normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
transform_list = [transforms.Resize(resize_image_size),
transforms.CenterCrop(input_image_size), transforms.ToTensor(), transforms_normalize]
transformer = transforms.Compose(transform_list)
# load model
model = model.cuda().half()
model.eval()
print('Benchmarking GENet-normal')
# Run the benchmark
ImageNet.benchmark(
model=model,
paper_model_name='GENet-normal-pro',
paper_arxiv_id='2006.14090',
input_transform=transformer,
send_data_to_device=send_data,
batch_size=256,
num_workers=8,
num_gpu=1,
pin_memory=True,
paper_results={'Top 1 Accuracy': 0.800},
model_description="GENet-normal-pro"
)
del model
gc.collect()
torch.cuda.empty_cache()
# GENet-light
file_id = '1jAkklQlQFPZi4odKUvbKEsNPYSS76GAv'
destination = './GENet_params/'
filename = 'GENet_small.pth'
download_file_from_google_drive(file_id, destination, filename=filename)
input_image_size = 192
model = GENet.genet_small(pretrained=True, root='./GENet_params/')
model = GENet.fuse_bn(model)
input_image_crop = 0.875
resize_image_size = int(math.ceil(input_image_size / input_image_crop))
transforms_normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
transform_list = [transforms.Resize(resize_image_size),
transforms.CenterCrop(input_image_size), transforms.ToTensor(), transforms_normalize]
transformer = transforms.Compose(transform_list)
# load model
model = model.cuda().half()
model.eval()
print('Benchmarking GENet-light')
# Run the benchmark
ImageNet.benchmark(
model=model,
paper_model_name='GENet-light-pro',
paper_arxiv_id='2006.14090',
input_transform=transformer,
send_data_to_device=send_data,
batch_size=256,
num_workers=8,
num_gpu=1,
pin_memory=True,
paper_results={'Top 1 Accuracy': 0.757},
model_description="GENet-light-pro"
)
del model
gc.collect()
torch.cuda.empty_cache()