|
34 | 34 |
|
35 | 35 | __all__ = ['GenEfficientNet', 'mnasnet_050', 'mnasnet_075', 'mnasnet_100', 'mnasnet_b1', 'mnasnet_140',
|
36 | 36 | 'semnasnet_050', 'semnasnet_075', 'semnasnet_100', 'mnasnet_a1', 'semnasnet_140', 'mnasnet_small',
|
| 37 | + 'mobilenetv2_100', 'mobilenetv2_140', 'mobilenetv2_110d', 'mobilenetv2_120d', |
37 | 38 | 'fbnetc_100', 'spnasnet_100', 'efficientnet_b0', 'efficientnet_b1', 'efficientnet_b2', 'efficientnet_b3',
|
38 | 39 | 'efficientnet_b4', 'efficientnet_b5', 'efficientnet_b6', 'efficientnet_b7', 'efficientnet_b8',
|
39 | 40 | 'efficientnet_l2', 'efficientnet_es', 'efficientnet_em', 'efficientnet_el',
|
|
67 | 68 | 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mnasnet_a1-d9418771.pth',
|
68 | 69 | 'semnasnet_140': None,
|
69 | 70 |
|
| 71 | + 'mobilenetv2_100': |
| 72 | + 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_100_ra-b33bc2c4.pth', |
| 73 | + 'mobilenetv2_110d': |
| 74 | + 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_110d_ra-77090ade.pth', |
| 75 | + 'mobilenetv2_120d': |
| 76 | + 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_120d_ra-5987e2ed.pth', |
| 77 | + 'mobilenetv2_140': |
| 78 | + 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_140_ra-21a4e913.pth', |
| 79 | + |
70 | 80 | 'fbnetc_100':
|
71 | 81 | 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/fbnetc_100-c345b898.pth',
|
72 | 82 | 'spnasnet_100':
|
@@ -385,6 +395,35 @@ def _gen_mnasnet_small(variant, channel_multiplier=1.0, pretrained=False, **kwar
|
385 | 395 | return model
|
386 | 396 |
|
387 | 397 |
|
| 398 | +def _gen_mobilenet_v2( |
| 399 | + variant, channel_multiplier=1.0, depth_multiplier=1.0, fix_stem_head=False, pretrained=False, **kwargs): |
| 400 | + """ Generate MobileNet-V2 network |
| 401 | + Ref impl: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet_v2.py |
| 402 | + Paper: https://arxiv.org/abs/1801.04381 |
| 403 | + """ |
| 404 | + arch_def = [ |
| 405 | + ['ds_r1_k3_s1_c16'], |
| 406 | + ['ir_r2_k3_s2_e6_c24'], |
| 407 | + ['ir_r3_k3_s2_e6_c32'], |
| 408 | + ['ir_r4_k3_s2_e6_c64'], |
| 409 | + ['ir_r3_k3_s1_e6_c96'], |
| 410 | + ['ir_r3_k3_s2_e6_c160'], |
| 411 | + ['ir_r1_k3_s1_e6_c320'], |
| 412 | + ] |
| 413 | + model_kwargs = dict( |
| 414 | + block_args=decode_arch_def(arch_def, depth_multiplier=depth_multiplier, fix_first_last=fix_stem_head), |
| 415 | + num_features=1280 if fix_stem_head else round_channels(1280, channel_multiplier, 8, None), |
| 416 | + stem_size=32, |
| 417 | + fix_stem=fix_stem_head, |
| 418 | + channel_multiplier=channel_multiplier, |
| 419 | + norm_kwargs=resolve_bn_args(kwargs), |
| 420 | + act_layer=nn.ReLU6, |
| 421 | + **kwargs |
| 422 | + ) |
| 423 | + model = _create_model(model_kwargs, variant, pretrained) |
| 424 | + return model |
| 425 | + |
| 426 | + |
388 | 427 | def _gen_fbnetc(variant, channel_multiplier=1.0, pretrained=False, **kwargs):
|
389 | 428 | """ FBNet-C
|
390 | 429 |
|
@@ -719,6 +758,32 @@ def mnasnet_small(pretrained=False, **kwargs):
|
719 | 758 | return model
|
720 | 759 |
|
721 | 760 |
|
| 761 | +def mobilenetv2_100(pretrained=False, **kwargs): |
| 762 | + """ MobileNet V2 w/ 1.0 channel multiplier """ |
| 763 | + model = _gen_mobilenet_v2('mobilenetv2_100', 1.0, pretrained=pretrained, **kwargs) |
| 764 | + return model |
| 765 | + |
| 766 | + |
| 767 | +def mobilenetv2_140(pretrained=False, **kwargs): |
| 768 | + """ MobileNet V2 w/ 1.4 channel multiplier """ |
| 769 | + model = _gen_mobilenet_v2('mobilenetv2_140', 1.4, pretrained=pretrained, **kwargs) |
| 770 | + return model |
| 771 | + |
| 772 | + |
| 773 | +def mobilenetv2_110d(pretrained=False, **kwargs): |
| 774 | + """ MobileNet V2 w/ 1.1 channel, 1.2 depth multipliers""" |
| 775 | + model = _gen_mobilenet_v2( |
| 776 | + 'mobilenetv2_110d', 1.1, depth_multiplier=1.2, fix_stem_head=True, pretrained=pretrained, **kwargs) |
| 777 | + return model |
| 778 | + |
| 779 | + |
| 780 | +def mobilenetv2_120d(pretrained=False, **kwargs): |
| 781 | + """ MobileNet V2 w/ 1.2 channel, 1.4 depth multipliers """ |
| 782 | + model = _gen_mobilenet_v2( |
| 783 | + 'mobilenetv2_120d', 1.2, depth_multiplier=1.4, fix_stem_head=True, pretrained=pretrained, **kwargs) |
| 784 | + return model |
| 785 | + |
| 786 | + |
722 | 787 | def fbnetc_100(pretrained=False, **kwargs):
|
723 | 788 | """ FBNet-C """
|
724 | 789 | if pretrained:
|
|
0 commit comments