@@ -58,13 +58,129 @@ def save_params(fname, arg_params, aux_params, logger=None):
58
58
'imagenet1k-resnext-101-64x4d' ,
59
59
'imagenet11k-place365ch-resnet-152' ,
60
60
'imagenet11k-place365ch-resnet-50' ]
61
- gluon_models = ['resnet18_v1' ,
61
+ # Faster RCNN and Mask RCNN commented because of model loading issues
62
+ # https://github.com/dmlc/gluon-cv/issues/1034
63
+ gluon_models = [#'faster_rcnn_fpn_resnet50_v1b_coco',
64
+ 'mobilenetv2_0.75' ,
65
+ 'cifar_resnet56_v1' ,
66
+ 'mobilenet0.25' ,
67
+ 'mobilenet1.0' ,
68
+ #'mask_rcnn_fpn_resnet50_v1b_coco',
69
+ 'simple_pose_resnet152_v1b' ,
70
+ 'ssd_512_resnet50_v1_voc' ,
71
+ #'faster_rcnn_resnet50_v1b_voc',
72
+ 'cifar_resnet20_v1' ,
73
+ 'yolo3_darknet53_voc' ,
74
+ 'resnet101_v1c' ,
75
+ 'simple_pose_resnet18_v1b' ,
76
+ #'mask_rcnn_resnet50_v1b_coco',
77
+ 'ssd_512_mobilenet1.0_coco' ,
78
+ 'vgg19_bn' ,
79
+ #'faster_rcnn_resnet50_v1b_coco',
80
+ 'cifar_resnet110_v1' ,
81
+ 'yolo3_mobilenet1.0_voc' ,
82
+ 'cifar_resnext29_16x64d' ,
83
+ 'resnet34_v1' ,
84
+ 'densenet121' ,
85
+ #'mask_rcnn_fpn_resnet101_v1d_coco',
86
+ 'vgg13_bn' ,
87
+ 'vgg19' ,
88
+ 'resnet152_v1d' ,
89
+ 'resnet152_v1s' ,
90
+ 'densenet201' ,
91
+ 'alexnet' ,
92
+ 'se_resnext50_32x4d' ,
93
+ 'resnet50_v1d_0.86' ,
94
+ 'resnet18_v1b_0.89' ,
95
+ 'yolo3_darknet53_coco' ,
96
+ 'resnet152_v1' ,
97
+ 'resnext101_64x4d' ,
98
+ 'vgg13' ,
99
+ 'resnet101_v1d_0.76' ,
100
+ 'simple_pose_resnet50_v1d' ,
101
+ 'senet_154' ,
62
102
'resnet50_v1' ,
63
- 'resnet101_v1' ,
103
+ 'se_resnext101_32x4d' ,
104
+ 'fcn_resnet101_voc' ,
105
+ 'resnet152_v2' ,
106
+ #'mask_rcnn_resnet101_v1d_coco',
107
+ 'squeezenet1.1' ,
108
+ 'mobilenet0.5' ,
109
+ 'resnet34_v2' ,
110
+ 'resnet18_v1' ,
111
+ 'resnet152_v1b' ,
112
+ 'resnet101_v2' ,
113
+ 'cifar_resnet56_v2' ,
114
+ 'ssd_512_resnet101_v2_voc' ,
115
+ 'resnet50_v1d_0.37' ,
116
+ 'mobilenetv2_0.5' ,
117
+ #'faster_rcnn_fpn_bn_resnet50_v1b_coco',
118
+ 'resnet50_v1c' ,
119
+ 'densenet161' ,
120
+ 'simple_pose_resnet50_v1b' ,
121
+ 'resnet18_v1b' ,
122
+ 'darknet53' ,
123
+ 'fcn_resnet50_ade' ,
124
+ 'cifar_wideresnet28_10' ,
125
+ 'simple_pose_resnet101_v1d' ,
126
+ 'vgg16' ,
127
+ 'ssd_512_resnet50_v1_coco' ,
128
+ 'resnet101_v1d_0.73' ,
64
129
'squeezenet1.0' ,
65
- 'mobilenet1.0' ,
130
+ 'resnet50_v1b' ,
131
+ #'faster_rcnn_resnet101_v1d_coco',
132
+ 'ssd_512_mobilenet1.0_voc' ,
133
+ 'cifar_wideresnet40_8' ,
134
+ 'cifar_wideresnet16_10' ,
135
+ 'cifar_resnet110_v2' ,
136
+ 'resnet101_v1s' ,
137
+ 'mobilenetv2_0.25' ,
138
+ 'resnet152_v1c' ,
139
+ 'se_resnext101_64x4d' ,
140
+ #'faster_rcnn_fpn_resnet101_v1d_coco',
141
+ 'resnet50_v1d' ,
142
+ 'densenet169' ,
143
+ 'resnet34_v1b' ,
144
+ 'resnext50_32x4d' ,
145
+ 'resnet101_v1' ,
146
+ 'resnet101_v1b' ,
147
+ 'resnet50_v1s' ,
148
+ 'mobilenet0.75' ,
149
+ 'cifar_resnet20_v2' ,
150
+ 'resnet101_v1d' ,
151
+ 'vgg11_bn' ,
152
+ 'resnet18_v2' ,
153
+ 'vgg11' ,
154
+ 'simple_pose_resnet101_v1b' ,
155
+ 'resnext101_32x4d' ,
156
+ 'resnet50_v2' ,
157
+ 'vgg16_bn' ,
66
158
'mobilenetv2_1.0' ,
67
- 'inceptionv3' ]
159
+ 'resnet50_v1d_0.48' ,
160
+ 'resnet50_v1d_0.11' ,
161
+ 'fcn_resnet101_ade' ,
162
+ 'simple_pose_resnet152_v1d' ,
163
+ 'yolo3_mobilenet1.0_coco' ,
164
+ 'fcn_resnet101_coco' ]
165
+ # TODO(anisub): add support for other models from gluoncv
166
+ # Not supported today mostly because of broken net.forward calls
167
+ segmentation_models = ['deeplab_resnet50_ade' ,
168
+ 'psp_resnet101_voc' ,
169
+ 'deeplab_resnet152_voc' ,
170
+ 'deeplab_resnet101_ade' ,
171
+ 'deeplab_resnet152_coco' ,
172
+ 'psp_resnet101_ade' ,
173
+ 'deeplab_resnet101_coco' ,
174
+ 'psp_resnet101_citys' ,
175
+ 'psp_resnet50_ade' ,
176
+ 'psp_resnet101_coco' ,
177
+ 'deeplab_resnet101_voc' ]
178
+ calib_ssd_models = ["ssd_512_vgg16_atrous_voc" ,
179
+ "ssd_300_vgg16_atrous_voc" ,
180
+ "ssd_300_vgg16_atrous_coco" ]
181
+ calib_inception_models = ["inceptionv3" ]
182
+ gluon_models = gluon_models + segmentation_models + \
183
+ calib_ssd_models + calib_inception_models
68
184
models = symbolic_models + gluon_models
69
185
70
186
parser = argparse .ArgumentParser (description = 'Convert a provided FP32 model to a mixed precision model' )
@@ -106,14 +222,23 @@ def save_params(fname, arg_params, aux_params, logger=None):
106
222
else :
107
223
assert args .model in gluon_models , "Please choose one of the available gluon models: {} \
108
224
If you want to use symbolic model instead, remove --use-gluon-model when running the script" .format (gluon_models )
225
+ shape = None
226
+ if args .model in segmentation_models :
227
+ shape = (1 , 3 , 480 , 480 )
228
+ elif args .model in calib_ssd_models :
229
+ shape = (1 , 3 , 512 , 544 )
230
+ elif args .model in calib_inception_models :
231
+ shape = (1 , 3 , 299 , 299 )
232
+ else :
233
+ shape = (1 , 3 , 224 , 224 )
109
234
net = gluoncv .model_zoo .get_model (args .model , pretrained = True )
110
235
net .hybridize ()
111
- result_before1 = net .forward (mx .nd .zeros (( 1 , 3 , 224 , 224 ) ))
236
+ result_before1 = net .forward (mx .nd .random . uniform ( shape = shape ))
112
237
net .export ("{}" .format (args .model ))
113
238
net = amp .convert_hybrid_block (net , cast_optional_params = args .cast_optional_params )
114
239
net .export ("{}-amp" .format (args .model ), remove_amp_cast = False )
115
240
if args .run_dummy_inference :
116
241
logger .info ("Running inference on the mixed precision model with dummy inputs, batch size: 1" )
117
- result_after = net .forward (mx .nd .zeros (( 1 , 3 , 224 , 224 ) , dtype = np .float32 , ctx = mx .gpu (0 )))
118
- result_after = net .forward (mx .nd .zeros (( 1 , 3 , 224 , 224 ) , dtype = np .float32 , ctx = mx .gpu (0 )))
242
+ result_after = net .forward (mx .nd .random . uniform ( shape = shape , dtype = np .float32 , ctx = mx .gpu (0 )))
243
+ result_after = net .forward (mx .nd .random . uniform ( shape = shape , dtype = np .float32 , ctx = mx .gpu (0 )))
119
244
logger .info ("Inference run successfully" )
0 commit comments