@@ -322,6 +322,7 @@ def __init__(self, block_args, num_classes=1000, num_features=1280, in_chans=3,
322
322
# Stem
323
323
if not fix_stem :
324
324
stem_size = round_channels (stem_size , channel_multiplier , channel_divisor , channel_min )
325
+ print (stem_size )
325
326
self .conv_stem = create_conv2d (self ._in_chs , stem_size , 3 , stride = 2 , padding = pad_type )
326
327
self .bn1 = norm_layer (stem_size , ** norm_kwargs )
327
328
self .act1 = act_layer (inplace = True )
@@ -569,7 +570,8 @@ def _gen_mnasnet_small(variant, channel_multiplier=1.0, pretrained=False, **kwar
569
570
return model
570
571
571
572
572
- def _gen_mobilenet_v2 (variant , channel_multiplier = 1.0 , depth_multiplier = 1.0 , pretrained = False , ** kwargs ):
573
+ def _gen_mobilenet_v2 (
574
+ variant , channel_multiplier = 1.0 , depth_multiplier = 1.0 , fix_stem_head = False , pretrained = False , ** kwargs ):
573
575
""" Generate MobileNet-V2 network
574
576
Ref impl: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet_v2.py
575
577
Paper: https://arxiv.org/abs/1801.04381
@@ -584,8 +586,10 @@ def _gen_mobilenet_v2(variant, channel_multiplier=1.0, depth_multiplier=1.0, pre
584
586
['ir_r1_k3_s1_e6_c320' ],
585
587
]
586
588
model_kwargs = dict (
587
- block_args = decode_arch_def (arch_def , depth_multiplier = depth_multiplier ),
589
+ block_args = decode_arch_def (arch_def , depth_multiplier = depth_multiplier , fix_first_last = fix_stem_head ),
590
+ num_features = 1280 if fix_stem_head else round_channels (1280 , channel_multiplier , 8 , None ),
588
591
stem_size = 32 ,
592
+ fix_stem = fix_stem_head ,
589
593
channel_multiplier = channel_multiplier ,
590
594
norm_kwargs = resolve_bn_args (kwargs ),
591
595
act_layer = nn .ReLU6 ,
@@ -955,23 +959,25 @@ def mobilenetv2_100(pretrained=False, **kwargs):
955
959
956
960
957
961
@register_model
958
- def mobilenetv2_100d (pretrained = False , ** kwargs ):
962
+ def mobilenetv2_140 (pretrained = False , ** kwargs ):
959
963
""" MobileNet V2 """
960
- model = _gen_mobilenet_v2 ('mobilenetv2_100d ' , 1.0 , depth_multiplier = 1.1 , pretrained = pretrained , ** kwargs )
964
+ model = _gen_mobilenet_v2 ('mobilenetv2_140 ' , 1.4 , pretrained = pretrained , ** kwargs )
961
965
return model
962
966
963
967
964
968
@register_model
965
969
def mobilenetv2_110d (pretrained = False , ** kwargs ):
966
970
""" MobileNet V2 """
967
- model = _gen_mobilenet_v2 ('mobilenetv2_110d' , 1.1 , depth_multiplier = 1.2 , pretrained = pretrained , ** kwargs )
971
+ model = _gen_mobilenet_v2 (
972
+ 'mobilenetv2_100d' , 1.1 , depth_multiplier = 1.2 , fix_stem_head = True , pretrained = pretrained , ** kwargs )
968
973
return model
969
974
970
975
971
976
@register_model
972
- def mobilenetv2_140 (pretrained = False , ** kwargs ):
977
+ def mobilenetv2_120d (pretrained = False , ** kwargs ):
973
978
""" MobileNet V2 """
974
- model = _gen_mobilenet_v2 ('mobilenetv2_140' , 1.4 , pretrained = pretrained , ** kwargs )
979
+ model = _gen_mobilenet_v2 (
980
+ 'mobilenetv2_110d' , 1.2 , depth_multiplier = 1.4 , fix_stem_head = True , pretrained = pretrained , ** kwargs )
975
981
return model
976
982
977
983
0 commit comments