Transcript for:
Memahami Convolutional Neural Networks (CNN)

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 10 pixel, tinggi 10 pixel, 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, 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 dishare dengan bagian dari input yang lain. Jadi proses penghitungannya akan seperti ini Kita juga bisa memiliki 2 output seperti ini dengan parameter yang berbeda dengan sebelumnya, tapi tetap dishare, tetap sama, untuk setiap bagian spasial input. Dalam mendesain convolution layer, kita perlu mengeset beberapa hal. Pertama, mau seberapa lokalkah 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 1 aja, atau 2, terserah. Ingat saja, makin jauh digeser, makin banyak informasi dari input yang terskip. Apalagi kalau kernel sizenya 1x1 lalu stridenya 2, pasti ada input yang terlewat dan tidak terhitung. Tapi stride 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 diset 1 yang berarti ada padding dengan ukuran satu 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. Convolutional layer berfungsi untuk mengekstrak feature. Jadi output dari convolution layer ini bisa disebut dengan feature map. Sedangkan fully connected dipakai untuk klasifikasi berdasarkan feature yang diekstrak. Feature 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, transpose 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 nggak ketinggalan updatenya ya.. Dah~