TUGAS UAS

Tugas UAS

Referensi : 

1. Jaringan Syaraf Tiruan untuk Klasifikasi Citra Daun oleh adi pamungkas, M.si

2. Deep Learning: Convolutional Neural Networks oleh Mega Bagus Herlambang





DAFTAR ISI
Soal 1 : Klasifikasi citra pada daun menggunakan Jaringan Syaraf Tiruan
Soal 2  : Klasifikasi gender pria dan wanita berdasarkan pola wajah menggunakan convolutional neural networks


                1. Soal 1 :Klasifikasi citra pada daun menggunakan Jaringan Syaraf Tiruan [back]
>Klasifikasi adalah suatu teknik pada penerapan algoritma jaringan syaraf tiruan, klasifikasi digunakan untuk membedakan suatu objek dengan objek yang lainnya

Jaringan syaraf tiruan merupakan algoritma klasifikasi yang meniru prinsip kerja dari jaringan syaraf manusia. Algoritma ini memetakan data masukan pada layer masukan menuju target pada layer keluaran melalui neuron-neuron pada layer tersembunyi.


Beberapa parameter yang perlu diperhatikan dalam menyusun/ merancang arsitektur jaringan syaraf tiruan antara lain:

1. Jenis jaringan syaraf tiruan yang akan digunakan
2. Jumlah neuron pada layer masukan, layer tersembunyi, dan layer keluaran
3. Jumlah layer tersembunyi (hidden layer)
4. Fungsi aktivasi pada layer tersembunyi
5. Inisialisasi bobot awal
6. Inisialisasi nilai target kesalahan (error goal)
7. Inisialisasi nilai epoch
8. Inisialisasi nilai momentum




Navigasi Otonom Berdasarkan Peta Topologi Visual

Data set yang digunakan :
1. data latih
pada data latih kita menggunakan 4 kelas yaitu bougenvile, germanium, magnolia dan pinus masing-masing ada 6 sehingga total data latih adalah 24

2. data uji

pada data uji kita menggunakan 4 gambar untuk tiap masing-masing kelas sehingga totalnya adalah 16 gambar uji





Program Matlab :
1. berikut merupakan program matlab untuk pelatihan

clc;clear;close all;
 
%menetapkan nama folder latih
nama_folder = 'Citra Latih';
%membaca file dgn ekstensi jpg
nama_file = dir(fullfile(nama_folder, '*.jpg'));
%membaca jumlah file
jumlah_file = numel(nama_file);
 
%meninisialisasi variabel
area = zeros(1,jumlah_file);
perimeter = zeros(1,jumlah_file);
metric = zeros(1,jumlah_file);
eccentricity = zeros(1,jumlah_file);

% pengelolahan citra terhadap seluruh file
for n = 1:jumlah_file
    %membaca file citra rgb
    I = imread(fullfile(nama_folder,nama_file(n).name));
   % figure, imshow(I)
    %mengekstrak komponen red dari citra rgb
    J = I(:,:,1);
   % figure, imshow(J)
    %melakukan thresholding terhadap komponen red
    K = imbinarize(J,.6);
    %figure, imshow(K)
    %melukakn operasi komplemen
    L = imcomplement(K);
    %figure, imshow(L)
    
    %melukakn operasi morfologi
    % 1. closing
    str = strel('disk',5);
    M = imclose(L,str);
    
    % 2. fillinf holes
    N = imfill(M,'holes');
    
    % 3. area opening
    O = bwareaopen(N,5000);
   
   % ekstraksi ciri
   stats = regionprops(O,'Area','Perimeter','Eccentricity');
   area(n) = stats.Area;
   perimeter(n) = stats.Perimeter;
   metric(n) = 4*pi*area(n)/(perimeter(n)^2);
   eccentricity(n) = stats.Eccentricity;
end

%menyusun variabel input
input = [metric;eccentricity];
%menyusun variabel target
target = zeros(1,jumlah_file);
target(:,1:6) = 1; %Bougainvillea
target(:,7:12) = 2; %Geranium
target(:,13:18) = 3; %Magnolia
target(:,19:24) = 4;  %Pinus
 
% membangun arsitektur JST
net = newff(input,target,[10 5],{'logsig','logsig'},'trainlm');
% melakukan latihan jaringan
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-6;
% melakukan latihan jaringan
net = train(net,input,target);
% membaca nilai keluaran jaringan
output = round(sim(net,input));
save net.mat net
 
% membaca akurasi
[m,n] = find(output==target);
akurasi = sum(m)/jumlah_file*100


2. berikut program matlab untuk pengujian

