Pendeteksian objek dengan berbagai macam metode

Posted on

Pendeteksian objek – Deteksi objek dalam digital image processing adalah suatu proses yang digunakan untuk menetukan keberadaan objek tertentu di dalam suatu citra digital.

Kecerdasan Buatan (Artificial Intelligence)

Kecerdasan buatan merupakan suatu cabang dalam bidang komputer sains yang membahas bagaimana sebuah komputer dapat meniru cara berpikir seperti manusia. Dengan kecerdasan buatan komputer dapat mengambil kesimpulan dan memutuskan suatu permasalahan seperti layaknya manusia.

Menurut Luckin dan Colen dalam jurnal milik Ahmad Sudi Pratikno (2017) menyatakan bahwa Artificial Intellegence sebagai suatu sistem komputer yang dirancang untuk berinteraksi dengan dunia melalui kemampuan-kemampuan tertentu dan perilaku intelijen yang kita sadari seperti manusia pada umumnya. Hal tersebut dikuatkan oleh Colen yang menyatakan bahwa Artificial Intelligence merupakan teori yang mendasari tentang mekanisme suatu kecerdasan serta metode empirik untuk membangun dan menguji kemungkinan-kemungkinan model dalam mendukung suatu teori.

Beberapa contoh penerapan Artificial Intelligence:

  1. Untuk sistem kemudi otomatis pada mobil, contohnya pabrikan mobil Tesla (Amerika) yang mempunyai sistem autopilot pada mobil produksinya.
  2. Sistem self parking atau parkir otomatis pada mobil modern yang dapat membantu pengemudi memarkir mobilnya secara otomatis.
  3. Sistem penguncian wajah (Face Unlock) pada smartphone yang dapat mengenali wajah pemiliknya.
  4. Virtual Assistant seperti SIRI dari Apple, Cortana dari Microsoft, dan Google Assistant dari Google yang dapat menjadi asisten virtual sesuai dengan preferensi pengguna.

CNN (Convolutional Neural Network)

Convolutional Neural Network (CNN) adalah pengembangan dari Multilayer Perceptron (MLP) yang didesain untuk mengolah data dua dimensi. Convolutional Neural Network (CNN) adalah salah satu jenis neural network yang biasa digunakan pada data image. CNN bisa digunakan untuk mendeteksi dan mengenali object pada sebuah image.

Hasil penelitian AlexNet memenangi kompetisi ILSVRC 2010 dan ILSVRC 2012 dengan tingkat error terendah 15,3%. Sebanyak 1,2 juta data citra dengan 1.000 kelas dikoleksi dari situs web dan diberi label oleh manusia menggunakan Amazon’s Mechanical Turk crowd-sourcing tool. Arsitektur CNN yang digunakan terdiri atas lima lapisan konvolusional, lima fungsi aktivasi relu, dua lapisan max pooling, dan tiga lapisan fully[1]connected. Proses pelatihan menggunakan stochastic gradient descent dengan parameter ukuran batch 128, learning rate 0,01, momentum 0,9, dan decay 0,0005.

Ada beberapa bagian penting dari metode CNN yaitu:

Convolutional Layer

Convolution Layer melakukan operasi konvolusi pada output dari layer sebelumnya. Layer tersebut adalah proses utama yang mendasari sebuah CNN.

Konvolusi adalah suatu istilah matematis yang berarti mengaplikasikan sebuah fungsi pada output fungsi lain secara berulang. Dalam pengolahan citra, konvolusi berati mengaplikasikan sebuah kernel pada citra disemua offset yang memungkinkan. Kernel bergerak dari sudut kiri atas ke kanan bawah.

Gambar input CNN selalu berbentuk kotak. Proses untuk gambar non-rectangular masih belum diketahui. Filter pun mengikuti karakteristik kotak tersebut.

Konvolusi pada data citra bertujuan untuk mengekstraksi fitur dari citra input. Konvolusi akan menghasilkan transformasi linear dari data input sesuai informasi spasial pada data. Bobot pada layer menspesifikasikan kernel konvolusi yang digunakan, sehingga kernel konvolusi dapat dilatih berdasarkan input pada CNN.

Pooling Layer

Fungsi dari pooling layer adalah untuk mereduksi input secara spasial (mengurangi jumlah parameter) dengan operasi down-sampling. Umumnya, metode pooling yang digunakan adalah max pooling atau mengambil nilai terbesar dari bagian tersebut. Namun terdapat metode pooling lain yang dapat digunakan seperti average pooling atau L2-norm pooling.

YOLO (You Only Look Once)

