Jaringan Syaraf Tiruan untuk Pengelompokan Jenis Daun
Memahami contoh penerapan jaringan syaraf tiruan dalam kehidupan sehari hari.
Jaringan syaraf tiruan merupakan suatu algoritma klasifikasi yang prinsip kerjanya meniru jaringan syaraf manusia. Algoritma ini memetakan data input menuju targer pada layer output melalui neuron neuron pada layer yang tersembunyi.
Jaringan saraf tiruan dibentuk sebagai
generalisasi model matematika dari jaringan saraf biologis manusia, dengan
asumsi bahwa:
- Pemrosesan informasi terjadi pada banyak elemen sederhana (neuron).
- Sinyal dikirimkan di antara neuron-neuron melalui penghubung-penghubung.
- Penghubung antar neuron memiliki bobot yang akan memperkuat atau memperlemah sinyal.
Salah satu contoh dari aplikasi jaringan syaraf tiruan adalah untuk Mengidentifikasi Jenis Daun.
3. Langkah-langkah [kembali]
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
Source code GUI Matlab untuk proses klasifikasi citra daun adalah sebagai berikut :
4. Video [kembali]
1. Langkah pertama yaitu
mempersiapkan data untuk proses pelatihan dan pengujian
Berikut ini merupakan contoh data untuk proses pelatihan
Berikut ini merupakan contoh data untuk proses pelatihan
data untuk pengujian :
2. Melakukan pelatihan
jaringan dengan tahapan-tahapan sebagai berikut:
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
Source code proses pelatihan
jaringan adalah sebagai berikut:
clc;clear;close all;
image_folder = 'Citra Latih';
filenames = dir(fullfile(image_folder,
'*.jpg'));
total_images = numel(filenames);
for n = 1:total_images
full_name=
fullfile(image_folder, filenames(n).name);
I = imread(full_name);
J = I(:,:,1);
K = im2bw(J,.6);
L = imcomplement(K);
str = strel('disk',5);
M = imclose(L,str);
N = imfill(M,'holes');
O =
bwareaopen(N,5000);
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
input = [metric;eccentricity];
target = zeros(1,24);
target(:,1:6) = 1;
target(:,7:12) = 2;
target(:,13:18) = 3;
target(:,19:24) = 4;
net = newff(input,target,[10
5],{'logsig','logsig'},'trainlm');
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-6;
net = train(net,input,target);
output = round(sim(net,input));
save net.mat net
[m,n] = find(output==target);
akurasi = sum(m)/total_images*100
Berdasarkan pada tabel
tersebut, akurasi yang dihasilkan sistem dalam proses pelatihan adalah
24/24*100% = 100%.
3. Melakukan pengujian jaringan dengan tahapan-tahapan sebagai
berikut:
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
Source code proses
pengujian jaringan adalah sebagai berikut:
clc;clear;close all;
image_folder = 'Citra Uji';
filenames = dir(fullfile(image_folder, '*.jpg'));
total_images = numel(filenames);
for n = 1:total_images
full_name= fullfile(image_folder,
filenames(n).name);
I = imread(full_name);
J = I(:,:,1);
K = im2bw(J,.6);
L = imcomplement(K);
str = strel('disk',5);
M = imclose(L,str);
N = imfill(M,'holes');
O = bwareaopen(N,5000);
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
input = [metric;eccentricity];
target = zeros(1,16);
target(:,1:4) = 1;
target(:,5:8) = 2;
target(:,9:12) = 3;
target(:,13:16) = 4;
load net
output = round(sim(net,input));
[m,n] = find(output==target);
akurasi = sum(m)/total_images*100
|
Pada tabel di atas
terdapat satu kelas citra daun yang diklasifikasikan dengan salah sehingga
akurasi yang dihasilkan jaringan dalam proses pengujian adalah sebesar
15/16*100% = 93,75%.
Akurasi yang
dihasilkan sistem baik pada proses pelatihan maupun pengujian menunjukkan bahwa
metode yang digunakan dapat mengklasifikasikan citra daun dengan baik.
4. Membuat tampilan GUI
Matlab
Source code GUI Matlab untuk proses klasifikasi citra daun adalah sebagai berikut :
function varargout = Klasifikasi_daun(varargin)
% KLASIFIKASI_DAUN MATLAB code for
Klasifikasi_daun.fig
%
KLASIFIKASI_DAUN, by itself, creates a new KLASIFIKASI_DAUN or raises the
existing
% singleton*.
%
% H =
KLASIFIKASI_DAUN returns the handle to a new KLASIFIKASI_DAUN or the handle to
% the existing
singleton*.
%
%
KLASIFIKASI_DAUN('CALLBACK',hObject,eventData,handles,...) calls the local
% function named
CALLBACK in KLASIFIKASI_DAUN.M with the given input arguments.
%
%
KLASIFIKASI_DAUN('Property','Value',...) creates a new KLASIFIKASI_DAUN or
raises the
% existing
singleton*. Starting from the left, property value pairs are
% applied to the
GUI before Klasifikasi_daun_OpeningFcn gets called. An
% unrecognized
property name or invalid value makes property application
% stop.
All inputs are passed to Klasifikasi_daun_OpeningFcn via varargin.
%
% *See GUI
Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to
run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response
to help Klasifikasi_daun
% Last Modified by GUIDE v2.5 23-Oct-2016
15:06:14
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State =
struct('gui_Name', mfilename, ...
'gui_Singleton',
gui_Singleton, ...
'gui_OpeningFcn',
@Klasifikasi_daun_OpeningFcn, ...
'gui_OutputFcn',
@Klasifikasi_daun_OutputFcn, ...
'gui_LayoutFcn',
[] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback
= str2func(varargin{1});
end
if nargout
[varargout{1:nargout}]
= gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State,
varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Klasifikasi_daun is
made visible.
function Klasifikasi_daun_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see
OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in
a future version of MATLAB
% handles structure with
handles and user data (see GUIDATA)
% varargin command line arguments
to Klasifikasi_daun (see VARARGIN)
% Choose default command line output for
Klasifikasi_daun
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
movegui(hObject,'center');
% UIWAIT makes Klasifikasi_daun wait for user
response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned
to the command line.
function varargout = Klasifikasi_daun_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning
output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in
a future version of MATLAB
% handles structure with
handles and user data (see GUIDATA)
% Get default command line output from handles
structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to
pushbutton1 (see GCBO)
% eventdata reserved - to be defined in
a future version of MATLAB
% handles structure with
handles and user data (see GUIDATA)
[nama_file,nama_path] = uigetfile({'*.*'});
if ~isequal(nama_file,0)
I =
imread(fullfile(nama_path,nama_file));
axes(handles.axes1)
imshow(I)
handles.I = I;
guidata(hObject,handles)
else
return
end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to
pushbutton2 (see GCBO)
% eventdata reserved - to be defined in
a future version of MATLAB
% handles structure with
handles and user data (see GUIDATA)
I = handles.I;
J = I(:,:,1);
K = im2bw(J,.6);
L = imcomplement(K);
str = strel('disk',5);
M = imclose(L,str);
N = imfill(M,'holes');
O = bwareaopen(N,5000);
stats =
regionprops(O,'Area','Perimeter','Eccentricity');
area = stats.Area;
perimeter = stats.Perimeter;
metric = 4*pi*area/(perimeter^2);
eccentricity = stats.Eccentricity;
input = [metric;eccentricity];
load net
output = round(sim(net,input));
axes(handles.axes2)
imshow(O)
if output == 1
kelas =
'Bougainvillea';
elseif output == 2
kelas = 'Geranium';
elseif output == 3
kelas = 'Magnolia
soulangeana';
elseif output == 4
kelas = 'Pinus';
end
set(handles.edit1,'String',kelas)
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1
(see GCBO)
% eventdata reserved - to be defined in
a future version of MATLAB
% handles structure with
handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns
contents of edit1 as text
%
str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after
setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1
(see GCBO)
% eventdata reserved - to be defined in
a future version of MATLAB
% handles empty - handles
not created until after all CreateFcns called
% Hint: edit controls usually have a white
background on Windows.
% See ISPC
and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
Tampilan GUI Matlab
ditunjukkan pada gambar-gambar berikut ini :
4. Pengolahan citra daun
untuk kelas Magnolia soulangeana
4. Video [kembali]
5. Link Download [kembali]
Download Citra Latih [DISINI]
Download CItra Uji [DISINI]
Download Listing Program [DISINI]
Download Citra Latih [DISINI]
Download CItra Uji [DISINI]
Download Listing Program [DISINI]
Tidak ada komentar:
Posting Komentar