Deep Learning: Convolutional Neural Networks (aplikasi)

Deep Learning: Convolutional Neural Networks (aplikasi)

Catatan penting : Jika pembaca benar-benar awam tentang apa itu Python, silakan klik artikel saya ini. Jika pembaca awam tentang R, silakan klik artikel ini.

Jika pembaca belum mengerti konsep besarnya deep learning / neural networks, alangkah baiknya baca dulu artikel saya yang membahas tentang konsepnya di link ini.

Dalam materi ini, kita akan membahas tentang aplikasi CNN (convolutional neural networks). Jika pembaca belum tahu teori tentang CNN ada baiknya baca artikel saya yang membahas CNN di link ini.

Jika pembaca ingin menjalankan CNN dengan menggunakan GPU, silakan baca tutorialnya di artikel saya melalui link ini.


Sebelum kita praktek melakukan CNN dengan python, silakan download dulu datasetnya. Perlu diperhatikan bahwa ukuran datasetnya lumayan besar (kurang lebih 200-300 MB), sehingga saya tidak menguploadnya di website saya melainkan di GoogleDrive dan dapat didownload di link ini.

Kali ini kita akan menyelesaikan permasalahan klasifikasi gambar menggunakan CNN. Kita akan melatih neural networks (NN) kita untuk bisa membedakan mana gambar kucing (cats) dan mana gambar anjing (dogs).

Tentu saja untuk melatih NN, kita sudah siapkan ratusan gambar anjing dan kucing. Kita bagi data ke dalam 2 bagian yaitu training set (untuk melatih NN) dan test set (untuk mengujinya).

Beberapa contoh gambar kucing dan anjing yang kita gunakan di folder dataset tampak sebagai berikut:

Contoh gambar kucing dan anjing di dataset

Setelah mendownload datasetnya di link yang sudah saya berikan di atas, pembaca bisa melihat saya memisahkannya ke dalam 2 folder (training_set dan test_set). Jika pembaca juga ingin menggunakan CNN untuk melakukan teknik klasifikasi gambar, maka cukup buat 2 folder seperti yang saya lakukan.

Dataset yang kita miliki semuanya adalah gambar dengan format jpg. Kita memiliki 4000 gambar kucing dan 4000 gambar anjing untuk training set, dan 1000 gambar kucing dan 1000 gambar anjing untuk test set. Jadi secara ringkas kita memiiki 8000 data untuk training set dan 2000 data untuk test set (komposisi 80:20). Tentunya untuk meningkatkan performanya, semakin banyak gambar untuk di jadikan dataset maka semakin baik.

Berbeda dengan pembelajaran machine learning di bab-bab sebelumnya di mana format datanya biasanya adalah csv dengan struktur berupa tabel, struktur data untuk CNN kali ini sedikit berbeda. Karena datasetnya berupa gambar, maka variabel independen dan dependennya tidak berbentuk kolom dalam tabel.

Untuk bisa melakukan klasifikasi maka semua gambar harus dimasukkan ke dalam folder yang berbeda yaitu folder training_set dan folder test_set. Kemudian di masing-masing folder tersebut kita buat lagi folder cats dan folder dogs. Dengan demikian, ketika algoritma CNN membuka folder training_set dan di dalamnya ada folder cats dan folder dogs, maka ia tahu bahwa ini adalah dependen variabelnya. Dependen variabel di sini yang dimaksud adalah jawaban yang sesungguhnya apakah sebuah gambar masuk ke kategori anjing atau kucing, dengan cukup melihat nama filenya saja. Lalu apa variabel independennya? Variabel independennya adalah pixel yang ada di setiap gambar.

Kemudian nama file di dalam folder cats dan dogs harus diurutkan, misal dalam folder cats kita beri nama file nya menjadi cat1, cat2, dst. Begitu pula untuk dogs menjadi dog1, dog2, dst. Penomoran di belakang namanya (cat1 = cat+1) adalah untuk membedakan file 1 dengan yang lainnya dalam 1 folder.

