Salah satu metode deep learning yang umum digunakan untuk mengolah data gambar atau video adalah Convolutional Neural Network, yang sering disingkat CNN. CNN adalah neural network yang memiliki convolution layer. Neural network pada video sebelumnya tentang deep learning terdiri dari fully connected layer.
Bedanya fully connected layer dan convolution layer itu apa sih? Misalnya, Kita memiliki input gambar dengan ukuran lebar 10px, tinggi 10px, dan 3 channel RGB. Fully Connected akan mengkoneksi setiap pixel pada gambar, termasuk dari 3 channel warna untuk setiap output. Jika kita ingin memiliki 2 output, maka koneksinya akan seperti ini. Seperti namanya, Fully connected, connected, input dan output terkoneksi penuh.
Masing-masing koneksi juga memiliki weight atau parameter yang terpisah. Untuk mempersimpel gambar, koneksi antara input dan output bisa digambarkan seperti ini. Sedangkan convolution layer hanya melihat input secara lokal seperti ini.
Parameter akan di-share dengan bagian dari input yang lain. Jadi, proses penghitungannya akan seperti ini. Kita juga bisa memiliki dua output seperti ini dengan parameter yang berbeda dengan sebelumnya, tapi tetap di-share, tetap sama untuk setiap bagian spasial input.
Dalam mendesain convolution layer, kita perlu mengeset beberapa hal. Pertama, mau seberapa lokal kah convolution layer kita? Bisa sangat lokal, ukuran 1x1 seperti ini, atau 3x3, atau 5x5, atau terserah. Ukuran ini disebut dengan kernel size.
Kalau ukurannya sama dengan input, maka convolution layer kita sama dengan fully connected layer. Kedua, Seberapa jauh setiap kernel mau digeser setiap langkahnya? Namanya stride.
Mau geser satu aja, atau dua, terserah. Ingat saja, makin jauh digeser, makin banyak informasi dari input yang terskip. Apalagi kalau kernel size-nya 1x1, lalu stridenya 2. Pasti ada input yang terlewat atau tidak terhitung.
Tapi stripe ini berguna, salah satunya jika kita ingin mengurangi beban komputasi. Ketiga, jika diperhatikan, pada convolution layer dengan kernel size lebih besar dari 1, ukuran output akan lebih kecil daripada input. Jika kita ingin outputnya punya ukuran sama, kita perlu menambahkan padding pada input. Ukuran padding dan nilai paddingnya bisa kita set sendiri.
Biasanya, nilai padding diisi 0. Dan misalnya untuk convolution layer dengan kernel size 3, stride 1, jika kita ingin outputnya memiliki ukuran sama, ukuran padding bisa di-set 1, yang berarti ada padding dengan ukuran 1 pixel di setiap sisinya. CNN bisa terdiri dari convolution layer, dan Fully Connected Layer. AlexNet, yang memenangi ImageNet Challenge tahun 2012 sehingga memulai tren deep learning dan AI, juga merupakan CNN yang terdiri dari 5 Convolution Layer dan 3 Fully Connected Layer.
Convolution Layer berfungsi untuk mengekstrak feature. Jadi, output dari Convolution Layer ini bisa disebut dengan Feature Map. Sedangkan Fully Connected dipakai untuk klasifikasi berdasarkan fitur yang diekstrak. Fitur apa sih yang diekstrak?
Ada bagian dari riset AI yang mempelajari ini dengan memvisualisasi apa yang diekstrak oleh Convolution Layer. Ini akan dijelaskan di lain waktu. Convolution Layer sendiri juga ada macam-macamnya. Pada video ini adalah versi yang paling sering digunakan. yaitu convolution 2D.
Ada juga 1D, 3D convolution, dilated convolution, transposed convolution, depthwise convolution, deformable convolution, dan mungkin saja akan bertambah seiring berkembangnya riset pada AI. Jadi, kalau mau tahu lebih lanjut mengenai macam-macam convolution layer ini, dan juga perkembangannya, jangan lupa subscribe channel ini, biar gak ketinggalan update-nya ya. Daaah!