Anda di halaman 1dari 8

Adaptive Neuro-Fuzzy Inference

System (ANFIS)

1 Vote

Adaptive Neuro-Fuzzy Inference System (ANFIS) merupakan jaringan syaraf adaptif yang
berbasis pada sistem kesimpulan fuzzy (Fuzzy Inference System). Dengan menggunakan
metode pembelajaran hybrid, ANFIS dapat memetakan nilai masukan menuju nilai keluaran
berdasarkan pada pengetahuan yang dilatihkan dalam bentuk aturan fuzzy.

Berikut merupakan pemrograman MATLAB untuk mengklasifikasi citra daun ke dalam 4 buah
kelas (A, B, C, dan D) menggunakan algoritma ANFIS. Pada contoh ini digunakan 40 citra daun
yang terdiri dari 10 citra pada masing-masing kelas. Citra tersebut dibagi menjadi dua bagian
yaitu sebanyak 28 citra untuk data pelatihan dan 12 citra untuk data pengujian. Contoh citra
daun yang digunakan ditunjukkan pada gambar di bawah ini:
Langkah-langkah pemrogramannya adalah sebagai berikut:
1. Mempersiapkan citra latih untuk proses pelatihan

2. Melakukan pelatihan algoritma ANFIS untuk mengklasifikasikan citra daun. Ciri yang
digunakan untuk membedakan antara kelas daun yang satu dengan yang lain adalah ciri
morfologi dan ciri tekstur. Ciri morfologi yang digunakan yaitu metric dan eccentricity.
Sedangkan ciri tekstur yang digunakan yaitu contrast, correlation,
energy, dan homogeneity. Keenam ciri tersebut digunakan sebagai masukan dalam algoritma
ANFIS untuk mengklasifikasikan citra daun ke dalam 4 buah kelas. Koding program pelatihan
adalah sebagai berikut:
1 clc;clear;close all;warning off all;
2
image_folder = 'data latih';
3 filenames = dir(fullfile(image_folder, '*.tif'));
4 total_images = numel(filenames);
5
6 feature = zeros(total_images,6);
7
8 for n = 1:total_images
9 full_name = fullfile(image_folder, filenames(n).name);
I = imread(full_name);
10 Img = im2bw(I,graythresh(I));
11 Img = imcomplement(Img);
12 Img = imfill(Img,'holes');
13 Img = bwareaopen(Img,1000);
14
% Ekstraksi Ciri Morfologi
15 stats = regionprops(Img,'All');
16 area = stats.Area;
17 perimeter = stats.Perimeter;
18 metric = 4*pi*area/(perimeter^2);
19 eccentricity = stats.Eccentricity;
20
% Ekstraksi Ciri Tekstur
21 GLCM = graycomatrix(I,'Offset',[0 1; -1 1; -1 0; -1 -1]);
22 stats =
23 graycoprops(GLCM,{'contrast','correlation','energy','homogeneity'});
24 contrast = mean(stats.Contrast);
correlation = mean(stats.Correlation);
25 energy = mean(stats.Energy);
26 homogeneity = mean(stats.Homogeneity);
27
28 feature(n,1) = metric;
29 feature(n,2) = eccentricity;
feature(n,3) = contrast;
30 feature(n,4) = correlation;
31 feature(n,5) = energy;
32 feature(n,6) = homogeneity;
33 end
34
35 target = zeros(total_images,1);
target(1:7,:) = 1;
36 target(8:14,:) = 2;
37 target(15:21,:) = 3;
38 target(22:28,:) = 4;
39
40 trnData = [feature,target];
41
numMFs = 2;
42 mfType = 'gbellmf';
43 error_goal = 1e-6;
44 epoch = 20;
45 trnOpt(1) = epoch;
46 trnOpt(2) = error_goal;
47
fismat = genfis1(trnData,numMFs,mfType);
48 [trnfismat,rmse] = anfis(trnData, fismat, trnOpt);
49 [x,mf] = plotmf(trnfismat,'input',1);
50 subplot(2,3,1), plot(x,mf)
51 xlabel('input 1 (gbellmf)')
52 [x,mf] = plotmf(trnfismat,'input',2);
subplot(2,3,2), plot(x,mf)
53 xlabel('input 2 (gbellmf)')
54 [x,mf] = plotmf(trnfismat,'input',3);
55 subplot(2,3,3), plot(x,mf)
56 xlabel('input 3 (gbellmf)')
[x,mf] = plotmf(trnfismat,'input',4);
57 subplot(2,3,4), plot(x,mf)
58 xlabel('input 4 (gbellmf)')
59 [x,mf] = plotmf(trnfismat,'input',5);
60 subplot(2,3,5), plot(x,mf)
61 xlabel('input 5 (gbellmf)')
[x,mf] = plotmf(trnfismat,'input',6);
62 subplot(2,3,6), plot(x,mf)
63 xlabel('input 6 (gbellmf)')
64 writefis(trnfismat,'trnfismat')
65
66 output = round(evalfis(trnData(:,1:6), trnfismat));
67
error = numel(find(output~=target));
68 akurasi_pelatihan = (numel(output)-error)/(numel(output))*100
69
70
71
72
73
74
75
76
77
78
79
80
Pada proses pelatihan tersebut digunakan dua buah membership function pada masing-masing
input dengan tipe generalized bell membership function (gbell) yang ditunjukkkan pada
gambar berikut:
Hasil keluaran dari proses pelatihan ditunjukkan pada tabel di bawah ini:
Pada tabel di atas tampak bahwa seluruh citra diklasifikasikan sesuai dengan target kelas yang
sebenarnya. Sehingga diperoleh akurasi hasil proses pelatihan adalah sebesar 28/28*100 = 100%

