8 Telling things apart: Image segmentation

 

This chapter covers

  • Understanding segmentation data and working with it in Python
  • Implementing a fully fledged segmentation data pipeline
  • Implementing an advanced segmentation model (DeepLab v3)
  • Compiling models with custom-built image segmentation loss functions/metrics
  • Training the image segmentation model on the clean and processed image data
  • Evaluating the trained segmentation model

In the last chapter, we learned about various advanced computer vision models and techniques to push the performance of an image classifier. We learned about the architecture of Inception net v1 as well as its successors (e.g., Inception net v2, v3, and v4). Our objective was to lift the performance of the model on an image classification data set with 64 × 64-sized RGB images of objects belonging to 200 different classes. While trying to train a model on this data set, we learned many important concepts:

8.1 Understanding the data

8.2 Getting serious: Defining a TensorFlow data pipeline

8.2.1 Optimizing tf.data pipelines

8.2.2 The final tf.data pipeline

8.3 DeepLabv3: Using pretrained networks to segment images

8.3.1 A quick overview of the ResNet-50 model

8.3.2 Atrous convolution: Increasing the receptive field of convolution layers with holes

8.3.3 Implementing DeepLab v3 using the Keras functional API

8.3.4 Implementing the atrous spatial pyramid pooling module

8.3.5 Putting everything together

8.4 Compiling the model: Loss functions and evaluation metrics in image segmentation

8.4.1 Loss functions

8.4.2 Evaluation metrics