weak ai - library binus
TRANSCRIPT
7
BAB 2
LANDASAN TEORI
2.1 Artificial intelligence
Artificial intelligence (AI) adalah pengembangan dari sistem komputer yang
bisa melakukan kegiatan yang biasanya dilakukan manusia dengan informasi yang
diberikan kepada sistem tersebut (Russel, Norvig, & Peter, 2016). AI bisa menirukan
proses cara berfikir manusia dengan melakukan modeling kepada kelakuan manusia
dan melakukan proses komputasi oleh mesin sehingga mesin dapat belajar dari
informasi yang didapatkan. AI dapat dikategorikan menjadi dua tipe yaitu:
• Weak AI
Mesin dengan kekuatan AI yang lemah digunakan manusia hanya untuk
membantu kegiatan manusia secara spesifik dan tidak dapat berfikir
untuk dirinya sendiri.
• Strong AI
Mesin dengan kekuatan AI yang kuat dapat berfikir selayaknya manusia
biasa, dan dapat belajar dari pengalaman yang didapatkan. Jika di
kembangkan lagi dapat melakukan self-decision atau pengambilan
keputusan saat beberapa masalah terjadi.
Pada AI terdapat proses yang dijelaskan oleh Prateek joshi (Joshi, 2017):
• Collecting data
Pengumpulan data yang akan dilakukan untuk keperluan training data
kedalam sistem kecerdasan atau AI.
• Preprocess
Data yang dikumpulkan akan melalui proses preprocess yang akan
diubah menjadi informasi.
• Cognition
8
Dari informasi yang telah diekstraksi dari data akan melalui proses
cognition yang akan menjadi suatu knowledge.
• Pattern extraction
Dari knowledge tersebut akan dilakukan pattern extraction dengan
tujuan agar dapat dimengerti oleh sistem.
• Inference
Setelah melalui pattern extraction akan dilakukan tahap terakhir yaitu
inference atau melakukan kesimpulan yang digunakan sebagai
intelligence dari sistem.
AI juga mempunyai beberapa cabang untuk menyelesaikan masalah-masalah
yang ada saat ini yaitu:
• Neural network
Tujuan pada cabang neural network ini adalah mereplikasi otak
manusia menjadi beberapa microchip, dan konsep utama dari neural
networks adalah membuat jaringan data yang saling berhubungan dan
terus-menerus saling mengirimkan data. Jaringan Saraf Tiruan (JST)
adalah cara komputasi untuk melakukan replikasi. Setiap jaringan saraf
terdiri dari neuron yang dihubungkan oleh koneksi yang di sebut
weight. Semakin banyak jaringannya maka semakin baik kemampuan
belajar sistem tersebut.
• Computer vision
Tujuan pada cabang computer vision ini adalah untuk membuat
computer memahami data visual. Memahami hal ini berarti bahwa
informasi yang diperoleh oleh computer dapat berguna untuk aplikasi
yang sedang di buat. Nilai piksel diambil sebagai fitur dari data visual
dan biasanya akan ada preprocessing untuk meningkatkan kualitas fitur.
• Robotics
9
Tujuan dari cabang robotics adalah membuat perangkat mekanik atau
biasanya disebut robot unutk melakukan pekerjaan yang ekstrem yang
tidak dapat dicapai oleh manusia atau menggantikan beberapa pekerjaan
manusia.
• Expert system
Tujuan dari cabang expert system adalah membuat AI yang dapat
membuat solusi yang biasanya membutuhkan kemampuan proses
pemikiran manusia. Konsep expert system adalah untuk mentransfer
pengetahuan dari seseorang yang mahir dalam apa yang mereka lakukan
ke dalam mesin. Tujuan utamanya adalah untuk memudahkan proses
penerimaan informasi.
• Speech recognition
Tujuan dari cabang speech recognition ini sama dengan computer vision
yaitu dengan mendapatkan informasi dari sekitar dengan data visual
dalam konteks bunyi atau percakapan manusia. Speech recognition
mengubah signal bunyi menjadi urutan kata-kata.
• Natural language processing (NLP)
Tujuan dari cabang NLP adalah untuk membuat manusia berkomunikasi
dengan mesin dengan bahasa sehari-hari. Mesin tersebut dapat
mengetahui dan menjawab dengan bahasa sehari-hari. NLP terdiri dari
syntactic analysis dan semantic analysis. Syntatic analysis akan
memecah kalimat menjadi kata kerja, kata ganti, dan sebagainya.
Sementara semantic analysis mencoba menganalisa makna kalimat.
• Machine learning
Tujuan dari cabang machine learning adalah untuk mengidentifikasi
pola dalam data dan menyesuaikan dengan sistem. Pada machine
learning sistem dapat mempelajari pola dengan informasi yang
diberikan secara otomatis.
10
2.2 Computer vision
Computer vision adalah cabang dari artificial intelligence yang khusus
menangani permasalahan data visual seperti gambar dan video. Computer vision
bertugas untuk membuat sistem mengerti lingkungan sekitar atau dunia nyata melalui
gambar atau data visual lainnya. Contohnya ketika manusia bisa mengetahui dengan
melihta objek A adalah kursi, maka computer vision akan membuat sistem mengenali
objek A adalah kursi. Computer vision sudah banyak di aplikasikan ke dalam dunia
nyata seperti (Szeliksi, 2010):
• Optical character recognition (OCR)
Membaca tulisan tangan pada surat pos seperti pada Gambar 2.1 dan
automatic number plate recognition (ANPR).
• Machine inspection
Inspeksi atau pengecekan untuk quality assurance pada sayap pesawat
atau bagian lainnya dengan menggunakan stereo vision atau mencari
kejanggalan pada proses las menggunakan x-ray vision seperti pada
Gambar 2.2.
• Fingerprint recognition and biometrics
Autentikasi otomatis menggunakan jari atau wajah manusia untuk
efisiensi waktu.
Gambar 2.1 Contoh OCR pada surat pos
(Sumber: ( (Szeliksi, 2010))
11
Gambar 2.2 Contoh machine inspection
(Sumber: ( (Szeliksi, 2010))
2.2.1 Super resolution
Secara garis besar super-resolution adalah proses mengubah gambar
resolusi rendah menjadi gambar resolusi tinggi. Super-resolution
merekonstruksi ulang gambar resolusi rendah menjadi gambar resolusi tinggi
dengan data yang sudah di sediakan (Gaidhani, 2011). Sedangkan gambar
resolusi rendah terkadang tidak tersedia untuk proses rekonstruksi sehingga
hanya bisa merekonstruksi gambar dengan informasi yang terbatas, proses ini
biasanya disebut dengan single-frame super-resolution. Super-resolution
dikategorikan menjadi multi-frame atau single-frame bergantung kepada input
daripada gambar resolusi rendah yang digunakan. Super-resolution mempunyai
cara hitung sebagai berikut:
(1)
Dimana adalah gambar resolusi rendah, adalah decimation,
adalah linear blurring, adalah geometric transformation, adalah gambar
resolusi tinggi, dan adalah additive noise. Gambar 2.3 menunjukkan
ilustrasi dari proses rekonstruksi gambar dari gambar resolusi rendah menjadi
gambar resolusi tinggi secara singkat.
12
Gambar 2.3 Ilustrasi proses rekonstruksi gambar super-resolution
2.2.2 Denoising
Denoising mempunyai peran penting dalam bidang image enhancement.
Pentingnya proses denoising ini bertujuan untuk memperoleh hasil gambar yang
lebih akurat dan mendekati aslinya. Denoising menghapus noise yang terdapat pada
citra dan dengan proses filtering. Menurut (Buades, Coll, Bartomeu, Morel, & J-M,
2005) metode denoising mempunyai proses sebagai berikut:
(2)
Dimana, adalah observed value, adalah “true” value dan
adalah noise value dalam pixel i. Lalu, ada tiga macam noise yaitu:
• Additive Noise
Additive noise adalah penambahan kadar noise secara merata pada
sebuah gambar dengan nilai yang sudah ditentukan. Contoh noise salt-
and-peppers yang menambahkan titik-titik gelap dan terang pada
gambar.
• Gaussian Noise
Noise ini memiliki intensitas yang sesuai dengan distribusi normal yang
memiliki mean dan varian tertentu.
• Speckle Noise
Speckle noise adalah noise yang muncul pada saat pengambilan gambar
yang tidak sempurna karena alasan cuaca, kamera, dan sebagainya.
Speckle noise bersifat mulipikatif yang berarti semakin besar intensitas
gambar atau semakin cerah gambar maka semakin jelas juga noise pada
gambar tersebut.
13
2.3 Machine learning
Machine learning adalah proses belajar pada sistem untuk mendapatkan ilmu
dan pengalaman dari data yang diberikan. Sistem akan beradaptasi dengan pola dari
data secara otomatis. Dari hasil adaptasi tersebut sistem dapat memproses berbagai
macam kegiatan yang bisa memudahkan manusia. Menurut (Domingos, 2012)
“ learning” memiliki komponen yang terdiri dari:
• Representation
Classifier harus dalam bahasa formal yang dimengerti oleh komputer.
Dengan memilih representation sebagai learner sama saja dengan
mengambil sebagian dari classifier yang memungkinkan untuk
dipelajari. Sebagian dari classifier ini bisa di sebut juga sebagai
hypothesis space. Jika suatu classifier tidak termasuk dalam hypothesis
space maka classifier tersebut tidak bisa untuk bahan learning.
• Evaluation
Fungsi evaluasi (objective function atau scoring function) berguna untuk
memisahkan classifier yang baik dan buruk.
• Optimization
Fungsi dari optimisasi disini adalah untuk mencari classifier yang
mempunyai kualitas yang paling baik dan membuat proses learning
menjadi lebih efisien.
Machine learning sendiri dikemukakan oleh Arthur Samuel pada tahun 1959
(Provost, 1998). Machine learning sendiri terdiri dari 3 (tiga) tipe yaitu:
• Supervised learning
Supervised learning biasanya digunakan untuk predictive modeling.
Predictive modeling adalah model dari machine learning yang dapat
memprediksi nilai dari nilai lain yang ada di input data. Supervised
learning mempunyai dua tipe yaitu:
a. Classification
b. Regression
• Unsupervised learning
Unsupervised learning biasanya digunakan untuk pattern detection dan
descriptive modeling. Algoritma ini mengubah input data untuk
14
mendeteksi pola atau mengmumpulkan data. Unsupervised learning
mempunyai dua tipe yaitu:
a. Clustering
b. Association rule learning
• Semi supervised learning
Semi supervised learning biasanya digunakan untuk descriptive
modeling, karena pada dasarnya descriptive modeling itu mahal maka
semi-supervised learning menjadi salah satu cara untuk menangani hal
tersebut.
• Reinforcement learning
Reinforcement learning menggunakan interaksi pada lingkungan untuk
memaksimalkan hasil atau meminimalisir kegagalan. Reinforcement
learning mempelajari pola-pola dari data dengan cara pengulangan,
maka dari proses tersebut reinforcement learning akan mendapatkan
suatu intelligent yang diharapkan dapat menyelesaikan masalah lain.
Gambar 2.4 Tipe-tipe machine learning
2.4 Deep learning
Deep learning adalah cabang dari machine learning yang khusus mengatasi
masalah abstraksi data dengan mengoptimalkan hierarchical architectures (Guo,
2016). Metode deep learning saat ini sedang terkenal dikalangan artificial
intelligence yang di aplikasikan pada transfer learning (Pan, Yang, Qiang, & others,
2010), computer vision, natural language processing (NLP), atau semantic parsing.
Deep learning mengoptimalkan hierarchical architecture untuk mempelajari dan
15
mengerti lingkungan. Karena metode deep learning akan mengambil informasi dari
data, jadi data tersebut tidak perlu di bagi-bagi lagi menjadi beberapa bagian. Sistem
akan memisahkan dan mengetahui mana data yang terbaik dan terburuk untuk
dijadikan bahan belajar, hal ini dinamakan high-level feature. High-level feature
adalah fitur-fitur yang terdapat pada gambar yang tidak bisa di lihat oleh manusia.
Dengan adanya high-level feature menjadikan deep learning menjadi lebih baik
daripada machine learning yang dimana machine learning belajar dengan fitur data
yang dibuat oleh manusia. Hal ini terbukti dengan banyak sekali implementasi deep
learning sedang banyak digunakan saat ini, berikut adalah keunggulan saat
menggunakan metode deep learning:
• Deep learning dapat menambah performa dari chip processing (contoh:
graphic processing unit atau GPU).
• Deep learning dapat menurunkan sumber daya penggunaan pada
hardware komputer.
• Deep learning merupakan satu tingkat lebih tinggi daripada machine
learning.
16
Gambar 2.5 Perbedaan antara rule-based system, classic machine learning dan deep learning
(Sumber: ( (Goodfellow, et al., 2016))
2.4.1 Neural network layer
Pada computer vision terdapat banyak cara untuk mengubah input agar dapat di
proses oleh model pada deep learning. Dengan menggunakan neural network layer
kita dapat mengolah data yang mempunyai banyak dimensi seperti gambar berwarna
yang mempunyai tiga dimensi untuk diolah oleh sistem. Sebelum data input tersebut
diproses maka data tersebut akan masuk kedalam layer yang akan memproses dan
mengubah dengan ukuran filter yang digunakan. Neural network mempunyai 3 (tiga)
macam layer yaitu: input layer, hidden layer, dan output layer (Smith & others,
1997).
17
Gambar 2. 6 Contoh alur dari input layer, hidden layer, dan output layer
(Sumber: ( (Smith & others, 1997))
• Input layer
Pada input layer, input gambar akan di ambil beberapa informasi atau fitur-
fitur yang akan menghasilkan sebuah nilai.
18
Gambar 2.7 Ilustrasi masuknya nilai input layer yang akan diproses oleh hidden layer
• Hidden layer
Nilai yang dihasilkan oleh input layer akan masuk kedalam hidden layer
dan akan diproses oleh hidden layer dengan melipat gandakan nilai-nilai
yang terkirim ke hidden layer. Setelah itu hidden layer akan mengubah
nilai-nilai tersebut menjadi satu nilai seperti simbol “E” pada gambar 2.7.
• Output layer
Output layer akan menerima nilai yang sudah diproses oleh hidden layer
dan akan dilanjutkan ke proses selanjutnya.
Neural network dapat mempunyai jumlah layer yang tidak terbatas
dan jumlah node pada setiap layer. Ada beberapa macam neural network
layer yang biasanya digunakan pada model, yaitu: 1-D/2-D convolutional
neural network, max pooling 1-D/2-D, batch normalization, activation
function layer, dan sebagainya.
2.4.1.1 1-D / 2-D Convolutional neural network
Layer 1-D dan 2-D convolutional neural network atau biasanya
disebut (Conv1D/Conv2D), layer konvolusi ini mempunyai parameter yang
berguna untuk mempelajari fitur-fitur yang ada pada gambar secara otomatis.
Layer konvolusi beradaptasi secara otomatis untuk mencari fitur-fitur paling
19
baik pada gambar. Biasanya multiple convolutional layers di gunakan untuk
menyaring gambar yang mempunyai informasi abstrak di setiap layernya.
Gambar 2.8 Ilustrasi layer konvolusi pada image enhancement
2.4.1.2 Max pooling 1-D / 2-D
Layer pooling atau biasanya disebut (MaxPooling1D /
Maxpooling2D), layer pooling digunakan untuk membuat input menjadi
single value (subsampling). Layer pooling biasanya mempunyai informasi
yang berguna dan sudah diringkas untuk disalurkan pada layer selanjutnya.
Semakin besar ukuran pooling maka semakin besar pula informasi yang
diringkas, hal ini dapat menyebabkan model yang dibuat menjadi ringkas
pula sehingga tidak memakan banyak memori pada GPU.
Gambar 2.9 Ilustrasi operasi maxpooling dengan filter 2 x 2
2.4.1.3 Batch normalization
Layer batch normalization (BatchNormalization) berfungsi untuk
menormalisasikan activation pada layer sebelumnya, batch normalization
20
menerapkan transformasi yang mengatur agar nilai activation mendekati nilai
0 dan nilai standar deviasi pada activation mendekati nilai 1.
2.4.1.4 Activation function layer
Activation function berfungsi untuk menetapkan nilai pada suatu neuron dari
input yang masuk kedalam activation function layer. Ada beberapa activation
function yang dapat digunakan, yaitu:
• Sigmoid
Activation sigmoid dapat mengubah nilai input negatif menjadi nilai yang
mendekati angka 0 jika nilai input tersebut bernilai negatif. Sebaliknya, saat
nilai input mempunyai nilai positif maka sigmoid akan mengubah nilai input
tersebut mendekati angka 1. Gambar 2.10 menunjukan grafik dari activation
sigmoid.
Gambar 2.10 Grafik activation sigmoid
• Rectified linear unit (ReLU)
ReLU dapat mengubah nilai input menjadi nilai maksimum antara 0 atau nilai
input itu sendiri. Gambar 2.11 menunjukan grafik dari activation ReLU.
21
Gambar 2.11 Grafik activation ReLU
2.5 Optimization function
2.5.1 Stochastic gradient descent (SGD)
SGD sering disebut sebagai incremental gradient descent. SGD mencari weight
baru dengan cara incremental yaitu mengambil sampel dari seluruh data training,
setelah itu SGD akan menganalisa setiap sampel data tersebut. Keuntungan
menggunakan SGD adalah terminimalisirnya memori yang dibutuhkan pada saat
mencari weight baru (Mitchell, 1997).
2.5.2 Adaptive gradient (AdaGrad)
AdaGrad adalah algoritma yang mengatur learning rate agar dapat
meningkatkan performa dengan menggunakan sparse gradients (Tieleman, Hinton,
& Geoffrey, 2012).
2.5.3 Root mean square propagation (RMSProp)
RMSProp adalah algoritma yang mengatur learning rate berdasarkan besaran
nilai rata-rata dari weight. RMSProp menggunakan nilai pertama dalam gradien
untuk menentukan nilai rata-rata dari weight (Duchi, Hazan, Elad, Singer, & Yoram,
2011).
2.5.4 Adam
Adam termasuk salah satu algoritma optimizer yang mudah untuk di
implementasikan, tidak memakan banyak memori, efisien, dan yang paling penting
22
adalah adam sangat cocok untuk menyelesaikan masalah yang berhubungan dengan
data dan parameter (Kingma, Ba, & Jimmy, 2014).
Adam mempunyai kelebihan daripada optimizer lain yaitu adaptive gradient
(AdaGrad) (Duchi, Hazan, Elad, Singer, & Yoram, 2011), dan root mean square
propagation (RMSProp) (Tieleman, Hinton, & Geoffrey, 2012). Dalam menentukan
nilai weight jika RMSProp menggunakan nilai pertama dalam gradien, di sisi lain
adam menggunakan nilai ke-dua dari gradien. Hal ini secara khusus dapat
menghitung rata-rata hitung eksponensial dari gradien, gradien kuadrat, dan
parameter beta1/beta2 mengontrol rata-rata decay (Kingma, Ba, & Jimmy, 2014).
2.6 Programming language dan library
Bahasa pemrograman adalah bahasa notasi buatan yang dibuat atau
dikembangkan berupa sebuah instruksi yang nantinya akan dieksekusi oleh
komputer. Bahasa pemrograman biasanya terdiri dari serangkaian aturan (syntax)
yang akan menjelaskan maksud dari aturan (semantics). Pada bahasa pemrograman
biasanya mempunyai penerjemah atau translator yang biasanya disebut interpreter
atau compiler (Lateef, et al., 2016).
2.6.1 Python
Python adalah bahasa pemrograman yang cocok untuk pembelajaran dan
pemrograman dunia nyata. Python termasuk ke dalam bahasa pemrograman high-
level, dan object-oriented. Python menjadi salah satu bahasa pemrograman yang
sangat cepat diadopsi oleh banyak orang. Python memiliki beberapa fitur yang
menjadi kelebihannya yaitu (K.R.Srinath, 2017):
• Simpel
Python termasuk kedalam bahasa pemrograman high-level yang
mempunyai banyak sumber untuk dipelajari. Python mendukung
banyak program-program lain sehingga menjadi mudah untuk
menggunakan python.
• Portable
23
Bahasa pemrograman python bisa di akses di sistem operasi apapun
seperti windows, linux, amigo, mac OS, dan sebagainya.
• Open source
Python termasuk kedalam tipe open source yang berarti bebas untuk
digunakan oleh umum.
• Mempunyai library yang besar
Python mempunyai library yang cukup luas sehingga dapat lebih
mudah menyelesaikan masalah dengan library yang ada. Contoh library
yang ada pada python adalah numpy, tensorflow, keras, MySQLdb, dan
sebagainya.
• Object oriented
Python termasuk bahasa pemrograman yang bersifat object-oriented.
Dengan pemrograman yang bersifat object oriented, python dapat
membantu menyelesaikan masalah yang kompleks.
2.6.2 Keras
Menurut website resmi keras, keras adalah high-level neural network API yang
ditulis dengan bahasa pemrograman python dan dapat dijalankan pada tensorflow,
microsoft cognitive toolkit (CNTK), atau theano. Keras mudah dimengerti dan dapat
digunakan untuk membuat prototype, mendukung penggunaan convolutional
network dan recurren networks, keras juga dapat berjalan secara mulus pada central
processor unit (CPU) dan graphics processing unit (GPU). Keras juga mendukung
penggunaan python versi 2.7 sampai 3.6.
2.6.3 OpenCV
Open source computer vision library (OpenCV) adalah library bersifat open
source yang dapat digunakan untuk computer vision dan machine learning. OpenCV
dibuat untuk melengkapi kebutuhan infrastruktur pada computer vision dan untuk
meningkatkan kinerja sistem. OpenCV mempunyai lebih dari 2.500 algoritma yang
bisa digunakan, yang terdiri dari classic dan state-of-the-art dari algoritma computer
24
vision dan machine learning. Algoritma opencv dapat mendeteksi dan mengenali
wajah manusia, mengidentifikasi objek, menggabungkan dua gambar untuk
mendapatkan gambar beresolusi tinggi.
2.6.4 PyQt
Menurut website resmi pyqt, pyqt adalah sebuah application programming
interface (API) yang dibuat oleh riverbank. Pyqt dapat berjalan di semua platform
seperti windows, OS, linux, iOS, dan android. Pyqt mengimplementasi modul-modul
yang ada pada python dan menampung lebih dari 1.000 fungsi yang ada pada pyqt.
Pyqt mengkombinasikan semua keuntungan yang ada di python, jadi semua orang
dapat menggunakan pyqt dengan mudah.
2.7 Evaluation metric
2.7.1 Peak signal-to-noise ratio (PSNR)
PSNR atau peak signal-to-noise-ratio sangat sering digunakan dalam sistem
sebagai metode untuk menilai kualitas metrik secara konsisten (Huynh-Thu,
Ghanbari, & Mohammed, 2008) PSNR memiliki cara hitung dengan menggabungkan
mean square error (MSE).
(2)
Sedangkan MSE memiliki cara hitung:
(3)
Dimana adalah gambar asli dan adalah gambar test, lalu adalah
ukuran gambar (Hore, Ziou, & Djemel, 2010). Semakin besar hasil hitung akhir dari
PSNR, maka itu berarti gambar semakin bagus dan mendekati gambar input. Jika
nilai hasil dari PSNR melebihi angka 30 maka biasanya gambar tersebut da.3pat
dikatakan gambar yang baik. Tabel 2.1 adalah contoh ilustrasi hasil akhir hitungan
PSNR yang diambil dari publikasi karya ilmiah (Wongso, Luwinda, & others, 2018).
Dalam karya ilmiah (Wongso, Luwinda, & others, 2018) gambar yang menjadi tolak
ukur untuk penghitungan PSNR adalah gambar natural image.
25
Tabel 2.1 Ilustrasi hasil PSNR di super-resolution for natural image
Model PSNR
SRCNN 32.96
VDSR 33.98
DRCN 35.05
2.7.2 Structural similarity index (SSIM)
Structural similarity index atai SSIM adalah metode untuk menilai kualitas
gambar. Gambar 2.3 menunjukkan ilustrasi diagram cara kerja SSIM.
Gambar 2.12 Ilustrasi diagram alur kerja SSIM
(Sumber: ( (Wang, et al., 2004))
Dari gambar 2.12 anggap x dan y adalah sinyal dari fitur gambar yang sudah
diekstrak. Sistem akan memisahkan cara hitung menjadi tiga bagian yaitu:
luminance, contrast, dan structure (Wang, et al., 2004). Cara hitung SSIM adalah
sebagai berikut:
(4)
Dimana , , , , dan adalah nilai rata-rata, standar deviasi, dan
covariance dari gambar dan . Gambar dikatakan mempunyai kualitas yang baik
jika hasil hitung dari SSIM mendekati angka 1. Tabel 2.2 adalah ilustrasi SSIM di
26
super-resolution yang diambil dari publikasi karya ilmiah (Wongso, Luwinda, &
others, 2018).
Tabel 2.2 Ilustrasi hasil SSIM di super-resolution for natural image
2.8 Unified modelling language (UML)
Unified modelling language (UML) adalah sekumpulan permodelan yang
digunakan untuk menggambarkan suatu sistem. Diagram UML bisa diibaratkan
seperti rancangan saat membuat aplikasi, dimana sekumpulan rancangan tersebut
menyediakan gambaran yang berbeda-beda sesuai kebutuhan developer maupun
user.
Menurut (Bentley, Whitten, & L, 2007) diagram UML memiliki 13 diagram, yaitu:
• Class diagram
Diagram yang menggambarkan objek-objek yang terdapat pada sistem.
• User case diagram
Diagram yang menggambarkan interaksi antara sistem dengan user.
• Activity diagram
Diagram yang menggambarkan urutan atau alur aktivitas dari use case.
• Object diagram
Diagram yang mirip dengan class diagram tetapi lebih menggambarkan
objek yang terdapat dalam class.
• Sequence diagram
Diagram yang menggambarkan bagaimana suatu objek berinteraksi
melalui pesan dalam pelaksanaan use case atau operasi dengan adanya
lifetime.
• State machine diagram
Model SSIM
SRCNN 0.978
VDSR 0.983
DRCN 0.986
27
Diagram yang menggambarkan bagaimana suatu kejadian dapat
mengubah status objek selama waktu hidupnya.
• Communication diagram
Diagram yang menggambarkan interaksi dari objek melalui pesan.
• Interaction overview diagram
Diagram yang mengkombinasikan fitur dari activity diagram dan
sequence diagram untuk menunjukan bagaimana objek berinteraksi
pada setiap aktivitas dari use case.
• Component diagram
Diagram yang menggambarkan pengaturan dari kode pemrograman
yang dibagi menjadi komponen-komponen, dan bagaimana komponen
tersebut berinteraksi.
• Timing diagram
Diagram interaksi yang berfokus pada kendala waktu dalam perubahan
status dari single object atau multiple object.
• Composite structure diagram
Diagram yang menguraikan struktur internal dari class, component, atau
use case.
• Deployment diagram
Diagram yang menggambarkan konfigurasi dari komponen aplikasi
dengan arsitektur fisikan dari sistem hardware.
• Package diagram
Diagram yang menggambarkan bagaimana class atau diagram lainnya
membangun sebuah package yang terorganisir.
Dengan adanya diagram-diagram pada UML diharapkan perancangan sistem
dapat lebih dipahami dan mudah digambarkan sehingga tujuan dari UML akan
tercapai.
2.8.1 Use case diagram
Use case diagram adalah diagram yang menggambarkan interaksi sistem
dengan user dan menggambarkan siapa yang akan menggunakan sistem serta
bagaimana user berinteraksi dengan sistem (Bentley, Whitten, & L, 2007).
28
Gambar 2.13 Ilustrasi use case diagram
Use case diagram memiliki komponen dasar yaitu use case, actors, dan
relationships. Use case merupakan urutan perilaku atau langkah-langkah untuk
menyelesaikan tugas. Use case menggambarkan fungsi sistem dengan cara
menggunakan simbol-simbol dan terminologi yang dipahami oleh pengguna
eksternal. Use case digambarkan dengan bentuk eclipse.
Actor yaitu pengguna eksternal yang berinteraksi dengan sistem untuk
mencapai tujuan dari use case. Terdapat 4 (empat) tipe actors, yaitu:
• Primary business actor: stakeholder yang paling diuntungkan dari
terlaksananya use case dengan menerima sesuatu yang dapat diukur.
• Primary system actor: stakeholder yang secara langsung berinteraksi
dengan sistem untuk memulai kegiatan sistem.
• External server actor: stakeholder yang merespon permintaan dari use
case.
• External receiver actor: stakeholder yang bukan merupakan actor
utama tetapi menerima sesuatu yang dapat bernilai dari use case.
Dalam use case diagram terdapat relationship yang digambarkan dengan
garis yang menghubungkan antara use case ataupun actor dengan use case. Arti dari
relationship berbeda-beda. Terdapat beberapa relationship yang digunakan yaitu:
• Asosisasi
29
Asosisasi berarti suatu hubungan antara actor dan use case. Asosiasi
dapat digambarkan dengan suatu garis yang menghubungkan actor dan use
case. Asosiasi digambarkan dengan anak panah, menunjukkan interaksi
antara use case dengan actor sebagai inisiator. Sedangkan asosiasi yang
digambarkan tanpa anak panah atau garis biasa menggambarkan interaksi
antara use case dengan actor.
Gambar 2.14 Contoh asosiasi pada use case diagram
• Extends
Suatu use case dapat terdiri dari fungsi-fungsi yang kompleks dan
menyebabkan use case sulit dimengerti. Dengan mengekstrak fungsi-fungsi
yang kompleks menjadi use case maka akan membuat use case menjadi lebih
sederhana dan mudah dipahami.
30
Gambar 2.15 Contoh extends pada use case diagram
• Uses / Includes
Fungsi pada use case diagram yang melakukan tugas yang sama akan
digabungkan menjadi use case baru yang disebut abstract use case, yang
berfungsi mengurangi redudansi dalam dalam use case diagram.
Gambar 2.16 Contoh includes pada use case diagram
• Inheritance
31
Inheritance digunakan untuk mempermudah penggambaran hubungan
antara dua atau lebih actor yang memiliki langkah yang sama dalam sistem
dengan membuat abstract actor.
2.8.2 Class diagram
Class diagram merupakan gambaran dari objek-objek yang menunjukkan kelas
objek yang ada pada suatu sistem dan hubungan antara kelas-kelas objek tersebut
(Bentley, Whitten, & L, 2007).
Gambar 2.17 Ilustrasi class diagram
(Sumber: (Bentley, Whitten, & L, 2007))
32
Setiap class dibagi menjadi 3 (tiga) bagian, yaitu:
• Class name
Class name harus unik atau dapat dibedakan antara kelas satu dengan
kelas yang lain karena class name merupakan identitas yang harus
berbeda dan dimiliki oleh setiap class.
• Attribute
Atrribute menunjukkan informasi yang di miliki oleh suatu class atau
informasi yang berhubungan dengan suatu class. Di dalam attribute
biasanya memiliki primary key (PK).
33
• Operation
Operation digunakan untuk menunjukkan fungsi yang dapat dilakukan
oleh suatu class.
Gambar 2.18 Ilustrasi struktur dari class
2.8.2.1 Visibility
Pada class diagram terdapat visibility yang digunakan untuk menentukan suatu
kelas dapat diakses oleh kelas lainnya atau tidak. Dalam visibility memiliki 3 (tiga)
jenis, yaitu (Bentley, Whitten, & L, 2007):
• Public dilambangkan dengan “+”
• Protected dilambangkan dengan “#”
• Private dilambangkan dengan “-”
Tabel 2.3 Penjelasan visibility dalam class diagram
Visibility Simbol Deskripsi
Public +
Public berarti dapat
diakses oleh semua
operasi lain di semua
class.
Protected #
Protected berarti dapat
diakses oleh operasi lain
dalam class yang hanya
mendeklarasikan atribut
34
atau operasi di
subclasses dari class
tersebut.
Private -
Private berarti hanya
dapat diakses oleh
semua operasi lain di
class yang
mendeklarasikannya.
2.8.2.2 Multiplicity
Multiplicity bisa diartikan sebagai jumlah minimum dan maksimum
kemunculan suatu objek atau class ke antar class (Bentley, Whitten, & L, 2007).
Tabel 2.4 Penjelasan multiplicity pada class diagram
Multiplicity Deskripsi
0..1 Nol atau satu
1 Hanya satu
0..* atau * Nola tau lebih
1..* Satu atau lebih
7..9 Memiliki nilai tertentu
yang spesifik
2.8.3 Activity diagram
Activity diagram adalah diagram yang digunakan untuk menggambarkan proses
antara user dan sistem, langkah-langkah dari use case atau logika dari objek. Dalam
activity diagram, lebih dari satu use case dapat digambarkan dengan satu activity
diagram, tetapi satu activity diagram dapat digambarkan untuk setiap use case jika
use case tersebut memiliki logika yang kompleks (Bentley, Whitten, & L, 2007).
Gambar 2.19 Ilustrasi activity diagram
(Sumber: (Bentley, Whitten, & L, 2007))
35
Activity diagram mempunyai beberapa notasi yang mempunyai arti yang
berbeda-beda. Berikut adalah macam-macam dan penjelasan notasi pada activity
diagram:
• Initial node: berupa lingkaran berwarna hitam yang menggambarkan
dimulainya proses pada sistem.
• Actions: berupa persegi panjang yang menggambarkan langkah
individu, langkah-langkah yang berurutan akan menampilkan aktivitas
pada activity diagram.
36
• Flow: berupa anak panah mengindikasikan kemajuan pada actions.
Kebanyakan flow tidak memerlukan keterangan, kecuali flow yang
memerlukan suatu decision.
• Decision: berupa diamond dengan satu flow yang masuk dan satu flow
yang keluar memberikan kondisi.
• Merge: berupa diamond dengan dua atau lebih flow masuk dan satu flow
keluar. Menggabungkan flow yang terpisah oleh decision.
• Fork: berupa persegi panjang hitam dengan flow masuk dan dua atau
lebih flow keluar. Menggambaran aktivitas berjalan paralel.
• Join: persegi panjang hitam dengan dua atau lebih flow masuk dan satu
flow keluar. Menggambarkan proses paralel berakhir.
• Activity final: lingkaran yang dikelilingi garis melingkar
menggambarkan berakhirnya proses.
• Subactivity indicator: simbol yang dapat memecah proses pada activity
diagram ke activity diagram lain. Sehingga dapat membuat activity
diagram tidak terlalu kompleks.
• Connector: lingkaran dengan huruf didalamnya yang dapat membantu
dalam mengatur tingkat kompleksitas. Flow yang masuk ke dalam
connector akan melompat ke aktivitas selanjutnya dengan lingkaran
yang mempunyai huruf yang sama.
2.8.4 Sequence diagram
Sequence diagram adalah diagram yang menggambarkan model logika dari
sebuah use case dengan menggambarkan interaksi pesan antar objek (message atau
reply) dalam suatu urutan waktu (Bentley, Whitten, & L, 2007).
Gambar 2. 20 Ilustrasi sequence diagram
(Sumber: (Bentley, Whitten, & L, 2007))
37
Sequence diagram mempunyai beberapa elemen yang digunakan dalam proses.
Berikut adalah macam-macam dan penjelasan elemen-elemen yang terdapat pada
sequence diagram (Bentley, Whitten, & L, 2007):
• User/Actor
User adalah suatu elemen yang digunakan pada sequence diagram
digambarkan dengan user simbol yang mewakili pengguna dalam
berinteraksi dengan interface.
• Interface class
Segi empat yang berarti kelas kode dari user interface. Untuk
membedakan class interface dengan kelas lainnya maka terdapat tulisan
<<interface>>.
• Controller class
Setiap use case akan memiliki satu atau lebih controller class,
digambarkan dengan notasi yang sama seperti interface class yaitu
<<controller>>.
• Entity classs
Gambaran entitas yang diperlukan untuk berkolaborasi dalam langkah-
langkah yang berurutan.
• Messages
Garis horizontal yang berarti pesan masuk yang dikirim ke dalam class.
Setiap pesan disebut behavioral atau method dari class yang menunjuk.
38
Penulisan messages diawali dengan huruf kecil, dan kata selanjutnya
diawali dengan huruf besar.
• Activation bars
Berbentuk sebuah bar yang menunjukan masa hidup (lifetime) dari
objek yang ada.
• Return messages
Anak panah dengan garis putus-putus yang menunjukkan pesan
pengembalian (reply). Setiap perilaku atau operasi harus
mengembalikan sesuatu yang menyatakan perilaku atau operasi sukses
dijalankan.
• Self-call
Objek dapat memanggil method milik sendiri.
• Frame
Bingkai berbentuk kotak yang berarti satu atau lebih pesan dapat
menjadi pilihan langkah. Seperti perulangan dan alternatif pilihan.
2.9 Related works
2.9.1 Image super-resolution using deep convolutional networks
Jurnal ini membahas mengenai pengembangan sebuah sistem menggunakan
metode deep learning untuk super-resolution yang disebut super-resolution
convolutional neural network (SRCNN). Metode yang merupakan end-to-end
mapping pada gambar low/high-resolution. Mapping pada sistem ini
menggambarkan convolutional neural network (CNN) yang menjadikan gambar
resolusi rendah menjadi input dan gambar resolusi tinggi akan menjadi output-nya.
Pada SRCNN terdapat tiga operasi yaitu:
• Patch extraction and representation
Dalam proses patch extraction terjadi proses pengambilan fitur pada
gambar yang akan dilanjutkan pada non-linear mapping.
• Non-linear mapping
39
Dalam proses non-linear mapping terjadi proses bicubic dan
upsampling pada fitur gambar yang sudah di ekstrak dengan proses
komputasi.
• Reconstruction
Pada proses reconstruction fitur gambar yang telah mengalami proses
bicubic dan upsampling akan mengalami proses rekosntruksi.
Dengan melewati beberapa proses konvolusi tersebut maka gambar akan
menghasilkan output yaitu gambar dengan resolusi tinggi. SRCNN membuktikan
bahwa dengan menggunakan layer konvolusi dapat menghasilkan hasil yang baik di
bidang super-resolution (Dong, et al., 2016).
Gambar 2.21 Ilustrasi arsitektur pada SRCNN
(Sumber: (Dong, et al., Image super-resolution using deep convolutional networks, 2016))
2.9.2 Accurate image super-resolution using very deep convolutional
networks
Dong mengembangkan sebuah sistem menggunakan metode deep learning
sama seperti (Dong, et al., 2016) yang disebut very deep super-resolution (VDSR).
Pada sistem ini Kim menggunakan Teknik residual, dimana residual tersebut
mempunyai notasi:
(5)
40
Dimana r adalah residual, y adalah estimasi nilai pada gambar resolusi tinggi,
dan x adalah gambar resolusi rendah. VDSR menggunakan 20-layer CNN pada
modelnya. VDSR sukses meningkatkan performa melalui metode residual learning.
Gambar 2.22 Ilustrasi arsitektur pada VDSR
(Sumber: (Kim, Lee, Jung, Lee, & Kyoung, 2016))
2.9.3 Image super-resolution via deep recursive residual network
Deep recursive residual network (DRRN) adalah model yang dikembangkan
oleh (Tai, Yang, Jian, Liu, & Xiaoming, 2017). Mereka menggunakan 52-layer
konvolusi yang menggunakan deep convolutional network, walaupun menggunakan
banyak layer DRRN juga termasuk model yang ringkas. DRRN menggunakan
metode deep learning sama seperti VDSR (Kim, Lee, Jung, Lee, & Kyoung, 2016).
Untuk mengurangi tingkat kesulitan atau waktu dalam training data DRRN
menggunakan metode recursive learning. Recursive learning berguna untuk
mengontrol parameter yang digunakan dalam DRRN pada saat training data.
2.9.4 Beyond a gaussian denoiser: residual learning of deep CNN for
image denoising
Denoising convolutional neural network (DnCNN) menggunakan
discriminative model. DnCNN menggunakan deep architecture, learning algorithm,
dan metode regularisasi pada denoising. Secara khusus metode residual dan batch
normalization digunakan untuk menghemat waktu pada proses training dan
meningkatkan hasil dari denoising. Berbeda dengan discriminative biasanya hanya
menangani additive gaussian noise dengan nilai yang sudah ditentukan, DnCNN bisa
menangani noise yang nilainya tidak diketahui atau acak. Dengan residual learning
41
DnCNN dapat memisahkan gambar bersih pada hidden layer. Hasil penelitian oleh
(Zhang, et al., 2017) membuktikan bahwa DnCNN sangat efektif dan lebih efisien
jika menggunakan GPU.
2.9.5 Enhanced deep residual networks for single image super-resolution
Bee Lim (Lim, et al., 2017) membuat deep convolutional network yang disebut
sebagai enhanced deep super resolution network (EDSR). EDSR menggunakan
residual block pada layernya yang terdiri dari layer konvolusi, activation ReLU.
EDSR mengimplementasikan residual dari SRResNet yang terdiri dari layer
konvolusi, batch normalization, dan activation ReLU. Bee (Lim, et al., 2017)
meningkatkan performa EDSR dengan cara mengubah parameter menjadi lebih
banyak, seperti menambah jumlah filter pada layer. Bee menganalisa bahwa
menambah fitur pada gambar akan membuat proses training tidak stabil, maka
residual learning di terapkan pada EDSR, hasil eksperimen Bee membuktikan bahwa
EDSR dapat melampaui hasil dari SRResNet dan state-of-the-art lainnya.
2.9.6 Wide activation for efficient and accurate image super-resolution
Model wide activation for efficient and accurate image super-resolution
(WDSR) membuktikan bahwa dengan menggunakan parameter yang sama dengan
fitur yang lebih lebar sebelum activation layer dapat menghasilkan performa yang
lebih baik daripada metode state-of-the-art. Metode ini menggunakan residual block
dari EDSR (Lim, et al., 2017) namun dengan mengubah beberapa fitur pada residual
block sebelum activation layer ReLU, WDSR mengakui bahwa banyak informasi
atau fitur yang dapat di gali lebih banyak sebelum activation layer. WDSR juga
membuktikan bahwa menggunakan batch normalization dapat membuat akurasi pada
super-resolution menurun dibandingkan dengan weight normalization yang
dikenalkan oleh WDSR. Weight normalization membuat training data dapat
menggunakan learning rate yang lebih tinggi, membuat training data lebih cepat dan
performa yang lebih baik (Yu, et al., 2018).
2.9.7 Deep back-projection networks for super-resolution
Deep back projection networks (DBPN) menjadi salah satu metode yang dibuat
oleh Haris (Haris, Shakhnarovich, Gregory, Ukita, & Norimichi, 2018) untuk
menyelesaikan masalah pada dunia super-resolution. DBPN menggunakan metode
42
iterasi up dan down pada layer sampling, cara kerja proses iterasi ini adalah
mengirimkan feedback error sehingga pada saat proses training, error yang didapat
akan di tutup oleh layer atau proses berikutnya. Dengan menggunakan metode iterasi
up dan down DBPN terbukti dapat meningkatkan performa pada super-resolution
berskala 8x lebih baik daripada metode state-of-the-art.