CONVOLUTIONAL NEURAL NETWORK (CNN)

Gogoriay
5 min readJan 8, 2020

--

Convolutional Neural Network (CNN) adalah salah satu metode machine learning dari pengembangan Multi Layer Perceptron (MLP) yang didesain untuk mengolah data dua dimensi. CNN termasuk dalam jenis Deep Neural Network karena dalamnya tingkat jaringan dan banyak diimplementasikan dalam data citra. Convolutional Neural Network (CNN) adalah salah satu jenis neural network yang biasa digunakan pada data image, serta dapat mendeteksi dan mengenali object pada sebuah image. CNN terdiri dari neuron yang memiliki weight, bias dan activation function. Convolutional layer juga terdiri dari neuron yang tersusun sedemikian rupa sehingga membentuk sebuah filter dengan panjang dan tinggi (pixels).

Data

Data yang digunakan berupa data gambar yang tersimpan dalam 1 folder. Terdapat 2 jenis gambar yaitu gambar mobil dan motor. Masing-masing jenis memiliki 6 gambar yang ukuran lebar dan tingginya (pixels) berbeda.

Dalam metode CNN maka perlu meng-install packages keras, tensorflow, BiocManager, dan EBImage dalam program R. Lalu dilakukan pemanggilan packages yang digunakan dengan syntax seperti berikut ini:

library(keras)
library(tensorflow)
library(EBImage)

Membuat tempat directory atau menggunakan syntax setdw untuk memanggil folder yang digunakan untuk menyimpan gambar yang telah di resize. Berikut ini syntax yang digunakan.

setwd("D://percobaan/")
save_in <- ("D://percobaanhasil/")

Resize

Karena satuan ukuran tiap gambar berbeda, maka perlu dilakukan resize(mengubah ukuran) gambar agar ukurannya menjadi sama dengan menggunakan syntax berikut:

gambar <- list.files()
w <- 100
h <- 100
for(i in 1:length(gambar))
{result<-tryCatch({
imgname<-gambar[i]
img<-readImage(imgname)
img_resized <- resize (img,w=w,h=h)
path <- paste(save_in,imgname,sep=" ")
writeImage(img_resized,path, quality = 70)
print(paste("done",i,sep=" "))
},
error=function(e){print(e)}
)}

Berdasarkan output diatas, maka dapat dilihat bahwa kita akan menyimpan gambar yang telah di resize dari seluruh gambar dengan membuat size heightyaitu 100 dan width = 100, maka semua gambar akan berukuran 100x100 pixels. done 1” sampai dengan “done 12” berarti resize gambar yang kita lakukan telah berhasil. Hasil gambar yang telah di resize akan masuk ke folder percobaanhasil yang telah kita buat

Selanjutnya melakukan setting working directory pada folder gambar hasil resize serta memanggil gambar hasil resize dengan list.files.

setwd(“D://percobaanhasil/”)
gambar2<-list.files()
gambar2

Dari hasil output di atas 12 gambar yakni 6 gambar mobil dan 6 gambar motor telah berhasil di resize.

Struktur Data

Melihat strukturnya data dengan menggunakan syntax berikut :

gambar2<-lapply(gambar2,readImage)
str(gambar2)

Display Gambar

Untuk melihat bentuk dari gambar digunakan perintah display dengan menggunakan syntax berikut :

display(gambar2[[3]])
dim(gambar2[[3]])

Output diatas merupakan hasil dari dimensi data gambar ke-2 dengan ukuran size 100 x 100 pixels dan terlihat begitu kecil. Dimana dimensi dari size nya adalah panjang 100 dan lebar 100 pixels, serta warna yang digunakan hanya ada 3 warna.

Pembagian Data Training dan Testing

Data training diambil gambar 1 sampai gambar 4 mobil dan data gambar 7 sampai gambar 10 diambil gambar motor untuk dijadikan data training. Lalu, data testing nya adalah sisa dari data training yaitu data gambar mobil 5 dan 6 serta data gambar motor yaitu 11 dan 12. Pembagian data dilakukan dengan menggunakan syntax berikut:

train<-gambar2[c(1:4,7:10)]
test<-gambar2[c(5:6,11:12)]
train[[5]]

Setelah dibagi untuk training dan data testing, selanjutnya data tersebut dapat disimpan dalam bentuk CSV, sebagai contoh yaitu disimpannya data train urut data gambar yang ke 5 dalam bentuk CSV dengan menggunakan syntax berikut :

write.csv(train[[5]],"D//percobaan/datatrain.csv")

Menampilkan gambar secara terurut dengan jenis gambar 4 mobil dan 4 motor dengan menggunakan syntax berikut :

par(mfrow=c(2,4))
for (i in 1:8) plot(train[[i]])

Melakukan resize terhadap data train dan data test, me-resize data menjadi ukuran 32 x 32 pixels dengan menggunakan syntax berikut :

for( i in 1:8){train[[i]]<-resize(train[[i]],32,32)}
for( i in 1:4){test[[i]]<-resize(test[[i]],32,32)}

Mengkombinasikan semua data training yang berjumlah 8 data lalu digabungkan menjadi satu dengan menggunakan syntax berikut:

train<-combine(train)
x<-tile(train,8)
display(x,title="gambar")
dim(train)

Dari output diatas didapatkan hasil bahwa dimensi data train dengan size yang telah diubah menjadi 32 tinggi dan 32 lebar dalam bentuk pixels, kemudian kombinasi warna yang digunakan terdapat 3 dan jumlah data yaitu sebanyak 8 data.

Mengkombinasikan data testing dengan menggunakan syntax berikut :

test<-combine(test)
y<-tile(test,4)
dim(test)

Menyusun ulang dimensi dari data training dan data testing dengan menggunakan syntax berikut :

train <- aperm(train,c(4,1,2,3))
test<-aperm(test,c(4,1,2,3))
dim(train)
dim(test)

Klasifikasi

Membuat data target yang merupakan klasifikasi dari gambar data training dan testing. Dimisalkan 0 yaitu mobil dan 1 yaitu motor.

trainy<-c(rep(0,4),rep(1,4))
testy <- c(rep(0,2),rep(1,2))
trainy

Gambar diatas merupakan hasil klasifikasi. Data training yaitu 0 0 0 0 1 1 1 1 yang artinya mobil, mobil, mobil, mobil, motor, motor, motor, motor, motor. Dan data testing yaitu 0 0 1 1 yang artinya mobil, mobil, motor, motor.

testytrainLabels<-to_categorical(trainy)
testLabels<-to_categorical(testy)
trainLabels
testLabels

Maka akan didapatkan hasil seperti berikut:

--

--