Skip to content

Commit f3b174b

Browse files
authored
Add efficientnets (#116)(#118)
* Add efficientnet backbones (B0-B3) * Remove `input_tensor` kwarg * Update README
1 parent d513142 commit f3b174b

File tree

7 files changed

+44
-21
lines changed

7 files changed

+44
-21
lines changed

README.rst

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,20 @@ PSPNet FPN
155155

156156
.. table::
157157

158-
=========== =====
159-
Type Names
160-
=========== =====
161-
VGG ``'vgg16' 'vgg19'``
162-
ResNet ``'resnet18' 'resnet34' 'resnet50' 'resnet101' 'resnet152'``
163-
SE-ResNet ``'seresnet18' 'seresnet34' 'seresnet50' 'seresnet101' 'seresnet152'``
164-
ResNeXt ``'resnext50' 'resnext101'``
165-
SE-ResNeXt ``'seresnext50' 'seresnext101'``
166-
SENet154 ``'senet154'``
167-
DenseNet ``'densenet121' 'densenet169' 'densenet201'``
168-
Inception ``'inceptionv3' 'inceptionresnetv2'``
169-
MobileNet ``'mobilenet' 'mobilenetv2'``
170-
=========== =====
158+
============= =====
159+
Type Names
160+
============= =====
161+
VGG ``'vgg16' 'vgg19'``
162+
ResNet ``'resnet18' 'resnet34' 'resnet50' 'resnet101' 'resnet152'``
163+
SE-ResNet ``'seresnet18' 'seresnet34' 'seresnet50' 'seresnet101' 'seresnet152'``
164+
ResNeXt ``'resnext50' 'resnext101'``
165+
SE-ResNeXt ``'seresnext50' 'seresnext101'``
166+
SENet154 ``'senet154'``
167+
DenseNet ``'densenet121' 'densenet169' 'densenet201'``
168+
Inception ``'inceptionv3' 'inceptionresnetv2'``
169+
MobileNet ``'mobilenet' 'mobilenetv2'``
170+
EfficientNet ``'efficientnetb0' 'efficientnetb1' 'efficientnetb2' 'efficientnetb3'``
171+
============= =====
171172

172173
.. epigraph::
173174
All backbones have weights trained on 2012 ILSVRC ImageNet dataset (``encoder_weights='imagenet'``).

requirements.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
keras>=2.2.0
2-
keras_applications>=1.0.7
2+
keras_applications==1.0.7
33
scikit-image
4-
image-classifiers==0.2.0
4+
image-classifiers==0.2.0
5+
efficientnet>=0.0.3

segmentation_models/backbones/__init__.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import efficientnet as eff
12
from classification_models import Classifiers
23
from classification_models import resnext
34

@@ -14,6 +15,18 @@
1415
'resnext101': [resnext.ResNeXt101, resnext.models.preprocess_input],
1516
'mobilenet': [mbn.MobileNet, mbn.preprocess_input],
1617
'mobilenetv2': [mbn2.MobileNetV2, mbn2.preprocess_input],
18+
19+
'efficientnetb0': [eff.EfficientNetB0, eff.preprocess_input],
20+
'efficientnetb1': [eff.EfficientNetB1, eff.preprocess_input],
21+
'efficientnetb2': [eff.EfficientNetB2, eff.preprocess_input],
22+
'efficientnetb3': [eff.EfficientNetB3, eff.preprocess_input],
23+
24+
# weights are not released
25+
# 'efficientnetb4': [eff.EfficientNetB4, eff.preprocess_input],
26+
# 'efficientnetb5': [eff.EfficientNetB5, eff.preprocess_input],
27+
# 'efficientnetb6': [eff.EfficientNetB6, eff.preprocess_input],
28+
# 'efficientnetb7': [eff.EfficientNetB7, eff.preprocess_input],
29+
1730
})
1831

1932
DEFAULT_FEATURE_LAYERS = {
@@ -59,7 +72,19 @@
5972
# Mobile Nets
6073
'mobilenet': ('conv_pw_11_relu', 'conv_pw_5_relu', 'conv_pw_3_relu', 'conv_pw_1_relu'),
6174
'mobilenetv2': ('block_13_expand_relu', 'block_6_expand_relu', 'block_3_expand_relu', 'block_1_expand_relu'),
62-
75+
76+
# EfficientNets
77+
'efficientnetb0': (169, 77, 47, 17),
78+
'efficientnetb1': (246, 122, 76, 30),
79+
'efficientnetb2': (246, 122, 76, 30),
80+
'efficientnetb3': (278, 122, 76, 30),
81+
82+
# weights are not released
83+
# 'efficientnetb4': (342, 154, 92, 30),
84+
# 'efficientnetb5': (419, 199, 121, 43),
85+
# 'efficientnetb6': (483, 231, 137, 43),
86+
# 'efficientnetb7': (592, 276, 166, 56),
87+
6388
}
6489

6590

segmentation_models/fpn/model.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
'interpolation': 'final_interpolation',
1212
'upsample_rates': None, # removed
1313
'last_upsample': None, # removed
14+
'input_tensor': None, # removed
1415
}
1516

1617

1718
@legacy_support(old_args_map)
1819
def FPN(backbone_name='vgg16',
1920
input_shape=(None, None, 3),
20-
input_tensor=None,
2121
classes=21,
2222
activation='softmax',
2323
encoder_weights='imagenet',
@@ -61,7 +61,6 @@ def FPN(backbone_name='vgg16',
6161

6262
backbone = get_backbone(backbone_name,
6363
input_shape=input_shape,
64-
input_tensor=input_tensor,
6564
weights=encoder_weights,
6665
include_top=False)
6766

segmentation_models/linknet/model.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ def Linknet(backbone_name='vgg16',
6262

6363
backbone = get_backbone(backbone_name,
6464
input_shape=input_shape,
65-
input_tensor=None,
6665
weights=encoder_weights,
6766
include_top=False)
6867

segmentation_models/pspnet/model.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ def PSPNet(backbone_name='vgg16',
8484

8585
backbone = get_backbone(backbone_name,
8686
input_shape=input_shape,
87-
input_tensor=None,
8887
weights=encoder_weights,
8988
include_top=False)
9089

segmentation_models/unet/model.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ def Unet(backbone_name='vgg16',
5858

5959
backbone = get_backbone(backbone_name,
6060
input_shape=input_shape,
61-
input_tensor=None,
6261
weights=encoder_weights,
6362
include_top=False)
6463

0 commit comments

Comments
 (0)