This repository contains a tensorflow 2.0 implementation of Enet as in:
Paszke, A.; Chaurasia, A.; Kim, S.; Culurciello, E. ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation. arXiv:1606.02147 [cs] 2016.
Enet is a lightweight neural network geared towards image segmentation for real time applications. This tensorflow 2.0 implementation is greatly indebted with the PyTorch ENet - Real Time Semantic Segmentation implementation by iArunava.
You can try it out directly in this Colab notebook. In the notebook, Enet is trained in three different ways for comparison:
- First the Encoder and then the Decoder: as in the original paper, we first train the encoder, freeze the weights and then train the decoder. This approach provides the more stable training.
- Encoder and Decoder simultaneously with two objectives: an approach similar to the original paper: we train Enet in one go but with the stabilty benefits of the original approach.
- End to End: we train Enet in one go. It is the least stable method, albeit the simplest.
You can find them here for the CamVid dataset. The weights for different datasets will be released as soon as possible.
If instead you prefer something different, you can try a version of Enet trained on a face segmentation dataset built upon CelebHair and CelebA. As for the CamVid dataset, you can download the pretrained weights here. If you want to immediately try out face segmentation, you can do it with this Colab notebook. Enet will run on resized images generated by ThisPersonDoesNotExist.