Shafrila Nuratmi Pratiwi
Mengarah dengan seringnya terjadi permasalahan dan Banyak yang tidak menyadari bahwa dalam perkumpulan monyet tidak hanya terdapat 1 jenis monyet saja, mungkin beberapa diantaranya berbeda namun tidak begitu terlihat. maka pada proyek ini akan dilakukan klasifikasi gambar / foto untuk monyet mantled howler dan monyet patas.
Convolutional Neural Network
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. CNN adalah sebuah teknik yang terinspirasi dari cara mamalia — manusia, menghasilkan persepsi visual.
Secara garis besar Convolutional Neural Network (CNN) tidak jauh beda dengan neural network biasanya. 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).
Tentang Dataset
Dataset yang digunakan adalah bersumber dari kaggle dengan spesifikasi data terdapat 76 data monyet. Data yang digunakan adalah data monkey mantled howler dan patas monkey.
Dataset
Hal pertama yg akan di lakukan adalah Membuat library untuk melakukan Operating System libraries, memberikan access ke file system dan zipfile library untuk unzip datanya. dalam program ini kita kita menggunakan OS library.
Isi dari .zip di extract ke directory /tmp/train, dimana kita akan mengambil data yang subfolder dengan nama mantled howler dan patas monkey, disini saya akan menggunakan ImageGenerator class untuk membuat secara otomatis dataset train dari directory ini dengan menggunakan subdirectory untuk setiap kelasnya. Menentukan setiap subdirectory :
Konfigurasi matplot parameters
Mencari informasi berapa total images dari monyet berjeniskan mantled howler dan patas monkey di directory
Data Processing
pada projek ini akan di gunakan keras.prepocessing.image.ImageDataGeneratorclass untuk membuat train and validation dataset dan normalize data. karena data akan diproses oleh CNN untuk improve performance secara keseluruhan maka kmai akan menggunakan rescale parameter untuk scale our image pixel values dari [0,255] ke [0,1]
Memulai menentukan model
Menambahkan Flatten layer yang akan mem-flatten input image, dimana akan dilanjutkan ke next layer, Dense layer, atau fully-connected layer, dengan 128 hidden units. Pada tujuan akhirnya adalah untuk melakukan binary classification, Disetiap generator, kita menentukan source directory dari images, classes, input image size, batch size (seberapa banyak images yang akan diproses), dan class mode. final layer akan menggunakan sigmoid, jadi output dari neural network akan menjadi single scalar antara 0 and 1, dengan melakukan encoding probability pada image saat ini dengan class (class 0 menjadi mantled howler dan class 1 menjadi patas monkey).
Akan menggunakan binary_crossentropy sebagai loss untuk mengkonfugirasi specifications untuk model training.Kemudian menggunakan Adam optimizer sebagai sensible optimization algorithm, lalu menambahkan accuracy ke metrics jadi model akan memonitor accuracy saat melakukan training.
Training
Pada proses training bisanya dilakukan dengan 15 epoch, tapi saya menggunakan epochs sebanyak 30 untuk memaksimalkan hasil accuracy dan biasanya validation accuracy tidak pernah melebihi training accuracy, dimana ini adalah sesuatu yang baik. Model tidak akan bekerja lebih baik pada data images yang belum terlihat dibandingkan images yang telah terlihat.
Akurasi, Kurva ROC, dan AUC
Evaluasi accuracy model
Kalkulasi ROC curve dan lakukan plotting
dengan melakukan prediction di validation set. jadi ketika menggunakan generators untuk membuat predictions, kita membuat validation_generator dan kemudian reset the generator.
Untuk membuat ROC curve dan AUC, kita harus menghitung false-positive rate dan true-positive rate yang gunanya untuk menghitung kinerja algoritma yang digunakan untuk pengklasifikasian.
sesuai dengan output yang dihasilkan yaitu 0,97 jadi kurva ROC menunjukan bahwa algoritma yang digunakan model baik. Demikian pula, AUC (area di bawah kurva), seperti yang ditunjukkan pada output di atas, mengukur seberapa banyak model untuk mampu membedakan antara dua kelas, Semakin tinggi AUC, semakin baik model kami dalam klasifikasi.
Making prediction
Melakukan pengujian terhadap model dengan mengupload salah satu jenis monkey dan biarkan model yang mengklasifikasikan dengan sendirinya, jika benar maka dengan begitu model dapat berjalan dengan baik.
Daftar pustaka
https://medium.com/@16611110/apa-itu-convolutional-neural-network-836f70b193a4