Ulasan Buku Deep Learning for Vision System, Mohamed Elgendy, Manning, 2020

On this occasion I would like to review one of the books about Deep learning for computer vision, written by Mohamed Elgendy. Elgendy himself was involved in leading the deep learning think tank at Amazon and is now vice president of engineering at Rakuten. I was interested in reviewing this book after seeing the positive (5-star) reviews on Amazon.
There are several books on deep learning for computer vision, but as far as I have observed, none have the breadth and depth as this book, as well as a good balance between fundamental theory and application and practice (coding). The author of this book hopes to achieve two things by writing this book: 1) readers can use neural networks to build end-to-end computer vision applications, and 2) readers become more comfortable in reading and implementing research papers in this field to stay up-to-date with advances in computer vision in the industry. With this vision, this book is structured by the author in a fairly comprehensive manner in two aspects: 1) its horizontal breadth because it discusses neural networks with various architectures and how to train, evaluate and fine-tune neural networks for computer vision applications, and 2) its vertical depth because it explains the mathematical concepts that are the basis of deep learning, in addition to coding examples. However, the mathematical concepts discussed are not as deep and “complex” as Goodfellow’s legendary book Deep Learning, but they are more in-depth (and this is very necessary for a good understanding of deep learning) than the book Deep Learning with Python written by Franchois Chollet.
This book is organized into three main sections. The first section discusses deep learning, with a fairly detailed presentation that serves as a foundation for understanding the other two sections. The second section explains the problem of visual object detection and classification. The third section describes deep learning methods for generating images and visual embeddings. Each section includes project examples using Python, Tensor-Flow, Keras, and OpenCV.
The first part consists of several chapters. Chapter 1 discusses computer vision, covering the components of a vision system, computer vision applications, computer vision pipelines, image preprocessing, feature extraction, and classifier algorithms. Chapter 2 discusses perceptrons and multi-layer perceptrons, various types of activation functions, network training with error functions and their optimization, and backpropagation. Several variations of the gradient descent method for finding solutions to optimization problems are presented in this chapter. Chapter 3 discusses convolutional neural networks (CNN) and their application to classifying visual objects and how convolution is applied to color images. This chapter explains CNN in sufficient detail, including the architecture of CNN, the operations required specifically in the convolutional layer, such as convolution and max-pool operations. It also discusses the drop-out operation, and explains why this operation is necessary in training CNN. Hyperparameters on CNN are also briefly discussed in this chapter. Chapter 4 covers how to structure a deep learning project and hyperparameter tuning. Specifically, this chapter covers deep learning performance metrics, designing baseline models, preparing training data, evaluating models, and how to improve deep learning performance. Each concept explained in this first section is complemented by comprehensive coding examples.
The second part consists of several chapters and discusses deep learning for image classification and detection. Chapter 5 discusses several architectures based on CNN. There is an interesting discussion in this chapter that I did not find in other books on deep learning, it is related to design patterns that are quite useful for readers to understand the patterns commonly applied in the design of CNN architectures. Several recent architectures based on CNN are discussed such as LeNet, AlexNet, VGG-Net, Inception and ResNet, accompanied by coding examples. Chapter 6 discusses transfer learning—a very important topic in the practice and application of deep learning, including how to use pre-trained models and the principles of network fine tuning. This chapter also explores several open-source image datasets for training deep learning models such as MNIST, CIFAR, ImageNet, MS COCO, and Kaggle. Two examples of end-to-end transfer learning projects are also presented. Chapter 7 discusses object detection with the R-CNN (Region Based CNN), SSD (Single Shot Detector), and YOLO (You Only Look Once) architectures. Several developments of the R-CNN architecture are discussed and compared in this chapter, such as the Fast R-CNN and the Faster R-CNN. In the YOLO family, the YOLO Version 3 is specifically discussed.
The third section discusses generative models and visual embedding. Chapter 8 discusses Generative Adversarial Networks (GAN), the basic components of GAN consisting of generative and discriminative models, and the evaluation of generative models. It also presents the application of GAN to several popular and interesting vision systems, as well as how to build the GAN model. Chapter 9 discusses DeepDream and neural style transfer. This chapter includes, among others, the visualization of the CNN feature map, the DeepDream algorithm and how to use neural style transfer to create artistic images. Chapter 10 specifically discusses visual embeddings. This chapter covers how to express similarity between images through a loss function, train CNN to achieve the required embedding function with high accuracy, and use visual embedding for real-world applications. Coding examples are included to explain the GAN training, its application and the utilization of the visual embeddings concept.
The Appendix discusses how to setup a deep learning software environment using Anaconda and packages such as Numpy, OpenCV, Keras, and TensorFlow. It also shows how to setup AWS EC2, if the reader did not train their network on GPU. This book is equipped with various illustrations, diagrams, curves, images, and photographs that complement the reader's understanding of the concept of deep learning for computer vision applications. GitHub links for the source code used in this book are also included.
Looking at the content above, unlike most other books on deep learning for computer vision, this book is very comprehensive in discussing this hot topic AI with a good balance between fundamental theories/concepts/mathematics regarding deep learning and its applications in computer vision, along with coding examples. My impression is that this book is very carefully compiled by the author by paying attention to two horizontal and vertical aspects as stated in the paragraph at the beginning of this review. Considering this, without hesitation I highly recommend this book for students, especially at the postgraduate level, lecturers, researchers, practitioners in industry and start-ups.
Pengulas : Bambang Riyanto, STEI-ITB, Center for AI-ITB, www.riset.ai