segmodels-keras 0.1.0.dev5__tar.gz → 0.1.0.dev6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/PKG-INFO +1 -1
  2. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/_version.py +1 -1
  3. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/fpn.py +7 -0
  4. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/linknet.py +7 -0
  5. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/pspnet.py +7 -0
  6. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/unet.py +7 -0
  7. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras.egg-info/PKG-INFO +1 -1
  8. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/tests/test_utils.py +4 -4
  9. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/LICENSE +0 -0
  10. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/MANIFEST.in +0 -0
  11. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/README.rst +0 -0
  12. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/pyproject.toml +0 -0
  13. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/__init__.py +0 -0
  14. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/_compat.py +0 -0
  15. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/backbones/__init__.py +0 -0
  16. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/backbones/backbones_factory.py +0 -0
  17. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/backbones/inception_resnet_v2.py +0 -0
  18. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/backbones/inception_v3.py +0 -0
  19. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/base/__init__.py +0 -0
  20. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/base/functional.py +0 -0
  21. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/base/objects.py +0 -0
  22. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/losses.py +0 -0
  23. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/metrics.py +0 -0
  24. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/__init__.py +0 -0
  25. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/_common_blocks.py +0 -0
  26. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/models/_utils.py +0 -0
  27. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras/utils.py +0 -0
  28. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras.egg-info/SOURCES.txt +0 -0
  29. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras.egg-info/dependency_links.txt +0 -0
  30. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras.egg-info/requires.txt +0 -0
  31. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/segmodels_keras.egg-info/top_level.txt +0 -0
  32. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/setup.cfg +0 -0
  33. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/setup.py +0 -0
  34. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/tests/test_backbones.py +0 -0
  35. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/tests/test_metrics.py +0 -0
  36. {segmodels_keras-0.1.0.dev5 → segmodels_keras-0.1.0.dev6}/tests/test_models.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: segmodels_keras
3
- Version: 0.1.0.dev5
3
+ Version: 0.1.0.dev6
4
4
  Summary: Image segmentation models with pre-trained backbones with Keras.
5
5
  Home-page: https://github.com/orthoseg/segmodels_keras
6
6
  Author: Pieter Roggemans
@@ -1,2 +1,2 @@
1
- __versioninfo__ = (0, 1, 0, "dev5")
1
+ __versioninfo__ = (0, 1, 0, "dev6")
2
2
  __version__ = ".".join(map(str, __versioninfo__))
@@ -108,6 +108,7 @@ def build_fpn(
108
108
  aggregation="sum",
109
109
  dropout=None,
110
110
  weights_notop=None,
111
+ freeze_notop=False,
111
112
  ):
112
113
  input_ = backbone.input
113
114
  x = backbone.output
