Jaringan Syaraf Tiruan Untuk Pengenalan Pola
Berikut ini merupakan contoh aplikasi pemrograman matlab untuk mengklasifikasi bentuk suatu objek dalam citra digital menggunakan algoritma jaringan syaraf tiruan propagasi balik (backpropagation neural network).
Pada contoh ini dilakukan pengklasifikasian terhadap bentuk segi-3, segi-4, dan segi-5. Ciri yang digunakan untuk membedakan ketiga jenis bentuk tersebut adalah metric dan eccentricity.
Metric merupakan nilai perbandingan antara luas dan keliling objek. Sedangkan eccentricity merupakan nilai perbandingan antara jarak foci ellips minor dengan foci ellips mayor suatu objek. (Materi mengenai ekstraksi ciri lebih lanjut dapat dilihat pada laman berikut ini: Ekstraksi Ciri Citra).
Langkah-langkah pemrograman matlab untuk mengklasifikasi bentuk suatu objek dalam citra digital menggunakan matlab adalah sebagai berikut:
1. Menyiapkan data latih untuk proses pelatihan (training). Pada proses ini digunakan 45 citra data latih yang terdiri dari 15 citra segi-3, 15 citra segi-4, dan 15 citra segi-5.
2. Menyiapkan data uji untuk proses pengujian (testing). Pada proses ini digunakan 15 citra data uji yang terdiri dari 5 citra segi-3, 5 citra segi-4, dan 5 citra segi-5.
3. Mengekstrak ciri masing-masing bentuk berdasarkan parameter eccentricity dan metric.
clc;clear;close all; image_folder = 'Pattern Recognition\data latih'; filenames = dir(fullfile(image_folder, '*.gif')); total_images = numel(filenames); for n = 1:total_images full_name= fullfile(image_folder, filenames(n).name); our_images = logical(imread(full_name)); our_images = bwconvhull(our_images,'objects'); stats = regionprops(our_images,'Area','Perimeter','Eccentricity'); area(n) = stats.Area; perimeter(n) = stats.Perimeter; metric(n) = 4*pi*area(n)/(perimeter(n)^2); eccentricity(n) = stats.Eccentricity; input = [metric;eccentricity]; target = zeros(1,45); target(:,1:15) = 3; target(:,16:30) = 4; target(:,31:45) = 5; end
4. Nilai metric dan eccentricity yang telah diekstrak kemudian dijadikan sebagai data masukan pada jaringan syaraf tiruan backpropagation. Sedangkan pada data target digunakan nilai 3 untuk kelas segi-3, nilai 4 untuk kelas segi-4, dan nilai 5 untuk kelas segi-5. Langkah selanjutnya yaitu membangun jaringan dengan arsitektur 2-10-5-1 yang artinya memiliki 2 data masukan yaitu metric dan eccentricity, memiliki 2 layer tersembunyi (hidden layer) di mana pada hidden layer pertama berisi 10 neuron dan pada hidden layer kedua berisi 5 neuron. Dan memiliki 1 data keluaran yaitu jenis bentuk (segi-3, segi-4, atau segi-5).
net = newff(input,target,[10 5],{'logsig','logsig'},'trainlm'); net.trainParam.epochs = 100; net.trainParam.goal = 1e-5; net = train(net,input,target); output = round(sim(net,input)) save net.mat net
5. Sehingga dihasilkan tampilan pelatihan jaringan seperti pada gambar berikut:
sedangkan nilai keluaran pada proses pelatihan adalah
Perbandingan antara nilai keluaran JST pada proses pelatihan dengan data target latih ditunjukkan pada tabel di berikut:
Pada tabel di atas, terdapat dua data yang diklasifikasikan secara salah (tidak sesuai dengan target) yaitu data ke-21 dan data ke-28. Sehingga akurasi yang dihasilkan JST pada proses pelatihan adalah (43/45) x 100% = 95,56%. Nilai akurasi tersebut menunjukkan bahwa JST cukup baik dalam mengklasifikasikan pola bentuk objek dari citra yang diberikan.
6. Sedangkan pemrograman untuk proses pengujian adalah:
clc;clear;close all; image_folder = 'Pattern Recognition\data uji'; filenames = dir(fullfile(image_folder, '*.gif')); total_images = numel(filenames); for n = 1:total_images full_name= fullfile(image_folder, filenames(n).name); our_images = logical(imread(full_name)); our_images = bwconvhull(our_images,'objects'); stats = regionprops(our_images,'Area','Perimeter','Eccentricity'); area(n) = stats.Area; perimeter(n) = stats.Perimeter; metric(n) = (4*pi*area(n))./(perimeter(n).^2); eccentricity(n) = stats.Eccentricity; input = [metric;eccentricity]; end load net output = round(sim(net,input))
7. Nilai keluaran yang dihasilkan pada proses pengujian adalah:
Perbandingan antara nilai kelaran JST pada proses pengujian dengan data target ditunjukkan pada tabel di bawah ini
Berdasarkan data pada tabel tersebut terdapat satu data yang diklasifikasikan ke dalam kelas yang salah (tidak sesuai dengan target) yaitu data ke-11. Sehingga akurasi yang dihasilkan JST dalam proses pengujian adalah (14/15) x 100% = 93,33%. Dengan demikian, dapat dikatakan bahwa JST dapat mengklasifikasikan pola bentuk objek dalam citra dengan baik.
File source code lengkap beserta citra untuk mengklasifikasikan pola bentuk suatu objek dalam citra digital dapat diperoleh melalui halaman berikut ini: Source Code
Materi mengenai jaringan syaraf tiruan untuk mengidentifikasi wajah dapat dilihat pada laman berikut: Identifikasi Wajah menggunakan Algoritma Jaringan Syaraf Tiruan
Sedangkan materi mengenai definisi dan konsep jaringan syaraf tiruan dapat dilihat pada: Jaringan Syaraf Tiruan
Posted on July 9, 2016, in Data mining, Pengenalan Matlab, Pengenalan Pola, Pengolahan Citra and tagged aplikasi jaringan syaraf tiruan menggunakan matlab, aplikasi pengolahan citra dengan matlab, aplikasi pengolahan citra digital menggunakan matlab, aplikasi pengolahan citra menggunakan matlab, citra adalah, citra biner, citra digital adalah, computer vision, contoh program matlab jaringan syaraf tiruan, contoh program matlab pengolahan citra, contoh program matlab sederhana, contoh program pengolahan citra digital menggunakan matlab, data mining menggunakan matlab, ekstraksi ciri pola bentuk citra, ekstraksi fitur citra, jaringan syaraf tiruan back propagation, jaringan syaraf tiruan backpropagation matlab, jaringan syaraf tiruan matlab, jaringan syaraf tiruan menggunakan matlab, jaringan syaraf tiruan propagasi balik menggunakan matlab, jaringan syaraf tiruan sederhana, jaringan syaraf tiruan untuk klasifikasi, jaringan syaraf tiruan untuk mengklasifikasi pola bentuk, pemrograman matlab jaringan syaraf tiruan sederhana, pemrograman matlab untuk jaringan syaraf tiruan backpropagation, Pengenalan Pola, pengenalan pola bentuk, pengolahan citra, Pengolahan Citra Digital, pengolahan citra digital dan aplikasinya menggunakan matlab, pengolahan citra digital dengan matlab, pengolahan citra digital menggunakan matlab, segmentasi citra matlab, sistem visi komputer, source code matlab pengolahan citra, tutorial matlab untuk pengolahan citra. Bookmark the permalink. 57 Comments.
selamat siang mas adi, sebelumnya mau terimakasih dulu buat artikelnya yang bagus banget ini hehehe membantu banget. owh ya mas mau tanya bagaimana cara saya mendapatkan nntraintool yang mas adi gunakan ini? matlab saya versi R2011a apakah bisa memakai tool tersebut? terimakasih jawabannya
Pake matlab r2011a bisa mas
Mas adi, kalau berkenan boleh bantu thesis saya untuk neural network gak ya?
Kalau berkenan, boleh hubungi saya di 08122199588 gak ya? bisa di whatsapp koq
atau LINE di Maulana Senjaya… terimakasih banget ya gan
saya gak berani minta kontak agan disini, barangkali private hehehehe
semoga saya bisa mas 🙂
boleh minta dataset training nya ga mas?
trimakasih..
Source code dan data pada materi di atas dapat diperoleh pada halaman berikut ini
https://pemrogramanmatlab.com/source-code-gui-matlab/
kalo saya coba2 sendiri hasil nya kok kadang bagus kadang engga gimana mas? maaf nubie.. wkwk
Dalam koding tsb tdk dilakukan proses inisialisasi nilai bobot awal
Secara default nilai bobot awal diberikan secara acak shg setiap kali dirun hasilnya berbeda
Agar diperoleh hasil yg sama, maka harus dilakukan proses inisialisasi bobot awal
Cara utk menginisialisasi tsb dapat dilihat pada laman berikut
https://pemrogramanmatlab.com/2015/08/24/jaringan-syaraf-tiruan-untuk-identifikasi-wajah/
mas, boleh request tutorial buat prediksi JST menggunakan GUI gak? Jadi input data prediksi nya pake interface GUI. gak perlu pake command line lg. ditunggu ya mas 🙂
Sistem prediksi menggunakan GUI merupakan penelitian saya yg sdh dipublikasikan sehingga mohon maaf belum bisa saya upload
Mas adi, kalau ingin melakukan deteksi seragam personel militer, kirakira metode yang pas apa ? sebelum nya saya udah mencoba dengan deteksi tepi dan deteksi hue color hasil nya kurang bagus karena ada beberapa garis tepi yang tidak muncul dan cenderung abstrak. Sementara menggunakan hue color penyebaran nilai dalam histogram sangat bergantung intensitas cahaya pada saat pengambilan gambar.
Proses tersebut bisa dilakukan dengan metode sebagai berikut:
Citra rgb dikonversi menjadi citra grayscale. Kemudian dilakukan contrast adjustment terhadap citra grayscale agar pencahayaan tidak mempengaruhi proses pengenalan. Selanjutnya dilakukan proses segmentasi dengan algoritma k-means sehingga diperoleh corak dari masing2 seragam. Setelah itu dilakukan ekstraksi ciri citra berdasarkan analisis tekstur, bisa dilakukan dengan ekstraksi ciri orde satu ataupun dua. Langkah terakhir, ciri yang diekstrak digunakan sebagai masukan dalam algoritma klasifikasi. Proses klasifikasi di antaranya bisa menggunakan algoritma jaringan syaraf tiruan, multi svm, dan anfis
Pengenalan polanya menggunakan bentuk (luas,keliling, metric, dll) berarti mas ?
Terima kasih mas adi, sukses terus
Utk kasus tersebut, pola tekstur bisa dikombinasikan dg pola bentuk misalnya eccentricity dan metric
mas adi di jalankan di matlab 2010b kok gak bisa ya? maf newbie
code di atas dapat dijalankan minimal menggunakan matlab r2014b
Mas adi, kalau berkenan boleh bantu thesis saya dengan judul Temu kembali citra batik tidak ya?
Kalau berkenan, Bisa hubungi saya di 08157986629 ? bisa di whatsapp koq atau
email saya : yumarlin@janabadra.ac.id
saya mengucapkan banyak terima kasih, sebelumnya
atau jika tidak keberatan saya di WA nomor Mas Adi … nanti saya yang akan menghubungi
terima kasih
Assalamualaikum. Apakah output dari program ini selalu berubah setiap melakukan run pada program latih yah?
Waalaikumsalam
Dalam koding tsb tdk dilakukan proses inisialisasi nilai bobot awal
Secara default nilai bobot awal diberikan secara acak shg setiap kali dirun hasilnya berbeda
Agar diperoleh hasil yg sama, maka harus dilakukan proses inisialisasi bobot awal
Cara utk menginisialisasi tsb dapat dilihat pada laman berikut
https://pemrogramanmatlab.com/2015/08/24/jaringan-syaraf-tiruan-untuk-identifikasi-wajah/
mas, mau tanya apakah JST BP bisa digunakan di GLCM ordo 2? karena sudah saya coba menunjukan hasil error
terima kasih
Bisa anton
Jst propagasi balik dapat menggunakan nilai masukan berupa glcm orde 2
Bisa anton periksa kembali pengkodingannya
Akurasi kenapa sering berubah ubah ya ?
untuk data akurasi pelatihan , ketika di run awalnya > 80
run lagi jadi > 90
run lagi jadi > 60
Akurasi pelatiha kenapa sering berubah ubah ya?
awalnya >80
run lagi > 90
run lagi > 60
agar akurasi pelatihan tidak berubah-ubah, maka harus dilakukan inisialisasi bobot awal terlebih dahulu
Mas kalau saya run kenapa ada error “Inputs and targets have different numbers of samples” ya di training nya? Maaf nubi
koding pada materi di atas dapat dijalankan menggunakan matlab r2015b
Mas, mau tanya., ada beberapa parameter d bpnn, spt jumlah neuron, learning rate, dan momentum., pengaruh mereka dlm akurasi jaringan itu bagaimana ya.? Dan mengapa dapat mempengaruhi hasil akurasi.?
Terimakasih
parameter tersebut di atas merupakan parameter yang digunakan saat perhitungan nilai output dalam perambatan maju maupun perambatan mundur pada jaringan syaraf tiruan
Mas adi maap nih saya mau tanya lagi. Source code yang ini belom ada GUInya ya? percobaannya masih menggunakan bilangan acak ya? Kalo misalnya ini sudah ada GUInya bagaimana cara nge-runnya?
belum ada friska
terima kasih mas sudah sharing ilmunya, sebelumnya maaf mas….
ini di run kok nggak bisa ya? cara mengeluarkan nntraintool gmana?
Sama sama sarahmaulidaok
Source code dan data pada materi di atas dapat diperoleh pada halaman berikut ini
https://pemrogramanmatlab.com/source-code-gui-matlab/
Bisa dilakukan inisialisasi bobot awal terlebih dahulu agar hasil akurasi tidak berubah-ubah
Assalamu’alaikum wr. wb.
Bang saya sekarang sedang mengerjakan Tugas Akhir saya tentang Optical Character Recognition yaitu mengkonversikan isi dokumen (hardcopy) kedalam bentuk text digital seperti .doc atau .txt (softcopy). Jadi di jurnal yang saya baca ada dikatakan tentang data training dan data testing.
Pertanyaannya, kan objek di dalam dokumen tersebut berupa text/tulisan, jadi untuk membuat data trainingnya itu gimana ya bang, apa harus saya crop satu-persatu setiap huruf yang ada di dalam dokumen (objek yang diteliti) tersebut secara manual kemudian disimpan kedalam suatu folder secara manual juga, atau lewat aplikasi yang kita bangun tersebut secara otomatis ?
saya bingung sekali mengenai Tugas Akhir saya ini bang. Tolong dibalas ya bang );;
Waalaikumsalam
bisa dipilih salah satu, tiar
bisa dicrop satu-persatu setiap huruf yang ada di dalam dokumen (objek yang diteliti) tersebut secara manual kemudian disimpan kedalam suatu folder secara manual juga
atau bisa juga melalui aplikasi yang kita bangun secara otomatis
bang mau nanya, misalkan setelah proses pelatihan didapat jaringan optimal pada iterasi ke 2000. nah untuk proses pengujian dilihat dari sistemnya apakah data uji akan melakukan proses 2000 iterasi tersebut atau langsung menggunakan nilai bobot dan bias pada iterasi terakhir? mohon pencerahannya terima kasih.
bobot yang digunakan adalah bobot pada iterasi terakhir
Boleh g dberikan contoh penerapan k fold cross val untuk backpropagation?
Semoga ke depan terdapat materi mengenai penerapan k fold cross val untuk backpropagation
assalamualaikum, maaf kak numpang nanya. punya contoh source code pengenalan image daun(yg tiap daun menggunakan 2 sisi) menggunakan backpro ?
Waalaikumsalam materi mengenai pengenalan daun bisa dilihat pada halaman berikut ini
https://pemrogramanmatlab.com/2016/10/24/jaringan-syaraf-tiruan-untuk-klasifikasi-citra-daun/
assalamualaikum, maaf kak numpang bertanya. untuk pengenalan pola huruf menggunakan backpro apakah punya source code nya? soalnya hasil presentase saya kecil
Waalaikumsalam
Mudah mudahan ke depan terdapat source code untuk pengenalan pola huruf menggunakan algoritma jaringan syaraf tiruan backpropagation
Aslm. Izin bertanya KK, ini fungsi pelatihannya pakai trainlm(lavenberg marquadt) kenapa menggunakan itu kk? Dan apakah algoritma backpropagation dilanjutkan atay cara kerja di trainlm itu bagaimana KK? Terima kasih
Waalaikumsalam
Untuk fungsi pelatihan tidak harus menggunakan trainlm, bisa dicoba menggunakan fungsi pelatihan yg lain
Aslm KK, trainlm(lavenber marquardt) ini algoritmanya sama dengan backpropagation KK?
Waalaikumsalam, Levenberg-Marquardt merupakan fungsi pelatihan dalam jaringan syaraf tiruan backpropagation, sedangkan backpropagation merupakan algoritma jaringan syaraf tiruannya
Assalamu’ilaikum mas adi , izin bertanya. Untuk perhitungan manual nya apakah seperti perhitungan manual biasa di JST , berhubung target output nya 1,2,3,4,5 , apakah nanti nya di perhitungan manual nya hasil nya juga 1,2,3,4,5 atau sedikit berbeda ?
Waalaikumsalam
Untuk perhitungan manual sama saja
Bismillah, assalamu alaikum, saya ingin bertanya mengenai penjelasan untuk validation checks ini fungsinya untuk apa dan kanapa jika tercapai misalnya yg ditetapkan 6 maka pelatihan terhenti? Terima kasih
mau tanya iku dari atas sudang lengkap beserta scriptnya?
dan apakah tinggal copas ke dalam matlab lalu jalan kan?
Source code lengkap beserta data bisa dibeli melalui tokopedia
Source code beserta data lengkap bisa dibeli di tokopedia sehingga bisa langsung dijalankan tanpa error
Assalamu’alaikum kak, bisa minta tolong tutorial yang bisa digunain untuk pelatihan data excel, untuk sistem deteksi kejatuhan ga ya kak
Tolong kak 🙏
Waalaikumsalam
Baik siap ditampung👍
Pingback: Pengertian Jaringan Syaraf Tiruan, Fuzzy Logic dan Algoritma Genetika – andre
Pingback: Kecerdasan Komputasional – Judul Situs