Enter your keyword

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

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

Pada kesempatan ini saya ingin mereview salah satu buku tentang deep learning untuk computer vision, yang ditulis oleh Mohamed Elgendy. Elgendy sendiri pernah terlibat memimpin tim think-tank deep learning di Amazon, dan sekarang vice president of engineering di Rakuten. Saya tertarik mereview buku ini setelah melihat review yang positif (Bintang 5) di Amazo

Ada beberapa buku tentang deep learning untuk computer vision, tetapi sejauh saya cermati, tidak ada buku yang keluasan dan kedalamannya sebagaimana buku ini, demikian juga keseimbangan yang baik antara teori fundamental dengan aplikasi dan praktek (coding). Pengarang buku ini mengharapkan dapat mencapai dua hal dengan menulis buku ini : 1) pembaca dapat menggunakan neural networks untuk membangun aplikasi end-to-end computer vision, dan 2) pembaca menjadi lebih nyaman dalam membaca dan mengimplementasikan makalah-makalah riset dalam bidang ini untuk tetap up-to-date dengan kemajuan computer vision di industri. Dengan visi ini, buku ini disusun oleh penulisnya secara cukup komprehensif dalam dua aspek : 1) keluasan horizontalnya karena membahas neural networks dengan berbagai macam arsitekturnya dan bagaimana cara melatih, mengevaluasi dan mem-fine-tune neural networks untuk aplikasi computer vision, maupun 2) kedalaman vertikalnya karena menjelaskan konsep matematika yang menjadi dasar deep learning, disamping contoh-contoh coding-nya. Meskipun demikian, konsep matematika yang dibahas tidak sedalam dan “serumit” buku Deep Learning-nya Goodfellow yang melegenda, namun lebih mendalam (dan ini sangat diperlukan untuk memahami deep learning dengan baik) dibandingkan buku Deep Learning with Python yang ditulis oleh Franchois Chollet.   

Buku ini disusun kedalam tiga bagian besar. Bagian pertama membahas deep learning dengan penyajian yang cukup rinci sebagai dasar untuk memahami kedua bagian yang lain. Bagian kedua menjelaskan tentang masalah deteksi dan klasifikasi objek visual. Bagian ketiga menjelaskan tentang metoda deep learning untuk membangkitkan citra dan visual embeddings. Setiap bagian disertai contoh-contoh projek, yang menggunakan Python, Tensor-flow, Keras, dan OpenCV. 

Bagian pertama terdiri dari beberapa Bab. Bab 1 membahas tentang computer vision yang mencakup komponen dari vision system, aplikasi computer vision, computer vision pipeline, pra-pengolahan citra, ekstraksi fitur, dan algoritma pengklasifikasi. Bab 2 membahas perceptron dan multi-layer perceptron, berbagai jenis fungsi aktivasi, pelatihan jaringan dengan error function dan optimisasinya, serta propagasi-balik. Beberapa variasi metoda gradient descent untuk mencari solusi dari masalah optimisasi disajikan pada bab ini. Bab 3 membahas tentang convolutional neural networks (CNN) dan aplikasinya untuk mengklasifikasi objek visual serta bagaimana konvolusi diterapkan pada citra berwarna. Bab ini menjelaskan CNN dengan cukup rinci, yang mencakup arsitektur CNN, operasi-operasi yang diperlukan khususnya pada lapisan konvolusi, seperti operasi konvolusi dan max-pool. Juga dibahas operasi drop-out, dan dijelaskan mengapa operasi ini diperlukan dalam pelatihan CNN. Hyperparameter pada CNN juga dibahas secara ringkas pada bab ini. Bab 4 membahas bagaimana menstrukturkan projek deep learning dan hyperparameter tuning. Secara khusus, bab ini membahas metrik kinerja deep learning, merancang model baseline, menyiapkan data pelatihan dan mengevaluasi model dan cara bagaimana meningkatkan kinerja deep learning. Setiap konsep yang dijelaskan pada bagian pertama ini dilengkapi dengan contoh-contoh coding yang cukup lengkap.