@@ -177,6 +178,8 @@ def build_fpn(
177
178
  if weights_notop is not None:
178
179
  model_notop = models.Model(input_, x)
179
180
  model_notop.load_weights(weights_notop)
181
+ if freeze_notop:
182
+ freeze_model(model_notop)
180
183
  x = model_notop.output
181
184
 
182
185
  # model head (define number of output classes)
@@ -208,6 +211,7 @@ def FPN(
208
211
  activation="softmax",
209
212
  weights=None,
210
213
  weights_notop=None,
214
+ freeze_notop=False,
211
215
  encoder_weights="imagenet",
212
216
  encoder_freeze=False,
213
217
  encoder_features="default",
@@ -230,6 +234,8 @@ def FPN(
230
234
  weights: optional, path to model weights to be loaded.
231
235
  weights_notop: optional, path to model weights without top (without segmentation
232
236
  head) to be loaded.
237
+ freeze_notop: if ``True``, set all layers of the model except the top as
238
+ non-trainable.
233
239
  activation: name of one of ``keras.activations`` for last model layer
234
240
  (e.g. ``sigmoid``, ``softmax``, ``linear``).
235
241
  encoder_weights: one of ``None`` (random initialization), ``imagenet``
@@ -276,6 +282,7 @@ def FPN(
276
282
  classes=classes,
277
283
  aggregation=pyramid_aggregation,
278
284
  weights_notop=weights_notop,
285
+ freeze_notop=freeze_notop,
279
286
  )
280
287
 
281
288
  # lock encoder weights for fine-tuning
@@ -142,6 +142,7 @@ def build_linknet(
142
142
  activation="sigmoid",
143
143
  use_batchnorm=True,
144
144
  weights_notop=None,
145
+ freeze_notop=False,
145
146
  ):
146
147
  input_ = backbone.input
147
148
  x = backbone.output
@@ -174,6 +175,8 @@ def build_linknet(
174
175
  if weights_notop is not None:
175
176
  model_notop = models.Model(input_, x)
176
177
  model_notop.load_weights(weights_notop)
178
+ if freeze_notop:
179
+ freeze_model(model_notop)
177
180
  x = model_notop.output
178
181
 
179
182
  # model head (define number of output classes)
@@ -204,6 +207,7 @@ def Linknet(
204
207
  activation="sigmoid",
205
208
  weights=None,
206
209
  weights_notop=None,
210
+ freeze_notop=False,
207
211
  encoder_weights="imagenet",
208
212
  encoder_freeze=False,
209
213
  encoder_features="default",
@@ -230,6 +234,8 @@ def Linknet(
230
234
  weights: optional, path to model weights to be loaded.
231
235
  weights_notop: optional, path to model weights without top (without segmentation
232
236
  head) to be loaded.
237
+ freeze_notop: if ``True``, set all layers of the model except the top as
238
+ non-trainable.
233
239
  encoder_weights: one of ``None`` (random initialization), ``imagenet``
234
240
  (pre-training on ImageNet).
235
241
  encoder_freeze: if ``True`` set all layers of encoder (backbone model) as
@@ -285,6 +291,7 @@ def Linknet(
285
291
  n_upsample_blocks=len(decoder_filters),
286
292
  use_batchnorm=decoder_use_batchnorm,
287
293
  weights_notop=weights_notop,
294
+ freeze_notop=freeze_notop,
288
295
  )
289
296
 
290
297
  # lock encoder weights for fine-tuning
@@ -125,6 +125,7 @@ def build_psp(
125
125
  activation="softmax",
126
126
  dropout=None,
127
127
  weights_notop=None,
128
+ freeze_notop=False,
128
129
  ):
129
130
  input_ = backbone.input
130
131
  x = (
@@ -152,6 +153,8 @@ def build_psp(
152
153
  if weights_notop is not None:
153
154
  model_notop = models.Model(input_, x)
154
155
  model_notop.load_weights(weights_notop)
156
+ if freeze_notop:
157
+ freeze_model(model_notop)
155
158
  x = model_notop.output
156
159
 
157
160
  # model head
@@ -185,6 +188,7 @@ def PSPNet(
185
188
  activation="softmax",
186
189
  weights=None,
187
190
  weights_notop=None,
191
+ freeze_notop=False,
188
192
  encoder_weights="imagenet",
189
193
  encoder_freeze=False,
190
194
  downsample_factor=8,
@@ -208,6 +212,8 @@ def PSPNet(
208
212
  weights: optional, path to model weights to be loaded.
209
213
  weights_notop: optional, path to model weights without top (without segmentation
210
214
  head) to be loaded.
215
+ freeze_notop: if ``True``, set all layers of the model except the top as
216
+ non-trainable.
211
217
  encoder_weights: one of ``None`` (random initialization), ``imagenet``
212
218
  (pre-training on ImageNet).
213
219
  encoder_freeze: if ``True`` set all layers of encoder (backbone model) as
@@ -261,6 +267,7 @@ def PSPNet(
261
267
  activation=activation,
262
268
  dropout=psp_dropout,
263
269
  weights_notop=weights_notop,
270
+ freeze_notop=freeze_notop,
264
271
  )
265
272
 
266
273
  # lock encoder weights for fine-tuning
@@ -114,6 +114,7 @@ def build_unet(
114
114
  activation="sigmoid",
115
115
  use_batchnorm=True,
116
116
  weights_notop=None,
117
+ freeze_notop=False,
117
118
  ):
118
119
  input_ = backbone.input
119
120
  x = backbone.output
@@ -146,6 +147,8 @@ def build_unet(
146
147
  if weights_notop is not None:
147
148
  model_notop = models.Model(input_, x)
148
149
  model_notop.load_weights(weights_notop)
150
+ if freeze_notop:
151
+ freeze_model(model_notop)
149
152
  x = model_notop.output
150
153
 
151
154
  # model head (define number of output classes)
@@ -177,6 +180,7 @@ def Unet(
177
180
  activation="sigmoid",
178
181
  weights=None,
179
182
  weights_notop=None,
183
+ freeze_notop=False,
180
184
  encoder_weights="imagenet",
181
185
  encoder_freeze=False,
182
186
  encoder_features="default",
@@ -201,6 +205,8 @@ def Unet(
201
205
  weights: optional, path to model weights to be loaded.
202
206
  weights_notop: optional, path to model weights without top (without segmentation
203
207
  head) to be loaded.
208
+ freeze_notop: if ``True``, set all layers of the model except the top as
209
+ non-trainable.
204
210
  encoder_weights: one of ``None`` (random initialization), ``imagenet``
205
211
  (pre-training on ImageNet).
206
212
  encoder_freeze: if ``True`` set all layers of encoder (backbone model) as
@@ -256,6 +262,7 @@ def Unet(
256
262
  n_upsample_blocks=len(decoder_filters),
257
263
  use_batchnorm=decoder_use_batchnorm,
258
264
  weights_notop=weights_notop,
265
+ freeze_notop=freeze_notop,
259
266
  )
260
267
 
261
268
  # lock encoder weights for fine-tuning
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: segmodels_keras
3
- Version: 0.1.0.dev5
3
+ Version: 0.1.0.dev6
4
4
  Summary: Image segmentation models with pre-trained backbones with Keras.
5
5
  Home-page: https://github.com/orthoseg/segmodels_keras
6
6
  Author: Pieter Roggemans
@@ -127,13 +127,13 @@ def test_save_model_weights_notop(tmp_path, decoder):
127
127
  # Test loading the model weights without the top layers again
128
128
  assert path.exists()
129
129
  if decoder == "pspnet":
130
- model = sm.PSPNet(backbone_name, weights_notop=path)
130
+ model = sm.PSPNet(backbone_name, weights_notop=path, freeze_notop=True)
131
131
  elif decoder == "fpn":
132
- model = sm.FPN(backbone_name, weights_notop=path)
132
+ model = sm.FPN(backbone_name, weights_notop=path, freeze_notop=True)
133
133
  elif decoder == "linknet":
134
- model = sm.Linknet(backbone_name, weights_notop=path)
134
+ model = sm.Linknet(backbone_name, weights_notop=path, freeze_notop=True)
135
135
  elif decoder == "unet":
136
- model = sm.Unet(backbone_name, weights_notop=path)
136
+ model = sm.Unet(backbone_name, weights_notop=path, freeze_notop=True)
137
137
  else:
138
138
  raise ValueError(f"Incorrect decoder {decoder}")
139
139