Anda di halaman 1dari 13

Analisis CNN (Convolutional Neural Network) Terhadap

Image Processing
Yandi Anzari
2301162035
Telkom University
Jl. Telekomunikasi, Bandung

1. Pendahuluan
Deep Learning adalah salah satu topik yang sedang hangat untuk dibahas dikalangan
akademisi ataupun professional. Deep Learning sendiri termasuk salah satu cabang Machine
Learning (ML) yang menggunakan Deep Neural Network1 untuk menyelesaikan permasalahan
pada domain ML.
Neural network merupakan sebuah model yang terinspirasi oleh bagaimana neuron2 dalam
otak manusia bekerja. Tiap neuron pada otak manusia saling berhubungan dan informasi
mengalir dari setiap neuron tersebut. Tiap neuron menerima input dan melakukan operasi dot
dengan sebuah weight.

Arsitektur Neural Network

Secara sederhana, neural network adalah sebuah alat pemodelan data statistik non-linier,
serta dapat juga digunakan untuk memodelkan hubungan yang kompleks antara input dan
output untuk menemukan pola-pola pada data. Menurut suatu teorema yang disebut "teorema
penaksiran universal", neural network juga mempunyai lapis tersembunyi (hidden layer)
dengan fungsi aktivasi non-linear, hidden layer ini dapat memodelkan seluruh fungsi terukur
apapun dari suatu dimensi ke dimensi lainnya (Kur' Hornik 1989).
Pada gambar arsitektur neural network diatas dapat dilihat bahwa terdapat hidden pada
arsitektur di neural network. Jumlah layer hidden ini tidak ada aturan dalam pemakaian nya

1
jaringan dari sekelompok unit pemroses kecil yang dimodelkan berdasarkan sistem saraf manusia (Wikipedia)
2
Sel saraf atau neuron merupakan satuan kerja utama dari sistem saraf yang berfungsi menghantarkan impuls listrik yang terbentuk akibat adanya
suatu stimulus (rangsang)
sendiri, namun kebanyak literature memakai hidden layer lebih dari satu. Pada arsitektur diatas
dapat dilihat juga bahwa terdapat tiga (3) buah neuron yang terdiri dari layer input, layer
hidden dan layer output. Pada layer input terdapat tiga (3) buah node, sedangkan pada layer
output terdapat 2 buah node serta 4 buah node pada layer hidden. Arsitektur diatas biasa
disebut juga dengan MLP (Multi Layer Perceptron).

3 buah neuron

Setiap neuron pada MLP saling berhubungan yang ditandai dengan tanda panah pada
gambar diatas. Tiap koneksi memiliki weight yang nantinya nilai dari tiap weight akan berbeda-
beda. Hidden layer dan output layer memiliki tambahan input yang biasa disebut dengan bias
(Tidak disebutkan pada gambar diatas). Bias ini biasanya terletak diantara input layer dan
Hidden layer, dan terdapat pula diantara hidden layer dan output layer (pada gambar diatas).
Sehingga pada arsitektur pertama terdapat 3x4 weight + 4 bias dan 4x2 weight + 2 bias.
Total adalah 26 parameter yang pada proses training akan mengalami perubahan untuk
mendapatkan hasil yang terbaik.
Activation function pada arsiterktur diatas hanya terdapat pada hidden layer dan output
layer, activation function ini kadang berbeda tergantung daripada data atau problem yang
dimiliki.

Objek
Teknik MLP ini banyak digunakan pada image processing untuk mengklasifikasikan
gambar (image) dengan berbagai kasus, sebagai contoh kasus sederhana adalah saat melihat
objek diatas sebagai manusia tentu dapat menentukan objek diatas terdiri dari gambar apa saja.
Namun machine tidak mudah untuk menentukan gambar apa saja yang ada pada objek diatas
gambar diatas, dengan menggunakan MLP maka machine dapat menentukan image apa saja
yang terdapat pada objek diatas dengan melakukan klasifikasi setiap pixel dan
membandingkannya dengan data training yang diberikan.
Teknik MLP inipun rupanya memiliki kelemahan, yaitu apabila image yang ingin
ditentukan tidak terletak ditengah-tengah maka MLP tidak bisa mengenali objek tersebut
dengan baik.
CNN (convolutional neural network) merupakan salah satu solusi untuk mengatasi
permasalahan yang ada pada MLP, dengan menggunakan CNN maka objek yang terdapat
dipojok pada objekpun dapat dikenali dengan baik.
Pada study ini penulis melakukan experiment untuk mengetahui kinerja dan performa pada
CNN, experiment ini dilakukan pada data image yang didapat di github dari akun Ventakesh
Tata yang terdiri dari 1971 gambar anjing dan kucing

2. CNN (Convolutional Neural Network)


Convolutional Neural Network (CNN) adalah salah satu jenis neural network yang biasa
digunakan pada data image. CNN sendiri terinspirasi terinspirasi dari cara mamalia ( manusia),
dan menghasilkan persepsi visual seperti contoh diatas. Penelitian oleh Hubel dan Wiesel
menunjukkan bahwa neuron dalam korteks visual pada otak mamalia tersusun menjadi sebuah
topographical map, yang setiap level nya fokus pada karakteristik tertentu. Atau dengan kata
lain, sebuah gambar direpresentasikan ke dalam level feature hierarchy yang membentuk
gambar tersebut secara keseluruhan (Darmadi 2018).
CNN bisa digunakan untuk mendeteksi dan mengenali objek pada sebuah image. Secara
garis besar CNN tidak jauh berbeda dengan neural network biasanya. CNN terdiri dari neuron
yang memiliki weight, bias dan activation function.

Arsitektur CNN
Pada gambar diatas dapat dilihat bahwa terdapat 2 langkah besar yang ada di CNN, yaitu
feature learning dan classification.
Pada feature learning terdapat beberapa langkah yaitu convolution-Relu dan pooling,
pada langkah ini tidak ada batasan jumlah maximal terhadap proses convolutiob-Relu dan
pooling. Namun semakin banyak proses tersebut dilakukan maka akan mendapatkan akurasi
yang maximal pula.
Pada langkah classification terdapat pula langkah-langkah yang ada, yaitu flatten, fully
connected dan softmax. Flatten dan fully connected ini merupakan atau termasuk juga MLP.
Setelah melewati 2 langkah utama diatas, maka CNN akan dapat menentukan gambar apa
yang terdapat pada objek yang diberikan.

2.1. Convolution
Convolutional layer terdiri dari neuron yang tersusun sedemikian rupa sehingga
membentuk sebuah filter dengan panjang dan tinggi biasanya dalam bentuk satuan pixels.
Saat membuat convolution, maka convolution layer dalam jaringan syaraf harus memiliki
atribut berikut (wikipedia 2019):
 Input adalah tensor dengan bentuk jumlah gambar (number of image) dikali lebar
gambar (image width) dikali tinggi gambar (image height) dikali kedalaman gambar
(image depth).
 Jumlah dari convolution kernels adalah
 Lebar dan tinggi dari kernel merupakan hyper-parameters.
 Kedalaman kernel harus sama dengan kedalaman gambar.
Setiap proses convolution neuron hanya memproses data untuk bidang reseptifnya.
Meskipun fully connected feed forward neural networks dapat digunakan untuk
mempelajari fitur serta mengklasifikasikan data, namun proses ini tidak praktis diterapkan
pada arsitektur ini untuk image.

Proses Convolution
Sebagai contoh proses convolution dapat diilustrasikan sebagai gambar diatas. Pada input
pertama (gambar objek) dimasukkan pada algoritma CCN kemudian melawati tahap
convolution, pada tahap ini inputan tersebut di jadikan gambar-gambar kecil seperti pada
gambar proses convolution. Gambar kecil dari hasil ini kemudian dijadikan hasil untuk
representasi fitur, proses ini dilakukan untuk semua bagian dari inputan dengan
menggunakan filter yang sama. Dengan kata lain, setiap bagian gambar akan memiliki
faktor pengali yang sama, disebut sebagai weights sharing.

Proses convolution

Kemudian hasil dari proses diatas adalah sebuah activation map. Untuk mendapat
representasi gambar yang lebih baik, proses convolution ini diulang beberapa kali dengan
filter yang berbeda pula untuk menghasilkan activation map lain.

2.2. Pooling
Pooling layers berguna untuk mengurangi dimensi data dengan menggabungkan output
dari cluster neuron pada satu layer menjadi single neuron pada layer berikutnya.
Sebagai ilustrasi proses pooling ini mengurangi jumlah parameter yang perlu
diperhitungkan, pada objek diatas tentu tidak semua gambar diperlukan (terdapat
background), untuk menghilangkan gambar yang tidak diperlukan tersebut maka
diperlukan proses pooling.

Proses MaxPooling
Proses pooling yang biasa digunakan adalah poolingMax. Proses pooling ini menggunakan
nilai maksimum dari masing-masing sekelompok neuron pada layer sebelumnya.

2.3. Fully Connected Layer (FC)


Tahap ini adalah tahap yang sama pada MLP. Feature map yang dihasilkan dari feature
extraction layer (proses pertama pada CNN) masih berbentuk multidimensional array,
sehingga harus melakukan flatten atau reshape feature map sehingga menjadi sebuah
vector agar bisa kita gunakan sebagai input dari fully-connected layer.

3. Experiment
Tujuan dari experiment ini adalah untuk menganilisis performa dari CNN, penulis ini dalam
melakukan experiment menggunakan bahasa python yang digunakan di dua platform berbeda
supaya untuk menghemat waktu dalam me-running algoritma CNN yang telah dibuat. Platform
pertama adalah PC dan platform kedua adalah leptop asus, kedua platform ini mempunyai
spesifikasi yang berbeda.

Spesifikasi PC

Spesifikasi disini tidak mempengaruhi hasil dalam algoritma CNN, akan tetapi mempengaruhi
lamanya dalam me-running algoritma tersebut. Dalam me-running algoritma tersebut penulis
membutuhkan waktu kurang lebih sebanyak 3 hari dengan PC hidup tanpa pernah shutdown,
akan tetapi leptop selama waktu 3 hari tersebut pernah shutdown.
Spesifikasi Leptop

3.1. Dataset
Dataset yang digunakan diambil di website github dari akun Ventakesh Tata yang berupa
data image dengan total 1971 terdiri dari 1003 gambar kucing dan 968 gambar anjing.
Gambar kucing dan anjing tersebut dibagi menjadi data training dan data test dengan
jumlah masing-masing berbeda. Terdapat 2 data image dari gambar anjing dengan jenis
yang berbeda, tujuan dari adanya 2 data dari gambar anjing ini adalah untuk melihat
seberapa akurat CNN dalam menentukan gambar tersebut.

3.2. Experiment
Pada tahap ini penulis melakukan beberapa experiment dengan mencoba berbagai inputan
dan mengurangi jumlah epoch dan proses dalam epoch itu sendiri. Inputan disini adalah
data prediksi yang terdiri dari 2 gambar yang telah disebutkan diatas.

Data Prediksi
Gambar diatas dapat dilihat bahwa terdapat jenis anjing yang berbeda, yang pertama (kiri)
anjing tersebut tidak memiliki bulu yang panjang dan yang kedua (kanan) anjing tersebut
memiliki bulu yang panjang yang sangat mirip dengan kucing
Sedangkan epoch disini dalam literature disebutkan bahwa merupakan proses feature
learning (langkah pertama CNN). Pada epoch ini dilakukan proses mencocokkan antara
data training dengan data test setelah pergambar pada data test dirubah menjadi gambar-
gambar kecil (proses convolution) dan parameter digambar telah dibuang (proses pooling)
kemudian dicocokan dengan data training.

3.3. Hasil Experiment


Pada tahap ini penulis mendapatkan beberapa hasil dari experiment yang telah dilakukan,
terdapat 8 hasil experiment yang terdiri dari 2 kelompok yang berbeda.
Kelompok pertama memakai data prediksi yang berupa gambar anjing dengan jenis
berbulu panjang (sangat mirip sama kucing).
Kelompok kedua memakai data prediksi yang berupa gambar anjing dengan jenis berbulu
pendek. Setiap kelompok terdiri dari 4 hasil experiment yaitu jumlah epoch 25 dengan
jumlah proses didalamnya 8000, jumlah epoch 25 dengan jumlah proses didalamnya 4000,
jumlah epoch 10 dengan jumlah proses didalamnya 8000, dan jumlah epoch 10 dengan
jumlah proses didalamnya 4000.
Waktu dalam mendapatkan hasil untuk jumlah epoch 25 dengan jumlah proses didalamnya
8000 adalah kira-kira hampir 23 jam ketika di-run pada PC (platform 1) dan lebih dari 24
jam tapi kurang dari 26 jam pada leptop (platform 2), Waktu untuk jumlah epoch 10
dengan jumlah proses didalamnya 8000 adalah kira-kira hampir 10 jam ketika di-run pada
PC (platform 1) dan lebih dari 24 jam tapi kurang dari 11 jam pada leptop (platform 2),
sedangkan untuk Waktu pada jumlah epoch 25 dengan jumlah proses didalamnya 4000
adalah kira-kira hampir 15 jam ketika di-run pada PC (platform 1) dan tidak dicoba pada
leptop (platform 2). Berikut hasilnya.

Untuk data set anjing berbulu panjang


Epoch 25 proses 8000

Hasil epoch 25 proses 8000


Epoch 25 proses 4000

Epoch 25 proses 4000


Epoch 10 proses 8000

Epoch 10 proses 8000

Epoch 10 proses 4000

Epoch 10 proses 4000

Untuk data set anjing berbulu pendek


Epoch 25 proses 8000
Epoch 25 proses 4000

Epoch 25 proses 4000

Epoch 10 proses 8000

Epoch 10 proses 8000

Epoch 10 proses 4000

Epoch 10 proses 4000

Berdasarkan data di atas, maka dapat dilihat bahwa CNN dalam menentukan gambar pada
objek masih kurang akurat, ini dibuktikan dengan hasil pada data prediksi yang
menggunakan data set anjing berbulu panjang (mirip kucing) CNN memprediksi bahwa itu
adalah kucing. CNN memprediksi bahwa data set tersebut berupa kucing karena menurut
penulis tidak terdapatnya gambar anjing yang berjenis ini pada data training maupun data
test, oleh karena itu CNN tidak atau kurang tepat memprediksi hasilnya.
4. CNN VS MLP
Pada bagian ini penulis mencoba untuk memberikan atau membuktikan apa yang terdapat
pada literature-literature mengenai akurasi pada CNN.
Pada literature disebutkan bahwa CNN mempunyai akurasi yang jauh lebih baik daripada
MLP, oleh karena itu penulis mencoba untuk membuktikannya dengan implementasi CNN dan
MLP.
Dataset yang digunakan pada bagian ini adalah dataset mnist yang di download secara
manual melalui command from jupyter notebook melalui alamat
https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz.
Berikut tampilan screenshot dari MLP

Dapat dilihat pada gambar diatas akurasi pada MLP yang diimplementasikan pada data
mnist yang terdapat di python dengan menggunakan 10 epoch, akurasi pada data validasi lebih
baik daripada data training yang mempunyai akurasi di range 0.38 sampai 0.40

Sedangkan nilai kerugian atau loss juga masih lebih baik daripada data training (gambar
diatas) yang berada di range 1,8 sampai 0.
Sedangkan untuk CNN dapat dilihat pada gambar grafik dibawah :

Berdasarkan grafik diatas CNN pada data validasi terdapat penurunan akurasi yang terjadi
pada epoch 8 sampai 10. Akurasi pada 2 epoch terakhir berada di range 0.70 sampai 0.55,
sedangkan nilai kerugian atau value loss dari CNN (gambar dibawah) untuk data training lebih
sedikit ini terjadi pada epoch 2 sampai epoch 10 dengan nilai kerugian berada di range 1.2
sampai 0.

Berdasarkan gambar diatas dapat dilihat pula data validasi awal nya hanya memiliki sedikit
kerugian yaitu pada epoch 1 sampai 5, namun untuk epoch 5 sampai terakhir nilai kerugiannya
menjadi lebih besar daripada data training.

Kesimpulan terakhir pada bagian ini dapat dilihat pada gambar diatas, dimana nilai akurasi
dari CNN lebih tinggi daripada akurasi dari MLP.
5. Kesimpulan
CNN adalah salah satu jenis neural network yang biasa digunakan pada data image, dan
merupakan solusi untuk problem dari MLP karena dari beberapa literature menyatakan bahwa
MLP tidak dapat menentukan gambar pada objek yang terletak di pojok.
CNN dalam menjalankan prosesnya terdiri dari 2 proses besar yaitu feature learning dan
classification yang mana setiap proses ini terdapat proses untuk setiap proses besarnya yang
terdiri dari convolution-Relu, pooling flatten, fully connected dan softmax. Proses flatten dan
fully connected ini merupakan atau termasuk juga MLP.
Meskipun CNN merupakan suatu metode untuk solusi MLP dalam image processing dan
mempunyai akurasi yang jauh lebih bagus dari MLP (bagian 4. CNN VS MLP) namun disini
menurut penulis juga terdapat beberapa kekurangan dari CNN sendiri, kekurangan tersebut
diantara adalah waktu untuk me-running CNN membutuhkan waktu yang lama bahkan untuk
jumlah data training dan data test yang menurut penulis masih dengan jumlah kecil yaitu tidak
lebih dari 2000 data image serta CNN juga tidak dapat (memiliki akurasi yang jelek) dalam
menentukan gambar apa dalam objek ketika gambar tersebut ketika memiliki ciri-ciri
yang hampir sama dengan lainnya, ini dibuktikan ketika data prediksi memiliki ciri-ciri yang
hampir sama dengan data training dan data test terhadap kucing.

Reference
 Darmadi, Richard. A Medium Corporation (US). april 4, 2018. https://medium.com/nodeflux/mengenal-
convolutional-neural-network-8bd207ad4a8d (accessed Mei 20, 2019).
 Kur' Hornik, Maxwell Stinchcombe, dan Halber White. "Multilayer Feedforward Network Are Universal
Approximators." 2 (1989).
 wikipedia. mei 10, 2019. https://en.wikipedia.org/wiki/Convolutional_neural_network (accessed mei 20, 2019).

Anda mungkin juga menyukai