Kemudian dari penamaan nama itu, kita masukkan ke sebuah algoritma sehingga algoritma ini bisa mengekstrak nama file yang kemudian nanti bisa menggolongkan apakah file ini masuk ke kategori cats atau kategori dogs. Kita akan melakukan semuanya dengan menggunakan library Keras di python.

Baik sekarang mari kita belajar bersama teknik CNN menggunakan bahasa python.

Untuk melanjutkan membaca silakan klik lanjut ke halaman berikutnya di bawah ini:

Pages: 1 2 3

Subscribe
Notify of
guest

55 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
M. Raihan R.A
M. Raihan R.A
5 years ago

Padat dan jelas, sungguh mencerahkan sekali, terimakasih pak. Website ini merupakan website yang berisi penjelasan mengenai AI, ML, DL dalam bahasa indonesia yang paling mudah dicerna dan dipahami. Jadi semangat melanjutkan belajarnya, hehe.

Ahmad Kurniawan
Ahmad Kurniawan
Reply to  M. Raihan R.A
3 years ago

Saya sepakat Mas Raihan.
Beberapa website sy buka untuk memahapi konsep mesin learning.. Tapi website yang bisa memberi saya pemahaman lebih baik, khususnya terkait istilah-istilah dalam ML dan DL..

Terimakasih Mas MB Herlambang atas sharing ilmu nya. Semoga berkah

bramasta vikana
bramasta vikana
5 years ago

selamat siang, website ini sangat membantu saya memahami ANN dan saya ingin mencoba melanjutkanya ke CNN namun ada yang saya binung tuk proses import image nya bagaimana caranya ya dan apakah ada github nya? terimakasihh

bramasta vikana
bramasta vikana
5 years ago

pertanyaan saya bgaiamankah cara cnn nya melakukan test pada halaman ke 3 tanpa menggunakan weight atau model yg telah di training? apakah pada code result = MesinKlasifikasi.predict(test_image) weoght atau model yang digunakan tadi sudah tersimpan? atau pada halam ke 3 ini menjadi 1 dengan training code? terimakasih

bramasta vikana
bramasta vikana
5 years ago

selamat malam ,terimakasih telah menjawab pertanyaan saya sebelumnya saya ada pertanyaan pada halan 2 terdapat hasil training dengan val_los >1.0 dan dan training loss 1.0 dikatakan overfitt? terimakasih

bramasta vikana
bramasta vikana
Reply to  MB Herlambang
5 years ago

terimakasihh , mohon maaf pertanyaan saya ambigu maksd saya bukankah val los >1.0 dan loss < 1.0 merupakan overfit, dengan jawaban yg sudah di berikan dapat saya terima terimakasih sekali lagi

Hery
Hery
4 years ago

Untuk arsitektur CNN seperti ini jika diimplementasikan 10 Cross Fold Validation caranya gimana ya pak?

Roni
Roni
4 years ago

Assalamuallaikum warahmatulahi wabarokatuh, selamat siang, saya mau bertanya, terkait dataset, ketika mencoba membuat dataset untuk klasifikasi lebih dari 2 Class misal kucing, anjing, kambing, atau bahkan banyak class, bagaimana cara mengatur labeling dan foldernya ?
terimakasih

Fachim
Fachim
Reply to  MB Herlambang
1 year ago

asalamualaikum pak, kalau softmax untuk identifikasi 2 kelas boleh gak pak? saya pakai sigmoid tidak bisa melakukan proses classification pak karena error mulu

Imam
Imam
4 years ago

Assalamu’alaikum, Pak saya ingin bertanya, kalau kita misalnya ingin membuat aplikasi face recognition dengan CNN yg terdiri dari 20 class (20 orang berbeda) lalu ketika kita ingin prediksi nya dengan webcam, Bagaimana cara kita membuat / mendefinisikan bahwa orang yang tidak termasuk kedalam 20 class atau tidak ada di dalam dataset tersebut di prediksi sebagai “UNKNOWN”? dan berapa jumlah neuron yg seharusnya kita masukkan di Dense terakhir pada output layer pak?, Terima Kasih.

