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

Save

Save

Save

Posted on July 9, 2016, in Data mining, Pengenalan Matlab, Pengenalan Pola, Pengolahan Citra and tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 57 Comments.

  1. 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

  2. boleh minta dataset training nya ga mas?

    trimakasih..

  3. 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 🙂

  4. 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

  5. mas adi di jalankan di matlab 2010b kok gak bisa ya? maf newbie

  6. 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

  7. Assalamualaikum. Apakah output dari program ini selalu berubah setiap melakukan run pada program latih yah?

  8. mas, mau tanya apakah JST BP bisa digunakan di GLCM ordo 2? karena sudah saya coba menunjukan hasil error
    terima kasih

  9. Akurasi kenapa sering berubah ubah ya ?
    untuk data akurasi pelatihan , ketika di run awalnya > 80
    run lagi jadi > 90
    run lagi jadi > 60

  10. Akurasi pelatiha kenapa sering berubah ubah ya?
    awalnya >80
    run lagi > 90
    run lagi > 60

  11. Mas kalau saya run kenapa ada error “Inputs and targets have different numbers of samples” ya di training nya? Maaf nubi

  12. 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

  13. 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?

  14. terima kasih mas sudah sharing ilmunya, sebelumnya maaf mas….

    ini di run kok nggak bisa ya? cara mengeluarkan nntraintool gmana?

  15. Bisa dilakukan inisialisasi bobot awal terlebih dahulu agar hasil akurasi tidak berubah-ubah

  16. 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

  17. 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.

  18. Boleh g dberikan contoh penerapan k fold cross val untuk backpropagation?

  19. assalamualaikum, maaf kak numpang nanya. punya contoh source code pengenalan image daun(yg tiap daun menggunakan 2 sisi) menggunakan backpro ?

  20. Slamet R Riyadi

    assalamualaikum, maaf kak numpang bertanya. untuk pengenalan pola huruf menggunakan backpro apakah punya source code nya? soalnya hasil presentase saya kecil

  21. 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

  22. 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

  23. 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 ?

  24. 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

  25. mau tanya iku dari atas sudang lengkap beserta scriptnya?
    dan apakah tinggal copas ke dalam matlab lalu jalan kan?

  26. Assalamu’alaikum kak, bisa minta tolong tutorial yang bisa digunain untuk pelatihan data excel, untuk sistem deteksi kejatuhan ga ya kak

    Tolong kak 🙏

  1. Pingback: Pengertian Jaringan Syaraf Tiruan, Fuzzy Logic dan Algoritma Genetika – andre

  2. Pingback: Kecerdasan Komputasional – Judul Situs

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: