Tuesday, January 22, 2019

Mengenal Alat Pendeteksi Teroris Menggunakan Convolutional Neural Network





Source: 123RF.com

Kasus terorisme seringkali terjadi di Indonesia dan tidak jarang teroris melarikan diri. Permasalahan yang sedang terjadi saat ini adalah kurangnya teknologi pendeteksi teroris. Seorang teroris bisa saja berada di tempat ramai sehingga sulit untuk dideteksi secara manual. Oleh karena itu, penulis ingin menerapkan Face Recognition dengan Convolutional Neural Network agar kita dapat lebih mudah untuk mendeteksi wajah teroris tersebut.







Convolutional Neural Network (CNN) merupakan salah satu bagian dari algoritma deep learning yang cara kerjanya mirip dengan neural network biasanya, namun CNN memiliki keunggulan yaitu mengurangi jumlah unit di network sehingga mengurangi parameter yang perlu dipelajari (tentunya akan mengurangi resiko overfitting). CNN juga dianggap bekerja sangat baik dalam bidang computer vision seperti image classifcation, object detection, dan neural style transfer. CNN adalah feed forward network yang terdiri dari kumpulan neuron yang memiliki weight, bias, dan score function yang akan mempresentasikan pixel dari image. Convolutional Neural Network mempelajari kategori-kategori image pada hidden layer architecture dan mengidentifikasi area terang atau gelap dari sebuah image sebelum menerapkan face recognition. Setiap node di network akan mempresentasikan satu aspek dari keseluruhan image. Seperti neural network pada umumnya, network akan di train menggunakan back propagation.  Pada bahasan artikel ini, image yang dimaksud adalah wajah dari teroris. 

Edge Detection dengan CNN
Dengan menggunakan CNN, hal pertama yang dilakukan adalah mendeteksi tepi (edge) dari objek yang terdapat di dalam image. Seperti ini:

Contoh Image
Jika diubah ke dalam bentuk matriks
Source: deeplearning.ai
Semakin tinggi nilai elemennya maka semakin terang (brighter) pula pixelnya



Vertical Edge Detection
Source: deeplearning.ai
Matiks [1 0 -1, 1 0 -1, 1 0 -1]  disebut sebagai vertical detection filter, tanda ‘*’ disebut dengan operasi convolutional. Hasil dari operasi itu akan menghasilkan vertical edge dari sebuah image. Untuk Horizontal detection filter:  [1 1 1, 0 0 0, -1 -1 -1]. Masih banyak jenis filter lainnya yang dapat digunakan seperti Sobel Filter dan Schorr Filter. 
Note: untuk gambar RGB maka butuh 3 filter (sesuai dengan jumlah channel)

Face Recognition
Salah satu aplikasi yang dapat dibuat menggunakan CNN adalah face recognition. Saya akan menggunakan Python dengan library imutils, openCV dan face_recognition.
Untuk dataset, saya menggunakan foto dari Abu Bkar Al-Baghdadi (ketua dari organisasi teroris ISIL)











Source: Wikipedia dan pyImageSearch

Modul face_recognition akan mengenerate 128-d dari wajah yang terdapat pada dataset dan akan disimpan di dalam vektor (ke dalam CNN). Kita tidak perlu membuat network dari scretch karna network yang terdapat di dalam modul sudah di train dengan sekitar 3 juta image (akurasi 99.38%)

Code untuk train dataset 
Loop ini akan berjalan sebanyak dataset yang kita miliki. Dari nama folder, kita bisa mengekstrak nama dari orang-orang yang terdapat pada dataset kita.
Image yang terdapat pada dataset kita akan di-convert ke dalam bentuk RGB agar compatible dengan dlib (method untuk deep learning (CNN)). Jika ditemukan wajah di dalam image, maka 128d dari wajah tersebut akan di extract (disebut dengan encoding face ke bentuk vektor). Hasil dari train dataset ini akan berupa file dengan extension “.pickle”  yang mengandung 128d untuk setiap dataset.

Code untuk face recognition dari video
Pada tahapan ini, kita me-load file .pickle yang berisi wajah yang sudah dikenal dan juga mengakses video yang akan dideteksi.
Di tahapan ini, kita sudah mengakses frame per frame dari video tersebut. Jika ditemukan wajah yang menyerupai yang terdapat di dataset maka kita akan memilih vote yang terbesar untuk nama yang akan muncul.


Note: untuk source code lengkapnya bisa di download:
https://drive.google.com/open?id=1wCLQVQSEw3AnRusYOz8Pg9tUVSHQo_XU

source:PyImageSearch


Wajah dari Abu Bakr Al-Baghdari sudah dapat dideteksi

Kesimpulan
Metode face recognition menggunakan CNN memang membutuhkan waktu yang cukup lama untuk ditrain jika dibandingkan dengan SVM. Tapi hasil dari face recognition dengan CNN bisa dibilang jauh lebih akurat dari SVM. Dengan dataset berupa image wajah teroris yang telah di-train menggunakan Convolutional Neural Network, alat pengaman seperti CCTV yang terletak di area ramai akan dapat digunakan untuk memantau sekaligus untuk mendeteksi wajah teroris. 

Referensi 
Patrik KAMENCAY, M. B. T. M. R. R., 2017. A New Method for Face Recognition Using Convolutional Neural Network. DIGITAL IMAGE PROCESSING AND COMPUTER GRAPHICS, Volume 15.

Hurieh Khalajzadeh, M. M. a. M. T., n.d. Face Recognition using Convolutional Neural Network.

Koessurya, A., 2018. Learn AI through Deep Learning. Jakarta: s.n.