clc;clear;close all;
 
%menetapkan nama folder latih
nama_folder = 'Citra Uji';
%membaca file dgn ekstensi jpg
nama_file = dir(fullfile(nama_folder, '*.jpg'));
%membaca jumlah file
jumlah_file = numel(nama_file);
 
%meninisialisasi variabel
area = zeros(1,jumlah_file);
perimeter = zeros(1,jumlah_file);
metric = zeros(1,jumlah_file);
eccentricity = zeros(1,jumlah_file);

% pengelolahan citra terhadap seluruh file
for n = 1:jumlah_file
    %membaca file citra rgb
    I = imread(fullfile(nama_folder,nama_file(n).name));
   % figure, imshow(I)
    %mengekstrak komponen red dari citra rgb
    J = I(:,:,1);
   % figure, imshow(J)
    %melakukan thresholding terhadap komponen red
    K = imbinarize(J,.6);
    %figure, imshow(K)
    %melukakn operasi komplemen
    L = imcomplement(K);
    %figure, imshow(L)
    
    %melukakn operasi morfologi
    % 1. closing
    str = strel('disk',5);
    M = imclose(L,str);
    
    % 2. fillinf holes
    N = imfill(M,'holes');
    
    % 3. area opening
    O = bwareaopen(N,5000);
   
   % ekstraksi ciri
   stats = regionprops(O,'Area','Perimeter','Eccentricity');
   area(n) = stats.Area;
   perimeter(n) = stats.Perimeter;
   metric(n) = 4*pi*area(n)/(perimeter(n)^2);
   eccentricity(n) = stats.Eccentricity;
end

%menyusun variabel input
input = [metric;eccentricity];
%menyusun variabel target
target = zeros(1,jumlah_file);
target(:,1:4) = 1; %Bougainvillea
target(:,5:8) = 2; %Geranium
target(:,9:12) = 3; %Magnolia
target(:,13:16) = 4;  %Pinus
 
load net
output = round(sim(net,input));

 
% membaca akurasi
[m,n] = find(output==target);
akurasi = sum(m)/jumlah_file*100

untuk tahapan dari program-program di atas adalah sebagai berikut :
1. tahap pelatihan
a. Membaca citra latih
b. Segmentasi citra dengan metode thresholding pada kanal merah
c. Operasi morfologi untuk memperbaiki hasil segmentasi
d. Ekstraksi ciri bentuk berdasarkan parameter metric dan eccentricity
e. Menetapkan target latih (kelas Bougainvillea sp disimbolkan dengan angka 1, kelas Geranium sp dengan angka 2, kelas Magnolia soulangeana dengan angka 3, dan kelas Pinus sp dengan angka 4)
f. Membangun arsitektur jaringan syaraf tiruan propagasi balik
g. Melatih jaringan dengan hasil ekstraksi ciri sebagai masukannya
h. Menghitung akurasi hasil pelatihan

2. tahap pengujian
a. Membaca citra uji
b. Segmentasi citra dengan metode thresholding pada kanal merah
c. Operasi morfologi untuk memperbaiki hasil segmentasi
d. Ekstraksi ciri bentuk berdasarkan parameter metric dan eccentricity
e. Menetapkan target uji (kelas Bougainvillea sp disimbolkan dengan angka 1, kelas Geranium sp dengan angka 2, kelas Magnolia soulangeana dengan angka 3, dan kelas Pinus sp dengan angka 4)
f. Memanggil jaringan syaraf tiruan propagasi balik yang telah dibuat pada proses pelatihan
g. Menguji jaringan dengan hasil ekstraksi ciri sebagai masukannya
h. Menghitung akurasi hasil pengujian
Output :


hasil pelatihan

hasil pelatihan dapat berbeda-beda untuk setiap kali pelatihannya dan setelah di uji 5 kali didapat bahwa kesalahn paling besar terdapat 1 kesalahan ini menandakan bahwa jst sangat baik dalam mengklasifikasikan citra daun


Video Penjelasan :









2. Soal 2 :Klasifikasi gender pria dan wanita berdasarkan pola wajah menggunakan matlab [back]

Langkah pertama yaitu mempersiapkan data untuk proses pelatihan dan pengujian
Berikut ini merupakan contoh data untuk proses pelatihan


Sedangkan contoh data untuk pengujian adalah sbb:


Langkah berikutnya yaitu menyusun data latih beserta target latih sesuai dengan format pemrograman JST di Matlab. Data latih disusun sehingga menjadi matriks berukuran 4 x 15 seperti berikut ini