YOLO (You Only Look Once) adalah sistem pendeteksian objek yang menggunakan metode CNN. YOLO dapat memproses gambar secara real-time pada 45 frame per second, pada versi mininya bisa mencapai 155 frame per second (Redmon & Farhadi, 2016). YOLO menggunakan pendekatan berbeda untuk mendeteksi objek pada suatu citra. YOLO mengaplikasikan neural network pada suatu citra digital kemudian membaginya ke beberapa bagian grid untuk memprediksi objek apa saja yang ada didalam suatu citra digital.

YOLO membagi input gambar menjadi grid berukuran S×S, dimana nilai S adalah 7 dengan input gambar berukuran 448 x 448. Untuk memperoleh bounding box, dilakukan konvolusi dari input gambar, sehingga hasil akhirnya akan mendapat ukuran bounding box sebesar S×S×(B*5+C) dimana B adalah banyaknya bounding box (umumnya 2) dalam 1 grid dan C adalah banyaknya class yang dapat diklasifikasi. Nilai B dikalikan dengan 5 karena sebuah bounding box memiliki 5 nilai yang perlu disimpan, koordinat x, koordinat y, lebar (width), tinggi (height), dan confidence score (nilai probabilitas bounding box pada sebuah objek).

Untuk semua atribut pada bounding box akan dilakukan normalisasi sehingga nilainya menjadi antara 0 hingga 1. Koordinat x dan y akan dinormalisasi menyesuaikan titik kiri atas dari grid yang bersangkutan. Tinggi dan lebar akan dinormalisasi sesuai dengan ukuran gambar. Nilai koordinat x dan y pada sebuah bounding box pada setiap grid merupakan titik tengah grid yang bersangkutan.

Python

Python adalah sebuah bahasa pemrograman dinamis yang sering digunakan dalam pengembangan aplikasi pada berbagai domain. Salah satu fitur yang tersedia pada python adalah sebagai pemrograman dinamis yang dilengkapi skrip meski pada praktiknya penggunaan bahasa ini lebih luas mencakup konteks pemanfaatan yang umumnya tidak dilakukan dengan menggunakan bahasa skrip (Darmawan & Suwastono, 2015). Bahasa Python mudah dimengerti (serupa dengan bahasa Inggris), dan tidak perlu compiling, maka dari itu kita dapat menjalankan script Python begitu kita menyimpannya tanpa memerlukan langkah lanjutan.

Computer Vision

Computer vision adalah bagian dari ilmu komputer yang membahas bagaimana sebuah komputer dapat melihat seperti manusia, oleh karena sangat erat kaitannya dengan penglihatan, pencahayaan menjadi faktor yang juga penting dalam hal ini (Wahyudi & Kartowisastro, 2011).

OpenCV