3. Mempersiapkan citra uji untuk proses pengujian

4. Melakukan pengujian algoritma ANFIS menggunakan fuzzy inference system yang dihasilkan
dari proses pelatihan. Koding program untuk proses pengujian adalah:
clc;clear;close all;warning off all;
1
2
trnfismat = readfis('trnfismat');
3 image_folder = 'data uji';
4 filenames = dir(fullfile(image_folder, '*.tif'));
5 total_images = numel(filenames);
6
7 feature = zeros(total_images,6);
8
for n = 1:total_images
9 full_name = fullfile(image_folder, filenames(n).name);
10 I = imread(full_name);
11 Img = im2bw(I,graythresh(I));
12 Img = imcomplement(Img);
13 Img = imfill(Img,'holes');
Img = bwareaopen(Img,1000);
14
15 % Ekstraksi Ciri Morfologi
16 stats = regionprops(Img,'All');
17 area = stats.Area;
18 perimeter = stats.Perimeter;
19 metric = 4*pi*area/(perimeter^2);
eccentricity = stats.Eccentricity;
20
21 % Ekstraksi Ciri Tekstur
22 GLCM = graycomatrix(I,'Offset',[0 1; -1 1; -1 0; -1 -1]);
23 stats =
24 graycoprops(GLCM,{'contrast','correlation','energy','homogeneity'});
contrast = mean(stats.Contrast);
25 correlation = mean(stats.Correlation);
26 energy = mean(stats.Energy);
27 homogeneity = mean(stats.Homogeneity);
28
29 feature(n,1) = metric;
feature(n,2) = eccentricity;
30 feature(n,3) = contrast;
31 feature(n,4) = correlation;
32 feature(n,5) = energy;
33 feature(n,6) = homogeneity;
end
34
35 target = zeros(total_images,1);
36 target(1:3,:) = 1;
37 target(4:6,:) = 2;
38 target(7:9,:) = 3;
39 target(10:12,:) = 4;
40
testData = [feature,target];
41 output = round(evalfis(testData(:,1:6), trnfismat));
42
43 error = numel(find(output~=target));
44 akurasi_pengujian = (numel(output)-error)/(numel(output))*100
45
46
47
48
49
50
51
Hasil yang diperoleh pada proses pengujian ditunjukkan pada tabel berikut:
Berdasarkan tabel di atas, dari 12 citra yang diujikan, terdapat tiga citra yang diklasifikasikan
tidak sesuai dengan target kelas daun sebenarnya. Sehingga akurasi yang dihasilkan pada
proses pengujian adalah sebesar 9/12*100 = 75%. Hasil ini menunjukkan bahwa algoritma ANFIS
cukup baik digunakan untuk mengklasifikasikan daun berdasarkan ciri morfologi dan ciri
tekstur.

Source algoritma ANFIS di atas beserta citra daun dapat diunduh pada laman berikut: link