Convolutional neural networks can be built to output multi-dimensional data. Therefore, models can be trained to predict images. In Chapter 6, we introduced encoders-decoders and the more specific auto-encoders, demonstrating how they can be applied to the recovery of corrupted images or to per-pixel classification (i.e. semantic segmentation). From simple digit images to pictures gathered for smart-car applications, the following notebooks explain how CNNs can edit and segment data.
(Reminder: Notebooks are better visualized with nbviewer
: click here to continue on nbviewer.jupyter.org
.)
- 6.1 - Discovering Auto-Encoders
- Build a simple auto-encoder (AE) and explore its latent space (data embedding).
- 6.2 - Denoising with Auto-Encoders
- Train the previous auto-encoder to denoise corrupted images.
- 6.3 - Improving Image Quality with Deep Auto-Encoders (Super-Resolution)
- Implement a simple convolutional auto-encoder followed by a more complex U-Net, and apply them to improving the resolution of low-quality images.
- 6.4 - Preparing Data for Smart Car Applications
- Discover and prepare Cityscapes, a famous dataset applied to the training of recognition systems for autonomous driving.
- 6.5 - Building and Training a FCN-8s Model for Semantic Segmentation
- Extend the VGG into FCN-8s, an efficient architecture for semantic segmentation; and apply it to visual recognition for autonomous driving. Loss weighing strategies are also presented.
- 6.6 - Building and Training a U-Net Model for Object and Instance Segmentation
- Apply the previously-implemented U-Net architecture to visual recognition for autonomous driving, apply the Dice loss, and reuse state-of-the-art algorithms to achieve instance segmentation.
- cityscapes_utils.py: utility functions for the Cityscapes dataset (code presented in notebook 6.4).
- fcn.py: functional implementation of the FCN-8s architecture (code presented in notebook 6.5).
- keras_custom_callbacks.py: custom Keras callbacks to monitor the trainings of models (code presented in notebooks 4.1 and 6.2).
- mnist_utils.py: utility functions for the MNIST dataset, using
tensorflow-datasets
(code presented in notebook 6.1). - plot_utils.py: utility functions to display results (code presented in notebook 6.2).
- tf_losses_and_metrics.py: custom losses and metrics to train/evalute CNNs (code presented in notebooks 6.5 and 6.6).
- tf_math.py: custom mathematical functions reused in other scripts (code presented in notebooks 6.5 and 6.6).
- unet.py: functional implementation of the U-Net architecture (code presented in notebook 6.3).