Jaringan Syaraf Tiruan Untuk Pengenalan Pola


Berikut ini merupakan contoh 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.

data latih

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.

data uji

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:

jst

sedangkan nilai keluaran pada proses pelatihan adalah

jst output

Perbandingan antara nilai keluaran JST pada proses pelatihan dengan data target latih ditunjukkan pada tabel di berikut:

Untitled-1

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:

jst output uji

Perbandingan antara nilai kelaran JST pada proses pengujian dengan data target ditunjukkan pada tabel di bawah ini

hasil jst

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.

Source code pemrograman matlab untuk mengklasifikasikan pola bentuk suatu objek dalam citra digital dapat diunduh melalui laman 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. 19 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?

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

%d bloggers like this: