@@ -322,6 +322,7 @@ def __init__(self, block_args, num_classes=1000, num_features=1280, in_chans=3,
322322 # Stem
323323 if not fix_stem :
324324 stem_size = round_channels (stem_size , channel_multiplier , channel_divisor , channel_min )
325+ print (stem_size )
325326 self .conv_stem = create_conv2d (self ._in_chs , stem_size , 3 , stride = 2 , padding = pad_type )
326327 self .bn1 = norm_layer (stem_size , ** norm_kwargs )
327328 self .act1 = act_layer (inplace = True )
@@ -569,7 +570,8 @@ def _gen_mnasnet_small(variant, channel_multiplier=1.0, pretrained=False, **kwar
569570 return model
570571
571572
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 ):
573575 """ Generate MobileNet-V2 network
574576 Ref impl: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet_v2.py
575577 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
584586 ['ir_r1_k3_s1_e6_c320' ],
585587 ]
586588 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 ),
588591 stem_size = 32 ,
592+ fix_stem = fix_stem_head ,
589593 channel_multiplier = channel_multiplier ,
590594 norm_kwargs = resolve_bn_args (kwargs ),
591595 act_layer = nn .ReLU6 ,
@@ -955,23 +959,25 @@ def mobilenetv2_100(pretrained=False, **kwargs):
955959
956960
957961@register_model
958- def mobilenetv2_100d (pretrained = False , ** kwargs ):
962+ def mobilenetv2_140 (pretrained = False , ** kwargs ):
959963 """ 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 )
961965 return model
962966
963967
964968@register_model
965969def mobilenetv2_110d (pretrained = False , ** kwargs ):
966970 """ 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 )
968973 return model
969974
970975
971976@register_model
972- def mobilenetv2_140 (pretrained = False , ** kwargs ):
977+ def mobilenetv2_120d (pretrained = False , ** kwargs ):
973978 """ 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 )
975981 return model
976982
977983
0 commit comments