OpenCV adalah sebuah library yang berisi fungsi-fungsi pemograman untuk teknologi computer vision secara real-time. OpenCV bersifat open source, bebas digunakan untuk hal-hal yang bersifat akademis dan komersial. Di dalamnya terdapat interface untuk C++, C, Python, dan Java yang dapat berjalan pada Windows, Linux, Android, dan Mac. Menurut Gary, dalam jurnal milik Tobi Markus Dwiyanto (2015), fitur-fitur yang terdapat pada OpenCV antara lain yaitu manipulasi data image (alokasi, rilis, duplikasi, pengaturan, konversi), Image dan I/O video (masukan berbasis file dan kamera, keluaran image/ video file), manipulasi matriks dan vektor serta aljabar linear (produk, solusi, eigenvalues, SVD), beragam struktur data dinamis (daftar, baris, grafik), dasar pengolahan citra (filter, deteksi tepi, deteksi sudut, pengambilan sampel dan interpolasi, konversi warna, operasi morfologi, histogram), analisis struktur (komponen yang berhubungan, pengolahan kontur, transformasi jarak, variasi momen, transformasi Hough, perkiraan polygonal, menyesuaikan garis, delaunay triangulation, Kalibrasi kamera (menemukan dan menelusuri pola kalibrasi, kalibrasi, dasar estimasi matriks, estimasi homografi, korespondensi stereo), analisis gerakan (optical flow, segmentasi gerakan, penelusuran), pengenalan objek (metode eigen, HMM), dasar Graphical User Interface atau GUI (menampilkan image/ video, penanganan mouse dan keyboard, scroll-bars), pelabelan image (garis, poligon, gambar teks).

LabelImg

LabelImg adalah program yang berguna untuk image annotation atau pelabelan gambar. LabelImg adalah program open source sehingga bebas untuk digunakan. LabelImg dapat melabeli data gambar yang akan dijadikan dataset dengan format YOLO dan PascalVOC. LabelImg dibuat dengan bahasa pemrograman python 3 dan Qt untuk user interfacenya, sehingga membutuhkan instalasi python 3 dan library PyQt di komputer untuk menjalankannya.

CUDA

CUDA (Compute Unified Device Architecture) adalah arsitektur pemrosesan parallel yang diimplementasikan ke dalam GPU buatan Nvidia. CUDA dikembangkan oleh Nvidia untuk mempermudah utilitasi GPU untuk keperluan umum (non-grafis). Arsitektur CUDA ini memungkinkan pengembang perangkat lunak untuk membuat program yang berjalan pada GPU buatan Nvidia dengan syntax yang mirip dengan syntax C yang sudah banyak dikenal.

Sejak awal kemunculannya sampai saat ini, CUDA mengalami perkembangan yang cukup pesat. Hal ini bisa dilihat dari perbandingan banyaknya riset berbasis CUDA yang dilakukan dan juga banyaknya CUDA SDK yang didownload.

cuDNN

Berdasarkan dari website nvidia, cuDNN atau CUDA Deep Neural Network Library adalah library yang dikembangkan oleh Nvidia yang dikhususkan untuk deep neural network. cuDNN sangat berguna untuk meningkatkan performa GPU untuk keperluan deep neural network atau jaringan saraf tiruan. cuDNN banyak digunakan di aplikasi untuk deep learning diantaranya adalah Tensorflow, Keras, Matlab, MxNet dan PyTorch.

Flowchart

Menurut Pahlevy (2010) Flowchart (bagan alir) adalah gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program, yang menyatakan arah alur program tersebut.

Implementasi

Menurut Browne dan Wildavsky, dalam jurnal milik Haryati, Sudarsono dan Suryana (2015), menyatakan bahwa implementasi adalah perluasan aktivitas yang saling menyesuaikan. Tahap implemetasi merupakan tahapan sementara dimana analisis dan perancangan dapat digunakan. Sehingga dalam tahap ini terdapat kemungkinan terjadinya perubahan-perubahan dan kebutuhan-kebutuhan baru sesuai dengan permintaan dan kebutuhan organisasi atau perusahaan.

Pengujian

Menurut standar ANSI/IEEE 1059, testing atau pengujian adalah sebuah proses menganalisa suatu entitas software untuk mendeteksi perbedaan antara kondisi yang ada dengan kondisi yang diinginkan (defects/errors/bugs) dan mengevaluasi fitur-fitur dari entitas software.

Black Box testing

Blackbox Testing adalah sebuah pengujian dimana proses ini melihat kebenaran perangkat lunak yang diuji hanya dilihat berdasarkan dari keluaran yang dihasilkan dari data atau kondisi masukan yang diberikan untuk fungsi yang ada tanpa melihat bagaimana proses untuk mendapatkan keluaran tersebut. (Julyana, 2016).

Pascal VOC (Visual Object Classes)

Pascal VOC (Visual Object Classes) adalah format untuk image annotation atau pelabelan data. Menggunakan format xml sebagai outputnya. PascalVOC terus diuji dan dikembangkan melalui kompetisi klasifikasi objek (Everingham & Winn, 2011).

Epoch

Epoch adalah ketika seluruh dataset sudah melalui proses training pada Neural Netwok sampai dikembalikan ke awal untuk sekali putaran, karena satu Epoch terlalu besar untuk dimasukkan (feeding) kedalam komputer maka dari itu perlu membaginya kedalam satuan kecil (batches).

Seiring bertambahnya jumlah epoch, semakin banyak pula weight (bobot) yang berubah dalam Neural Network dan kurvanya melengkung dari kurva yang kurang sesuai hingga selaras dengan kurva yang overfitting.

Batc

Batch Size adalah jumlah sampel data yang disebarkan ke Neural Network. Contohnya jika mempunyai 100 dataset dan batch sizenya adalah 5 maka algoritma ini akan menggunakan 5 sampel data pertama dari 100 data yang dimiliki (ke1, ke2, ke3, ke4, dan ke5) lalu disebarkankan atau ditraining oleh Neural Network sampai selesai kemudian mengambil kembali 5 sampel data kedua dari 100 data (ke 6, ke 7, ke 8, ke 9, dan ke 10), dan begitu seterusnya sampai 5 sampel data ke 20 (100⁄5=20).

Iterations

Iterations dalam neural network adalah jumlah batch yang diperlukan untuk menyelesaikan satu epoch. Jumlah iteration sama dengan jumlah batch pada satu kali epoch.

Baca juga :

Leave a Reply

Your email address will not be published.