Belajar Deep Machine Learning di Matlab

By | April 12, 2021
583 Views

Belajar Deep Machine Learning sudah banyak dibahas terutama menggunakan Python, tensorflow, keras, ada juga yang menggunakan pytorch. Namun demikian bagi kalian yang terbiasa menggunakan Matlab, maka tidak perlu kuatir. Belajar Deep Machine Learning di Matlab sangat mudah koq, nggak pakai ribet. Sebagai bahan permulaan belajar, maka saya rajin sekali banyak baca dokumentasinya di Matlab sebelum memulai project utamanya.

Sinopsis

Cerita ini dimulai ketika ada project yang berkenaan dengan deep machine learning untuk melakukan semantic segmentation, padahal saya masih menggunakan Maltlab versi lama yaitu Matlab R2018a sehingga harus install toolbox deep machine learning tersendiri.

Download Toolbox deep machine learning di Matlab

Untuk download toolbox deep machine learning, langkahnya cukup mudah koq, pastikan kalian sudah register terlebih dahulu melalui account di https://www.mathworks.com karena pas download butuh daftar dulu.

Kalau sudah, kalian buka saja aplikasinya matlab pilih menu APPS -> get more Apps ketikan saja deep machine learning, langsung saja install

pastikan kalian terkoneksi dengan internet ya! Atau kalian bisa download di https://www.mathworks.com/matlabcentral/fileexchange

Mencoba Deep Learning CNN untuk klasifikasi tulisan angka

Hal umum untuk menggunakan algoritma deep machine learning yaitu algoritma CNN convolutional neural network untuk klasifikasi tulisan tangan, saya pernah bahas disini

Sebenarnya matlab sudah ada dokumentasinya koq, tapi saya akan bahasa disini agar kita bisa belajar bersama-sama. Dataset yang digunakan pas install matlab sudah ada koq yaitu di ‘C:\Program Files\MATLAB\R2018a\toolbox\nnet\nndemos\nndatasets\DigitDataset’ bisa kalian buka menggunakan explorer akan terdapat folder sesuai dengan angkanya

Jumlahnya sekitar 10.000 gambar karena masing-masing terdiri dari 1.000 gambar untuk tiap jenis angkanya. Untuk mempermudah diatas, kita loading saja. Misalkan kita buat script dengan nama latih.m seperti berikut

clc;clear all;close all;
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ...
    'nndemos','nndatasets','DigitDataset');

Langkah selanjutnya membuat image datastore yang didalamnya adalah struct yang memuat

  1. Files
  2. Labels
See also  Open Images Dataset untuk para developer AI

Sekarang kita buat image datastore terlebih dahulu

imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true, ...
    'LabelSource','foldernames');

Kalian bisa melihat isi variabel imds seperti berikut

Artinya bertipe struct dengan key nya berupa Files dan Labels, agar lebih yakin maka kita bisa tampilkan gambar secara random, misalkan saya tampilkan 15 gambar, apakah gambar tersebut berisi tulisan tangan angka?

figure
numImages = 10000;
jumlah_objek = 15;
perm = randperm(numImages,jumlah_objek);
for i = 1:jumlah_objek
    subplot(3,5,i);
    imshow(imds.Files{perm(i)});
    drawnow;
end

Hasilnya sebagai berikut

Ok berarti sudah betul isi folder tersebut,

Spliting Dataset

Dari masing-masing angka yaitu 0 sampai 9 atau 10 gambar dengan masing-masing gambar punya 1.000 maka 10 gambar x 1.000 = 10.000 gambar. Nah dari 1.000 gambar tersebut 750 akan digunakan sebagai dataset training, caranya cukup mudah

numTrainingFiles = 750;
[imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize');

jadi ukuran menjadi berikut

  1. imdsTrain : 7.500 gambar
  2. imdsTest  : 2.500 gambar

Membuat Model CNN

Model klasifikasi menggunakan CNN mempunyai arsitektur sebagai berikut terdiri dari 7 layer

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

Bila di visualkan dengan Network Analyzer sebagai berikut

Pengaturan paramater latihan

Untuk paramater latihan menggunakan

  1. stochastic gradient descent dengan momentum.
  2. maximum epochs  20,
  3. learning rate of 0.0001.
options = trainingOptions('sgdm', ...
    'MaxEpochs',20,...
    'InitialLearnRate',1e-4, ...
    'Verbose',false, ...
    'Plots','training-progress');

Secara umum, maka nilai yang lainnya default, kalian bisa melihat options berikut

Kalau sudah OK, maka lakukan training dengan kode berikut

net = trainNetwork(imdsTrain,layers,options);

Kalian bisa melihat bahwa Belajar Deep Machine Learning di Matlab sangat mudah dilakukan melalui grafik accuracy dan loss berikut dapat diketahui bahwa proses deep machine learning bekerja dengan baik ditandai dengan accuracy semakin naik dan loss semakin turun

Sekarang kita coba saja dengan sembarang gambar

t = [digitDatasetPath '\9\image8049.png'];
I = imread(t);

YPred = classify(net,I);
figure,imshow(I),title(cellstr(YPred))

Hasilnya

See also  Classification Learner Example Datasets

Mudah bukan? ntar kita lanjut dengan pembahasan yang lainnya. Model diatas bisa kalian simpan dalam format *.mat dengan perintah berikut

save model.mat net

Selain bisa menggunakan *.mat, kalian bisa menggunakan Deep Learning Toolbox Converter for ONNX Model Format

Transfer learning

Adapun bila kalian menggunakan Python maka untuk membaca file *.mat bisa kalian lakukan dengan cara berikut melalui scipy

2 thoughts on “Belajar Deep Machine Learning di Matlab

  1. Ramlah

    Salam. Saya Ramlah. berhubung saya newbie tentang aplikasi MatLab, saya mau install MatLab yang sudah memiliki toolbox deep learning di dalamnya. Matlab versi berapa yang punya toolbox deep learning, kak??

    Reply

Leave a Reply

Your email address will not be published.




Enter Captcha Here :