Imam
Imam
Reply to  MB Herlambang
4 years ago

Jd Pak, Kalau misalnya mau buat face recognition, jenis data yg dimasukkan di input_shape itu lebih cocok yg rgb (3 channel) atau grayscale (1 channel)? mohon pencerahannya, terima kasih pak

ImamJ
ImamJ
4 years ago

Pak saya ingin bertanya, kalo misalanya ingin buat face recognition 30 kelas dengan data keseluruhan 50 rb data (train dan validasi) serta data tersebut hasil augmentasi, apakah data dgn jumlah segitu sudah cukup mas? mohon penjelasannya pak terima kasih

ImamJ
ImamJ
Reply to  MB Herlambang
4 years ago

Baik pak, oiya pak kalau misalnya data sudah diaugmentasi secara manual, apakah perlu diaugmentasi kembali di dalam program ketika ingin training data, seperti pada halaman ini yaitu dgn ImageDataGenerator (rescale = 1./255, zoom_range = 0, 2, Horizontal_flip=True… dst) apakah ada pengaruhnya untuk data yg sudah diaugmentasi secara manua pak?

ImamJ
ImamJ
Reply to  MB Herlambang
4 years ago

Oke baik, pak noted, oiya pak kalo misalnya training data tapi hasilnya kadang2 yg validation accuracy lebih tinggi dari pada training accuracy misal 98 % : 96 % atau kadang 99 % : 100 %, itu kenapa bisa begitu ya kira2pak? apakah itu tidak masalah? terima kasih pak

Imam
Imam
4 years ago

Assalamu’alaikum pak, saya ingin bertanya, gimana ya caranya untuk mengatasi validation loss yg naik turun dan beda jauh jaraknya sama training loss? padahal validation accuracy nya sudah cukup bagus dan mendekati training accuracy nya. uda byak eksperimen dilakukan tanpa dan dgn regularization seperti (dropout, L2) dan data augmentation serta sudah juga mencoba menambah atau mengurangi layer convolusi dan pooling, tapi validation loss nya tetep aja naik turun, jumlah data yg saya gunakan 50 ribu. Tampilan grafiknya seperti dibawah ini

2.1.JPG
Imam
Imam
Reply to  MB Herlambang
4 years ago

data saya data image pak, saya sedang membuat face recognition dgn jumlah class 30, dan dgn split data, train (75 %) = per class 1200 data, val (25 %) = perclass 400 data, uda dicoba manual/offline augmentasi juga pak dgn jumlah data jdi 96 rb, tapi val loss nya msh ga stabil (naik turun) padahal val accuracy ny sudah cukup bagus. Model saya seperti pada gambar dgn 3 hidden layer setelah flatten ().

model.JPG
Budi
Budi
4 years ago

Assalamu’alaikum, Terimakasih penjelasannya. Saya ingin bertanya, apakah CNN dapat diaplikasikan untuk melakukan prediksi data spasial / data grid?

Misalkan saya memiliki series data curah hujan pengamatan dalam bentuk grid, suhu dan kelembapan udara dalam bentuk grid [X,Y,Z(curah hujan, suhu, kelembapan) dan T(waktu)]. Kemudian saya ingin memprediksi curah hujan tersebut menggunakan data suhu dan kelembapan sebagai prediktor. Apakah ini bisa dilakukan dengan CNN?

Budi
Budi
Reply to  MB Herlambang
4 years ago

Terimakasih pak atas responnya.

Selain menggunakan pendekatan regresi, apakah pendekatan RNN juga dapat diaplikasikan pada kasus prediksi seperti di atas?

Anggari
Anggari
4 years ago

Terima kasih utk penjelasan mengenai deep learning. Saya mau bertanya di bagian ‘dataset/training_set’ apakah folder dataset tsb harus 1 folder dgn aplikasi deeplearning yg dibuat?

fahm
fahm
4 years ago

