Skip to content

Keras Implementation of Unet with EfficientNet as encoder

License

Notifications You must be signed in to change notification settings

zhoudaxia233/EfficientUnet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EfficientUnet

Keras Implementation of Unet with EfficientNet as encoder

  • Unet with EfficientNet encoder
    • EfficientNet-B0
    • EfficientNet-B1
    • EfficientNet-B2
    • EfficientNet-B3
    • EfficientNet-B4
    • EfficientNet-B5
    • EfficientNet-B6
    • EfficientNet-B7

Requirements

  1. tensorflow >= 1.13.1
  2. Keras >= 2.2.4 (It will automatically be installed when you install efficientunet)

Special Notice

When I built this, tensorflow 1.13.1 and keras 2.2.4 are the latest. There was no TF2.0. All the functions and the so-called "best practices" I used in this project may be obsolete. Anyway, this library still works. But please keep in mind, this is built before the advent of TF2.0.


Installation

Install efficientunet:

pip install efficientunet

Basic Usage

from efficientunet import *

model = get_efficient_unet_b5((224, 224, 3), pretrained=True, block_type='transpose', concat_input=True)
model.summary()

Useful notes

  1. This library assumes channels_last !

  2. You cannot specify None for input_shape, since the input_shape is heavily used in the code for inferring the architecture. (The EfficientUnets are constructed dynamically)

  3. Since you cannot use None for input_shape, the image size for training process and for inference process have to be the same.
    If you do need to use a different image size for inference, a feasible solution is:

    1. Save the weights of your well-trained model
    2. Create a new model with the desired input shape
    3. Load the weights of your well-trained model into this newly created model
  4. Due to some rounding problem in the decoder path (not a bug, this is a feature 😏), the input shape should be divisible by 32.
    e.g. 224x224 is a suitable size for input images, but 225x225 is not.


Potential issues

  • If you are unable to load the model from the saved HDF5 file, please refer to this issue.
  • Especially this comment can be used as a workaround.

Acknowledgment

  1. Some code snippets of EfficientNet are directly borrowed from this repo.
  2. The links of pretrained weights are borrowed from this repo.

Releases

No releases published

Packages

No packages published

Languages