Bagian kedua terdiri dari sejumlah bab dan membahas deep learning untuk klasifikasi dan deteksi citra. Bab 5 membahas beberapa arsitektur yang berbasis CNN. Ada bahasan menarik di bab ini yang tidak saya temukan di buku-buku lain tentang deep learning, ini terkait dengan design patterns yang cukup bermanfaat bagi pembaca untuk memahami pola yang umumnya diterapkan dalam desain arsitektur CNN. Beberapa arsitektur terkini yang berbasis pada CNN dibahas seperti LeNet, AlexNet, VGG-Net, Inception dan ResNet, disertai contoh codingnya. Bab 6 membahas tentang transfer learning—topik yang sangat penting dalam praktek dan penerapan deep learning, mencakup antara lain bagaimana menggunakan pre-trained model dan prinsip-prinsip network fine tuning. Bab ini juga mengeksplorasi beberapa sumber terbuka dataset citra untuk melatih model deep learning seperti MNIST, CIFAR, ImageNet, MS COCO, dan Kaggle.  Disajikan juga dua contoh projek membangun end-to-end transfer learning. Bab 7 membahas deteksi objek dengan arsitektur R-CNN (Region Based CNN), SSD (Single Shot Detector), dan YOLO (You Only Look Once). Beberapa pengembangan arsitektur R-CNN dibahas dan dibandingkan pada bab ini, seperti Fast R-CNN dan Faster R-CNN. Pada keluarga YOLO, dibahas secara khusus YOLO Versi 3.    

Bagian ketiga membahas tentang model generatif dan visual embedding. Bab 8 membahas Generative Adversarial Networks (GAN), komponen dasar GAN yang terdiri atas model generatif dan model diskriminatif, serta evaluasi model-model generatif. Disajikan juga aplikasi GAN pada beberapa sistem vision yang populer dan menarik, serta bagaimana membangun model GAN. Bab 9 membahas tentang DeepDream dan neural style transfer. Bab ini antara lain mencakup visualisasi CNN feature map, algoritma DeepDream dan bagaimana menggunakan neural style transfer untuk menciptakan citra artistik. Bab 10 secara khusus membahas visual embeddings. Bab ini mencakup bahasan tentang bagaimana mengekspresikan similaritas antar citra melalui loss function, melatih CNN untuk mencapai fungsi embedding yang diperlukan dengan akurasi yang tinggi, dan menggunakan visual embedding untuk aplikasi dalam dunia nyata. Contoh-contoh coding disertakan untuk menjelaskan pelatihan GAN, aplikasinya dan pemanfaatan konsep visual embeddings.  

Pada Bagian Lampiran dibahas bagaimana men-setup lingkungan perangkat lunak deep learning melalui Anaconda, dan packages seperti Numpy, OpenCV, Keras, dan TensorFlow. Juga ditunjukkan cara men-setup AWS EC2, bilamana pembaca tidak melatih jaringannya pada GPU. Buku ini dilengkapi dengan berbagai ilustrasi, diagram, kurva, gambar dan foto-foto yang melengkapi pemahaman pembaca tentang konsep deep learning untuk aplikasi computer vision. Link github dari source-code yang digunakan pada buku ini juga disertakan. 

Menyimak konten diatas, berbeda dengan kebanyakan buku yang lain tentang deep learning untuk computer vision, buku ini sangat komprehensif membahas topik AI yang sedang hangat ini dengan keseimbangan yang baik antara teori/konsep fundamental/matematika mengenai deep learning dan aplikasinya dalam computer vision, beserta contoh-contoh coding-nya. Kesan saya buku ini disusun dengan sangat cermat oleh penulisnya dengan memperhatikan dua aspek horizontal dan vertikal seperti dikemukakan pada paragraf di awal ulasan ini. Mempertimbangkan hal ini, tanpa ragu saya sangat merekomendasikan buku ini baik bagi para mahasiswa, terutama pada tingkat pascasarjana, dosen, peneliti, praktisi di industri maupun pelaku start-ups. 

     

Pengulas : Bambang Riyanto, STEI-ITB, Center for AI-ITB, www.riset.ai