trimakasihbanyak penjelasanya mencerahkan bangut bagi kami para pemula.
Apakah ada email atau apapun yang bisa saya hubungi untuk diskusi?

Rezdian Yursandi
Rezdian Yursandi
4 years ago

Apakah jika val_loss naik berarti model tidak baik? bagaimana menurunkan val_loss?

alya
alya
4 years ago

assalamualaikum mohon pencerahanya saya ada tugas akhir perkuliyahan tentang menghitung kerumunan orang menggunakan CNN minta tolong saranya pak saya kebingungan bagaimana cara saya menghitungnya sedangkan setau saya CNN cuma buat klasifikasi untuk deteksi objek saja.. mohon pencerahanya dan trimakasih banyak.

alya
alya
Reply to  MB Herlambang
4 years ago

trimakasih banyak saranya pak akan tetapi saya masih bingung untuk memisahkan background dengan objek orangnya bagaimana pak? misal dalam sebuah pusat perbelanjaan, kan banyak objek bukan hanya orang terus untuk memisahkan objek-objek tersebut bagaimana pak? saya masih belum faham mohon sangat pencerahanya.
terimakasih banyak

idabagusindra
idabagusindra
3 years ago

Kalau untuk deteksi suara seperti membedakan suara alat musik, apakah hampir mirip-mirip ya untuk code nya ? Apakah cuman berbeda di data set nya saja ? Terimakasih

Clarisa
Clarisa
3 years ago

Pak mau tanya bagian yang terakhir ini semisal kita cma gambar untuk test nya cma 3 apa bisa?

Clarisa
Clarisa
Reply to  MB Herlambang
3 years ago

Apa menambahkan epoch tanpa memperbaiki arsitektur cnn dapat menghindarkan terjadinya overfitting?

Kemudian training itu dikatakanan optimal
apabila ?

Last edited 3 years ago by Clarisa
Ahmad Kurniawan
Ahmad Kurniawan
Reply to  MB Herlambang
3 years ago

Permisi pak izin bertanya..

Menurut bapak, rasio yang baik utk pemabagian dataset yang terbilang sedikit hanya sekitar 300 citra seperti apa ya pak?

Saya membagi dataset sebanyak 80% yaitu (training dan validasi) masing-masing adalah 210 citra dan 30 citra (akan sy gunakan utk proses training/pembuatan model classifier)

kemudian 20% untuk testing (60 citra) diuji melalui GUI mobile (andorid)

apakah rasio diatas cukup baik pak? atau sebaiknya sy mengurangi jumlah data testing, dan menambahkannya menjadi data (training/validasi) agar hasilnya semakin baik?

Mohon jawaban masukkannya pak. Terimakasih..

Ahmad Kurniawan
Ahmad Kurniawan
Reply to  MB Herlambang
3 years ago

Oh bgitu ya pak.. 1 lagi pak mohon pencerahannya.. Kasus yang sedang sy alami adalah dataset yang sangat sedikit. yaitu citra daun cabai yang terserang hama Saya melakukan proses pengambilan data (pemotretan langsung) dgn beberapa parameter (jarak antara objek dan kamera, intesitas cahaya dll) Namun, berhubung objek yang sy kumpulkan sangat sedikit, sy melakukan augmentasi secara manual pada saat pemotretan seperti merotasi objek daun tsb atau mengacak sudut pemotretan yg sy lakukan.. misalnya sy memiliki 15 citra daun per kelas, setiap daun sy lakukan 10 kali parubahan sudut saat pemotretan. dan total data yg saya dapat kan 150 citra per… Read more »

Last edited 3 years ago by Ahmad Kurniawan
prazw
3 years ago

bintang 5 artikelnya

Arya
Arya
3 years ago

Permisi Pak,link datasetnya tidak bisa di akses pak mohon solusinya

Hadi Winata
Hadi Winata
1 year ago

Luar biasa pak. sungguh bermanfaat bagi saya yg baru memulai :).

anggit
anggit
1 year ago

kenapa setelah saya coba running, terdapat eror di line 38 ya pak?