Skip to content

Commit 8795d32

Browse files
committed
Add newly trained MobileNet-V2 weights w/ model defs
1 parent 188b283 commit 8795d32

File tree

4 files changed

+83
-2
lines changed

4 files changed

+83
-2
lines changed

README.md

+12-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ All models are implemented by GenEfficientNet or MobileNetV3 classes, with strin
66

77
## What's New
88

9+
### April 5, 2020
10+
* Add some newly trained MobileNet-V2 models trained with latest h-params, rand augment. They compare quite favourably to EfficientNet-Lite
11+
* 3.5M param MobileNet-V2 100 @ 73%
12+
* 4.5M param MobileNet-V2 110d @ 75%
13+
* 6.1M param MobileNet-V2 140 @ 76.5%
14+
* 5.8M param MobileNet-V2 120d @ 77.3%
15+
916
### March 23, 2020
1017
* Add EfficientNet-Lite models w/ weights ported from [Tensorflow TPU](https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/lite)
1118
* Add PyTorch trained MobileNet-V3 Large weights with 75.77% top-1
@@ -80,14 +87,18 @@ I've managed to train several of the models to accuracies close to or above the
8087
| efficientnet_b1 | 78.692 (21.308) | 94.086 (5.914) | 7.8 | 694 | bicubic | 240 | 0.882 |
8188
| efficientnet_es | 78.066 (21.934) | 93.926 (6.074) | 5.44 | TBD | bicubic | 224 | 0.875 |
8289
| efficientnet_b0 | 77.698 (22.302) | 93.532 (6.468) | 5.3 | 390 | bicubic | 224 | 0.875 |
90+
| mobilenetv2_120d | 77.294 (22.706 | 93.502 (6.498) | 5.8 | TBD | bicubic | 224 | 0.875 |
8391
| mixnet_m | 77.256 (22.744) | 93.418 (6.582) | 5.01 | 353 | bicubic | 224 | 0.875 |
92+
| mobilenetv2_140 | 76.524 (23.476) | 92.990 (7.010) | 6.1 | TBD | bicubic | 224 | 0.875 |
8493
| mixnet_s | 75.988 (24.012) | 92.794 (7.206) | 4.13 | TBD | bicubic | 224 | 0.875 |
85-
| mobilenetv3_large_100 | 75.766 (24.234) | 92.542 (7.458) | 5.5M | bicubic | 224 | 0.875 |
94+
| mobilenetv3_large_100 | 75.766 (24.234) | 92.542 (7.458) | 5.5 | TBD | bicubic | 224 | 0.875 |
8695
| mobilenetv3_rw | 75.634 (24.366) | 92.708 (7.292) | 5.5 | 219 | bicubic | 224 | 0.875 |
8796
| mnasnet_a1 | 75.448 (24.552) | 92.604 (7.396) | 3.9 | 312 | bicubic | 224 | 0.875 |
8897
| fbnetc_100 | 75.124 (24.876) | 92.386 (7.614) | 5.6 | 385 | bilinear | 224 | 0.875 |
98+
| mobilenetv2_110d | 75.052 (24.948) | 92.180 (7.820) | 4.5 | TBD | bicubic | 224 | 0.875 |
8999
| mnasnet_b1 | 74.658 (25.342) | 92.114 (7.886) | 4.4 | 315 | bicubic | 224 | 0.875 |
90100
| spnasnet_100 | 74.084 (25.916) | 91.818 (8.182) | 4.4 | TBD | bilinear | 224 | 0.875 |
101+
| mobilenetv2_100 | 72.978 (27.022) | 91.016 (8.984) | 3.5 | TBD | bicubic | 224 | 0.875 |
91102

92103

93104
More pretrained models to come...

geffnet/gen_efficientnet.py

+65
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434

3535
__all__ = ['GenEfficientNet', 'mnasnet_050', 'mnasnet_075', 'mnasnet_100', 'mnasnet_b1', 'mnasnet_140',
3636
'semnasnet_050', 'semnasnet_075', 'semnasnet_100', 'mnasnet_a1', 'semnasnet_140', 'mnasnet_small',
37+
'mobilenetv2_100', 'mobilenetv2_140', 'mobilenetv2_110d', 'mobilenetv2_120d',
3738
'fbnetc_100', 'spnasnet_100', 'efficientnet_b0', 'efficientnet_b1', 'efficientnet_b2', 'efficientnet_b3',
3839
'efficientnet_b4', 'efficientnet_b5', 'efficientnet_b6', 'efficientnet_b7', 'efficientnet_b8',
3940
'efficientnet_l2', 'efficientnet_es', 'efficientnet_em', 'efficientnet_el',
@@ -67,6 +68,15 @@
6768
'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mnasnet_a1-d9418771.pth',
6869
'semnasnet_140': None,
6970

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+
7080
'fbnetc_100':
7181
'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/fbnetc_100-c345b898.pth',
7282
'spnasnet_100':
@@ -385,6 +395,35 @@ def _gen_mnasnet_small(variant, channel_multiplier=1.0, pretrained=False, **kwar
385395
return model
386396

387397

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+
388427
def _gen_fbnetc(variant, channel_multiplier=1.0, pretrained=False, **kwargs):
389428
""" FBNet-C
390429
@@ -719,6 +758,32 @@ def mnasnet_small(pretrained=False, **kwargs):
719758
return model
720759

721760

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+
722787
def fbnetc_100(pretrained=False, **kwargs):
723788
""" FBNet-C """
724789
if pretrained:

geffnet/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.9.8'
1+
__version__ = '0.9.9'

hubconf.py

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
from geffnet import mixnet_l
1313
from geffnet import mixnet_xl
1414

15+
from geffnet import mobilenetv2_100
16+
from geffnet import mobilenetv2_110d
17+
from geffnet import mobilenetv2_120d
18+
from geffnet import mobilenetv2_140
19+
1520
from geffnet import mobilenetv3_large_100
1621
from geffnet import mobilenetv3_rw
1722
from geffnet import mnasnet_a1

0 commit comments

Comments
 (0)