Sedangkan target latih disusun menjadi matriks berukuran 1 x 15 seperti berikut ini


Keterangan: 1 = Adi, 2 = Budi, 3 = Candra, 4 = Dedi, 5 =  Erik

Langkah selanjutnya yaitu menuliskan coding pada script matlab seperti berikut ini
1. Coding untuk menuliskan data latih dan target latih pada matlab

% Mempersiapkan data latih dan target latih
data_latih = [0.35,0.59,0.19,0.36,0.58,0.40,0.61,0.20,0.38,0.57,0.33,0.55,0.18,0.38,0.56;...
     0.47,0.11,0.89,0.90,0.45,0.45,0.11,0.87,0.88,0.46,0.45,0.14,0.87,0.89,0.47;...
     0.88,0.90,0.54,0.39,0.80,0.80,0.90,0.56,0.35,0.82,0.85,0.90,0.55,0.37,0.83;...
     0.34,0.56,0.38,0.82,0.91,0.35,0.55,0.41,0.85,0.92,0.37,0.57,0.40,0.85,0.91];
target_latih = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
[~,N] = size(data_latih);

2. Selanjutnya membuat coding Jaringan Syaraf Tiruan Backpropagation dengan arsitektur 4-2-1 dan inisialisasi bobot awal secara acak. Pada pemrograman ini digunakan fungsi aktivasi sigmoid biner (logsig) pada hidden layer dan fungsi aktivasi linear (purelin) pada layer keluaran. Sedangkan fungsi pelatihan menggunakan metode gradien descent

% Pembuatan JST
net = newff(minmax(data_latih),[2 1],{'logsig','purelin'},'traingdx');
net.IW{1,1} = [-7.62,0.97,-2.60,-9.55;-5.83,-3.41,3.08,-4.44];
net.LW{2,1} = [-2.40,-2.67];
net.b{1,1} = [9.38;-2.7];
net.b{2,1} = 5.93;


3. Membuat coding untuk memberikan parameter-parameter yang mempengaruhi proses pelatihan jst seperti parameter jumlah epoch, target error, learning rate, momentum.
% Memberikan nilai untuk mempengaruhi proses pelatihan
net.performFcn = 'mse';
net.trainParam.goal = 0.01;
net.trainParam.show = 20;
net.trainParam.epochs = 1000;
net.trainParam.mc = 0.95;
net.trainParam.lr = 0.1;

4. Membuat coding untuk melakukan pelatihan jaringan
% Proses training
[net_keluaran,tr,Y,E] = train(net,data_latih,target_latih);

Pada tampilan tersebut ditunjukkan bahwa target error (mse) tercapai pada epoch ke 506. Kita bisa melihat error (mse) yang dihasilkan pada setiap epoch dengan meng-klik tombol ‘performance’ sehingga muncul tampilan seperti berikut:




Sedangkan koefisien korelasi hasil pelatihan dapat dilihat dengan meng-klik tombol ‘regression’ sehingga diperoleh:



Nilai koefisien korelasi sebesar 0.99751 menunjukkan bahwa akurasi hasil proses pelatihan sangat baik.
Untuk melihat nilai-nilai hasil pelatihan, kita dapat menuliskan coding sbb

% Hasil setelah pelatihan
bobot_hidden = net_keluaran.IW{1,1};
bobot_keluaran = net_keluaran.LW{2,1};
bias_hidden = net_keluaran.b{1,1};
bias_keluaran = net_keluaran.b{2,1};
jumlah_iterasi = tr.num_epochs;
nilai_keluaran = Y;
nilai_error = E;
error_MSE = (1/N)*sum(nilai_error.^2);

Langkah terakhir yaitu proses pengujian jaringan
    Data uji disusun seperti ditunjukkan oleh matriks berikut



Dalam matlab kita dapat menuliskan coding sbb:
% Performa jaringan
data_uji = [0.38,0.60,0.19,0.35,0.59;...
    0.43,0.14,0.88,0.90,0.45;...
    0.85,0.87,0.60,0.41,0.78;...
    0.34,0.57,0.40,0.83,0.93];
hasil_uji = round(sim(net_keluaran,data_uji))


sehingga diperoleh hasil pada command window seperti berikut ini:

Hasil tersebut 100% sesuai dengan target uji yang telah diberikan sebelumnya. Pada contoh ini ditunjukkan bahwa JST dapat mengidentifikasi/ membedakan pola wajah seseorang berdasarkan ciri mata, hidung, mulut, dan telinga dengan baik.





Video Penjelasan :
                 








Download File





No comments:

Post a Comment