Tugas Akhir - BAB III
Tugas Akhir - BAB III
Pada bab ini dibahas analisis dan perancangan sistem yang dibuat. Pada
Tugas Akhir ini digunakan algoritma YOLO (You Only Look Once) dengan model
pelatihan Tunisian License Plate untuk pendeteksian plat nomor hitam pada
kendaraan mobil Indonesia dan dianalisis serta diterapkan algoritma Support Vector
Machine untuk pengenalan karakter pada plat nomor hitam mobil Indonesia yang
sudah terdeteksi.
dan memprediksi karakter pada plat nomor hitam mobil Indonesia dengan masukan
gambar.
memerlukan teknik deteksi objek dengan model yang mampu mendeteksi objek plat
nomor hitam sebuah gambar masukan mobil Indonesia. Model terbentuk sebagai
hasil proses pembelajaran machine learning atau deep learning. Algoritma deep
learning yang digunakan adalah YOLO (You Only Look Once) untuk deteksi objek
plat nomor pada gambar dan algoritma machine learning yang digunakan adalah
Support Vector Machine untuk pengenalan dan prediksi karakter pada plat nomor
Data set pada penelitian ini bersumber dari Kaggle yang berisikan gambar
mobil dengan plat nomor Tunisia berlatar warna hitam dan warna putih untuk warna
karakternya, serta data anotasi untuk mendapatkan informasi ukuran panjang dan
15
lebar pada gambar dan titik-titik koordinat plat nomor pada gambar. Data set ini
1. Disiapkan data yang akan digunakan berupa gambar mobil dengan plat
Gambar 3.1 Dataset Gambar Mobil Plat Tunisia Untuk Data Latih
ukuran panjang dan lebar pada gambar dan titik-titik koordinat plat nomor
<annotation>
<folder>images</folder>
<filename>147.jpg</filename>
<path>C:\Users\achraf_k\Desktop\achraf\ANPR\images\147.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>1000</width>
<height>747</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>LP</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>255</xmin>
<ymin>540</ymin>
<xmax>512</xmax>
<ymax>601</ymax>
</bndbox>
</object>
</annotation>
3. Data latih sebanyak 567 gambar dan 567 data anotasi berbentuk .xml.
16
Semua data latih tersebut sudah diproses pelatihan menggunakan algoritma
YOLO (You Only Look Once) dan menghasilkan model berupa data dengan nama
lapi.weights yang akan dipakai untuk proses pengujian pendeteksian plat nomor
Pada bagian ini dijelaskan analisis algoritma YOLO (You Only Look Once)
untuk pendeteksian lokasi plat nomor pada gambar. YOLO merupakan metode
pendeteksian objek yang bisa diterapkan pada sebuah gambar ataupun video secara
YOLOv3. Pada Tugas Akhir ini, algoritma yang digunakan untuk pendeteksian
pada dasarnya digunakan untuk mendeteksi banyak objek dalam satu gambar, tetapi
dalam Tugas Akhir ini, YOLOv3 digunakan untuk mendeteksi satu objek saja, yaitu
gambar masukan menjadi 13x13 sel grid, dengan ukuran tiap sel grid
17
Gambar 3.2 Gambar Masukan Dengan 13x13 Sel Grid
yang ada. Setiap sel grid memprediksi bounding box (B) dan confidence
score. Jika tidak ada objek dalam suatu sel grid, maka sel grid tersebut
4. Jika pusat objek terdeteksi dalam suatu sel grid, maka sel grid tersebut
bounding box (B) dan confidence score untuk bounding box tersebut.
confidence score.
18
w merupakan nilai lebar.
ada dalam suatu sel grid. Dalam kasus ini, sistem hanya memprediksi 1
19
3.4 Segmentasi Karakter
Pada bagian ini, dijelaskan proses segmentasi karakter pada gambar plat
gambar diubah lagi menjadi mode hitam putih dengan cara mengubah nilai pada
setiap piksel gambar. Untuk piksel yang bernilai 0-120 diset menjadi 0 (hitam), dan
untuk mendapatkan titik-titik koordinat dari gambar karakter berwarna putih yang
20
kemudian disimpan ke dalam suatu variabel list untuk selanjutnya dilakukan proses
seleksi. Proses seleksi gambar karakter dilakukan dengan cara mencari gambar
karakter yang tertinggi (dengan minimal tinggi 20 piksel) untuk dijadikan ukuran
tetap dari tinggi gambar karakter yang dibutuhkan, kemudian gambar karakter yang
memiliki ukuran lebar kurang dari 15 piksel tidak akan diekstraksi. Hasil dari proses
menambahkan latar belakang warna hitam pada setiap gambar karakter. Ukuran
latar belakang warna hitam (persegi) bergantung pada ukuran gambar hasil
segmentasi. Misal: gambar hasil segmentasi karakter ‘B’ memiliki ukuran 38x85
21
Supaya dapat dimasukan ke dalam proses prediksi karakter, gambar hasil
segmentasi karakter harus di-resize menjadi 20x20 piksel. Seperti yang ditunjukkan
Data set penelitian ini bersumber dari Kaggle dan Google image. Data set
ini merupakan gambar karakter berwarna hitam pada latar dan warna putih pada
karakter yang sudah siap untuk dilakukan proses pelatihan. Data set gambar ini
karakter yang serupa. Nama folder dibuat sesuai dengan gambar karakter yang ada
di dalam folder tersebut. Folder ‘0’ berisikan sekumpulan gambar karakter 0 hingga
Total data set untuk proses pengenalan karakter ini berjumlah sebanyak
22
Karakter ‘5’ sebanyak 33 gambar.
23
Karakter ‘T’ sebanyak 28 gambar.
Pada bagian ini dijelaskan analisis algoritma Support Vector Machine untuk
pengenalan dan klasifikasi karakter pada gambar plat nomor hitam. Sebelum
dilakukan analisis algoritma SVM, data set gambar terlebih dahulu diubah ke
sehingga data gambar tersebut memiliki 400 atribut nilai dengan rentang nilai 0-
Misal, data yang digunakan sebagai sampel dalam perhitungan ini sebanyak
24
Kemudian, dilakukan konversi gambar menjadi nilai grayscale, sehingga
25
Tabel 3.3 Hasil Konversi Grayscale dari Sampel Data Gambar B1
Lalu, ubah data sampel pada Tabel 3.1, Tabel 3.2, Tabel 3.3, dan Tabel 3.4
menjadi matriks 20x20 yang dipaparkan pada matriks A1, A2, B1, dan B2.
26
51 42 42 42 42 42 42 … … 51
32 27 27 27 28 27 28 … … 33
37 28 27 28 27 28 26 … … 37
37 27 28 28 25 29 26 … … 38
37 27 27 26 26 27 23 … … 27
A1=
38 28 27 28 26 27 15 … … 38
37 28 27 28 26 27 13 … … 37
… … … … … … … … … …
… … … … … … … … … …
[53 46 44 38 35 34 40 … … 51]
35 18 18 18 18 18 18 … … 35
12 0 0 1 0 0 0 … … 13
18 1 0 0 1 0 0 … … 18
18 0 0 1 0 0 0 … … 18
19 0 0 0 0 0 0 … … 18
A2=
18 0 0 0 0 0 5 … … 18
18 0 0 1 0 1 55 … … 18
… … … … … … … … … …
… … … … … … … … … …
[35 18 18 18 18 18 17 … … 35]
1 0 1 0 0 55 159 … … 0
0 1 0 0 0 190 250 … … 0
0 0 0 1 1 210 254 … … 0
0 0 0 0 0 208 255 … … 0
0 0 0 1 0 210 254 … … 0
B1=
1 0 1 0 0 209 254 … … 0
0 0 0 0 0 209 254 … … 0
… … … … … … … … … …
… … … … … … … … … …
[0 0 0 0 0 164 225 … … 0]
0 0 0 0 77 253 247 … … 0
0 0 0 0 78 255 254 … … 0
0 0 0 0 77 255 254 … … 0
0 0 0 0 78 254 255 … … 0
0 0 1 0 77 255 255 … … 0
B2=
0 1 0 0 77 254 255 … … 0
1 0 0 0 77 255 255 … … 0
… … … … … … … … … …
… … … … … … … … … …
[0 0 0 0 0 164 225 … … 0]
Setelah itu, matriks A diubah menjadi vektor baris yang dinyatakan pada
27
a1=[51, 42, 42, 42, 42, 42, 42, 42, 42, 41, 41, 41, 43, 41, 42, 42, 42, 42, 43, 51, 32,
27, 27, 27, 28, 27, 28, 26, 26, 36, 39, 33, 22, 28, 27, 27, 27, 27, 26, 33, 37, 28, 27,
28, 27, 28, 26, 19, 61, 201, 222, 182, 30, 27, 26, 27, 27, 27, 28, 37, 37, 27, 28, 28,
25, 29, 26, 13, 123, 248, 235, 237, 78, 17, 29, 27, 27, 27, 27, 38, 37, 27, 27, 26, 26,
27, 23, 26, 184, 238, 226, 239, 146, 13, 24, 27, 27, 28, 27, 37, 38, 28, 27, 28, 26,
27, 15, 71, 227, 229, 231, 233, 203, 37, 20, 25, 25, 26, 27, 38, 37, 28, 27, 28, 26,
27, 13, 130, 246, 214, 152, 232, 240, 83, 21, 26, 27, 27, 27, 37, 38, 27, 27, 27, 28,
23, 30, 193, 248, 176, 46, 214, 246, 153, 13, 30, 28, 28, 28, 36, 37, 26, 27, 26, 29,
16, 74, 230, 244, 116, 4, 163, 245, 211, 38, 26, 24, 32, 25, 37, 38, 26, 27, 27, 26,
13, 141, 246, 220, 55, 8, 96, 241, 240, 95, 17, 28, 30, 28, 39, 37, 27, 27, 28, 25, 33,
198, 246, 177, 21, 18, 42, 208, 248, 164, 15, 28, 29, 28, 34, 39, 28, 28, 29, 14, 86,
235, 244, 109, 14, 31, 15, 152, 251, 214, 45, 23, 26, 26, 39, 38, 28, 28, 29, 17, 147,
251, 218, 48, 22, 28, 17, 86, 235, 241, 103, 16, 26, 30, 33, 38, 29, 29, 19, 42, 206,
250, 159, 17, 23, 29, 17, 36, 199, 248, 170, 19, 31, 26, 35, 34, 26, 27, 16, 91, 235,
231, 214, 194, 197, 202, 195, 199, 221, 232, 223, 53, 20, 24, 38, 39, 22, 31, 19, 161,
243, 216, 174, 170, 174, 173, 173, 169, 177, 231, 238, 116, 15, 30,36, 36, 27, 23,
45, 218, 248, 157, 11, 16, 18, 19, 21, 14, 28, 196, 247, 178, 25, 26, 36, 36, 27, 15,
109, 244, 238, 93, 15, 26, 26, 28, 23, 26, 12, 133, 252, 230, 66, 21, 37, 34, 26, 25,
55, 81, 74, 31, 24, 28, 27, 25, 25, 28, 22, 42, 77, 81, 48, 21, 33, 53, 46, 44, 38, 35,
34, 40, 44, 43, 45, 39, 44, 40, 46, 38, 35, 33, 38, 47, 51]
a2=[35, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 35, 12,
0, 0, 1, 0, 0, 0, 1, 0, 3, 2, 0, 1, 0, 1, 0, 0, 0, 0, 13, 18, 1, 0, 0, 1, 0, 0, 1, 170, 209, 210,
190, 14, 0, 0, 0, 0, 0, 0, 18, 18, 0, 0, 1, 0, 0, 0, 48, 255, 255, 254, 255, 82, 0, 1, 0, 0,
0, 0, 18, 19, 0, 0, 0, 0, 0, 0, 129, 255, 254, 254, 255, 167, 1, 0, 0, 0, 0, 0, 18, 18, 0,
0, 0, 0, 0, 5, 210, 254, 255, 255, 255, 235, 20, 0, 0, 0, 0, 0, 18, 18, 0, 0, 1, 0, 1, 55,
253, 255, 254, 255, 254, 255, 89, 1, 0, 0, 0, 0, 18, 18, 0, 0, 0, 0, 0, 138, 255, 254,
252, 250, 254, 255, 177, 0, 0, 0, 0, 0, 18, 18, 0, 0, 0, 0, 7, 216, 255, 255, 195, 166,
254, 255, 242, 26, 0, 0, 0, 0, 18, 18, 0, 1, 0, 1, 63, 255, 255, 255, 111, 65, 255, 255,
255, 101, 1, 0, 0, 0, 18, 18, 0, 0, 0, 1, 149, 255, 255, 249, 43, 6, 227, 254, 255, 185,
0, 0, 0, 0, 18, 18, 0, 0, 1, 11, 224, 255, 255, 195, 0, 0, 152, 255, 255, 243, 33, 0, 1,
0, 18, 18, 1, 0, 0, 71, 254, 255, 255, 105, 1, 0, 59, 252, 254, 255, 109, 0, 0, 0, 18,
18, 0, 1, 0, 158, 255, 255, 253, 198, 183, 184, 189, 250, 254, 255, 194, 2, 0, 0, 18,
18, 1, 0, 16, 229, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 249, 40, 0, 0,
18, 18, 0, 0, 82, 254, 255, 255, 138, 92, 93, 92, 94, 115, 249, 255, 255, 121, 0, 0,
18, 18, 0, 1, 180, 255, 255, 239, 10, 0, 0, 0, 0, 0, 201, 255, 255, 214, 6, 0, 18, 18, 0,
12, 166, 184, 187, 124, 0, 0, 0, 0, 0, 0, 92, 186, 185, 179, 29, 0, 18, 13, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 35, 18, 18, 18, 18, 18, 17, 18, 17, 19, 17, 18,
18, 18, 18, 18, 18, 18, 18, 35]
b1=[1, 0, 1, 0, 0, 55, 159, 144, 145, 149, 138, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
190, 250, 247, 253, 253, 249, 240, 189, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 210, 254,
217, 181, 186, 203, 245, 255, 180, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 255, 132, 27,
42, 41, 96, 231, 254, 75, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 210, 254, 111, 0, 0, 0, 4, 156, 254,
141, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 209, 254, 115, 1, 0, 0, 0, 118, 255, 203, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 209, 254, 113, 0, 0, 0, 0, 121, 254, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
28
254, 119, 0, 0, 0, 7, 154, 255, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 255, 144, 15, 29,
22, 127, 253, 252, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 201, 255, 255, 255, 255, 255, 255,
253, 145, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 255, 252, 252, 252, 251, 255, 255, 111,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 205, 254, 131, 15, 23, 62, 201, 255, 229, 59, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 208, 254, 111, 0, 0, 0, 48, 205, 255, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
205, 254, 112, 0, 0, 1, 0, 135, 255, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 255, 111, 0,
1, 0, 0, 118, 255, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 253, 113, 0, 0, 1, 0, 142, 255,
181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 254, 116, 0, 0, 3, 68, 214, 254, 130, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 208, 255, 151, 45, 52, 93, 219, 255, 217, 48, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
207, 255, 254, 253, 253, 253, 251, 226, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 225,
220, 217, 218, 217, 137, 2, 0, 0, 0, 0, 0, 0, 0]
b2=[0, 0, 0, 0, 77, 253, 247, 248, 253, 255, 254, 240, 232, 160, 18, 1, 0, 0, 0, 0, 0,
0, 0, 0, 78, 255, 254, 255, 243, 211, 225, 254, 255, 252, 95, 2, 0, 0, 0, 0, 0, 0, 0, 0,
77, 255, 254, 207, 98, 71, 80, 133, 254, 255, 216, 29, 0, 0, 0, 0, 0, 0, 0, 0, 78, 254,
255, 139, 0, 0, 0, 29, 255, 254, 255, 97, 0, 0, 0, 0, 0, 0, 1, 0, 77, 255, 255, 118, 0, 1,
0, 16, 255, 255, 254, 160, 0, 0, 0, 0, 0, 1, 0, 0, 77, 254, 255, 125, 1, 0, 1, 22, 255,
255, 255, 139, 0, 0, 0, 0, 1, 0, 0, 0, 77, 255, 255, 131, 2, 0, 0, 28, 255, 254, 253, 62,
0, 0, 0, 0, 0, 1, 0, 0, 77, 255, 255, 222, 60, 17, 24, 135, 255, 235, 66, 4, 0, 0, 0, 0, 0,
0, 0, 1, 77, 255, 254, 255, 205, 174, 179, 240, 255, 189, 7, 1, 0, 0, 0, 0, 0, 0, 1, 0,
78, 255, 254, 255, 255, 255, 255, 255, 255, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 77, 254,
255, 255, 233, 210, 217, 254, 255, 191, 12, 0, 0, 0, 0, 0, 0, 1, 0, 0, 77, 255, 253, 217,
116, 87, 95, 153, 255, 240, 95, 6, 0, 0, 0, 0, 0, 0, 0, 1, 77, 254, 255, 139, 0, 0, 0, 33,
255, 254, 254, 60, 0, 0, 0, 0, 1, 0, 0, 0, 77, 255, 255, 122, 1, 0, 0, 19, 254, 253, 255,
117, 0, 0, 0, 0, 0, 1, 0, 0, 77, 255, 255, 123, 1, 0, 0, 19, 254, 255, 255, 133, 0, 0, 0,
0, 1, 0, 0, 0, 77, 254, 255, 124, 0, 0, 0, 21, 255, 254, 255, 122, 0, 0, 0, 0, 0, 0, 0, 0,
77, 255, 255, 198, 58, 23, 33, 113, 255, 255, 255, 56, 0, 0, 0, 0, 0, 0, 0, 0, 84, 255,
254, 255, 196, 148, 162, 252, 255, 255, 180, 9, 0, 0, 0, 0, 0, 0, 0, 0, 62, 224, 221,
224, 235, 240, 239, 225, 221, 163, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 99, 101, 99, 99,
99, 100, 86, 80, 31, 0, 0, 0, 0, 0, 0]
Vektor a1, a2, b1, dan b2 masing-masing memiliki 400 nilai grayscale range
menggunakan ke-empat sampel data vektor a1, a2, b1, b2. Ke-empat sampel data
masing-masing diambil 10 nilai pertama dan akan dijadikan satu matriks, maka
29
51 42 42 42 42 42 42 42 42 41
35 18 18 18 18 18 18 18 18 18
A=[ ]
1 0 1 0 0 55 159 144 145 149
0 0 0 0 77 253 247 248 253 255
pelatihan SVM yaitu linear. Fungsi kernel linear seperti pada Rumus 1.
𝑲(𝒙𝒋 , 𝒙𝒌 ) = 𝒙𝒋 ′. 𝒙𝒌 (1)
Matriks B.
3827 2772 2773 2772 2772 2827 2931 2916 2917 2870
2772 2088 2088 2088 2088 2088 2088 2088 2088 2046
2773 2088 2089 2088 2088 2143 2247 2232 2233 2195
2772 2088 2088 2088 2088 2088 2088 2088 2088 2046
B= 2772
2827
2088
2088
2088
2143
2088
2088
8017
21569
21569
69122
21107
73324
21184
72752
21569
74072
21681
74756
2931 2088 2247 2088 21107 73324 88378 86240 87634 88722
2916 2088 2232 2088 21184 72752 86240 84328 85712 86742
2917 2088 2233 2088 21569 74072 87634 85712 87122 88166
[2870 2046 2195 2046 21681 74756 88722 86742 88166 89231]
Tujuan dari proses pelatihan SVM adalah mencari support vector yang
kelas dengan yang bukan. Proses pelatihan SVM dilakukan dengan Rumus 2.
𝒘. 𝒙𝒊 + 𝒃 = 𝟎 (2)
Vektor w merupakan vektor bobot, dan b adalah nilai bias yang merupakan
parameter model klasifikasi SVM, xi = {xi1, xi2, ..., xi10} ∈ A merupakan atribut
set untuk data latih ke-i. Misal w = (0.25, 0.25, 0.25, 0.25), dengan nilai b = -1.3190.
matriks C.
51 42 42 42 42 42 42 42 42 41
C=[ ]
1 0 1 0 0 55 159 144 145 149
30
3.7 Analisis Sistem
Pada subbab ini akan dijelaskan hasil analisa untuk perancangan perangkat
lunak menggunakan flowchart. Ada 4 flowchart yang dijelaskan dalam subbab ini,
Pada flowchart ini, dijelaskan seluruh cara kerja sistem serta proses-proses
yang terjadi secara keseluruhan. Berikut flowchart sistem pengenalan karakter plat
nomor hitam mobil Indonesia secara keseluruhan ditunjukkan pada Gambar 3.10.
Gambar 3.11 Flowchart Sistem Pengenalan Karakter Plat Nomor Hitam Mobil
Dimulai dari meng-input gambar mobil plat hitam, setelah itu dilakukan
mendapatkan lokasi plat nomor mobil, lalu plat nomor yang terdeteksi dipotong
31
untuk kemudian disimpan sebagai output dari proses deteksi plat nomor dan
karakter yang ada di plat nomor menjadi beberapa karakter tunggal. Setiap karakter
menggunakan model SVM yang sudah dilatih. Output dari proses prediksi karakter
menggunakan SVM ini adalah karakter adjad dan juga angka yang didapat dari
Pada flowchart ini, dijelaskan alur kerja sistem dalam mendeteksi lokasi plat
nomor hitam mobil melalui masukan gambar. Berikut flowchart sistem Deteksi Plat
32
Dimulai dari meng-input gambar mobil, kemudian ukuran gambar diubah
menjadi 416x416, setelah itu dibuat 13x13 sel grid untuk memulai proses
pendeteksian tiap sel grid. Jika pusat objek target (plat nomor) terletak pada suatu
sel grid, maka sel grid tersebut bertugas untuk mencari tinggi dan lebar objek
melalui sel grid di sekitarnya, hingga objek plat nomor hitam terdeteksi.
karakter pada plat nomor hitam mobil melalui masukan plat nomor yang didapat
dari output sistem deteksi plat nomor. Berikut flowchart sistem Segmentasi
33
Dimulai dari meng-input gambar plat nomor mobil yang didapat dari sistem
deteksi plat nomor, gambar plat diubah menjadi mode grayscale. Selanjutnya, dari
gambar grayscale, dicari titik-titik koordinat lebar karakter dan juga titik-titik
koordinat tinggi karakter. Titik-titik koordinat tinggi karakter bersifat tetap, yang
berarti semua karakter plat nomor memiliki tinggi yang sama, sedangkan titik-titik
koordinat lebar karakter harus diseleksi dahulu untuk menghindari deteksi karakter
yang salah. Ukuran lebar karakter minimal 16 piksel. Setelah didapati titik
koordinat lebar dan tinggi yang sudah didapat diekstraksi dan kemudian disimpan
ke dalam list potongan gambar karakter sebagai output dari proses segmentasi
Pada flowchart ini, dijelaskan alur kerja sistem dalam memprediksi karakter
pada plat nomor hitam mobil melalui masukan list gambar potongan plat nomor
yang didapat dari hasil segmentasi karakter. Berikut flowchart sistem Prediksi
34
T
Masukan pada bagian sistem ini didapat dari hasil segmentasi karakter
karakter, model SVM yang sudah dilatih juga dimasukan ke dalam sistem ini.
Masukan list potongan gambar satu per satu di resize menjadi 20x20 piksel
dan dijadikan matriks yang juga berukuran 20x20. Matriks 20x20 diubah menjadi
vektor untuk selanjutnya dijadikan sebagai x input prediksi karakter dengan model
klasifikasi SVM yang sudah dilatih dan akan menghasilkan label atau kelas dari
proses pelatihan SVM. Hasil dari proses prediksi merupakan list kelas atau label
35
3.8 Lingkungan Pengembangan
Laptop
- Kapasitas Harddisk : 1 TB
2. Analisis algoritma.
4. Pengkodean sistem.
Pada subbab ini, ditampilkan beberapa scope source code yang sudah
36
3.10.1 Source Code Pelatihan Dataset Karakter dengan SVM
dahulu dijalankan source code pelatihan dataset karakter menggunakan SVM untuk
karakter-karakter yang terdapat pada gambar plat nomor. Bagian source code ini
terbagi menjadi 2 tahap: tahap pertama merupakan proses mendapatkan nilai fitur
dari gambar dataset karakter serta label yang didapatkan dari nama folder, dan tahap
kedua merupakan proses melatih fitur dan label untuk dijadikan model SVM.
Yang pertama dijalankan pada source code ini adalah menjalankan fungsi
37
kosong dengan tipe data list dengan nama ‘features_list’ untuk menyimpan nilai
fitur dari gambar input dataset dan ‘features_label’ untuk menyimpan label dari
Kemudian, nilai grayscale yang sudah didapati diubah menjadi matriks, lalu
list ‘features_list’, serta nama folder dari lokasi penyimpanan gambar tersebut
Setelah didapati semua nilai fitur dan label, maka isi dari variabel
‘data’ dan ‘labels’ untuk kemudian dijadikan input untuk proses pelatihan dengan
SVM. Proses pelatihan SVM terdapat dalam fungsi ‘svm(data, labels, “svm.pkl”)’.
38
Gambar 3.16 Source Code Proses Pelatihan dengan SVM
Perintah pertama pada fungsi ‘svm’ adalah membagi dataset menjadi data
latih dan data uji dengan persentase data latih sebanyak 67% dan data uji sebanyak
33%. Data latih dan label data latih disimpan ke dalam variabel ‘x_train’ dan
‘y_train’. Data uji dan label data uji disimpan ke dalam variabel ‘x_test’ dan
‘y_test’.
‘ clf.predict’ dengan parameter data uji ‘x_test’, hasil proses pengujian ini
merupakan urutan label yang disimpan ke dalam variabel ‘y_pred’. Hasil yang
‘confusion_matrix(y_test, y_pred)’.
Nilai akurasi pada model SVM ini didapatkan dengan menjalankan perintah
fungsi ‘clf.score(x_test, y_test)’. Model pelatihan yang terdapat pada variabel ‘clf’
‘joblib.dump(clf, output_file_path)’.
39
algoritma YOLO dan juga bobot model yang didapat dari hasil pelatihan YOLO
dengan data set gambar mobil berplat nomor Tunisia berwarna hitam.
batasan skor keyakinan akan objek plat yang dideteksi, serta ‘nmsThreshold = 0.4’
= 416’ sebagai ukuran gambar untuk proses pendeteksian dengan algoritma YOLO.
"lapi.weights"’ merupakan model hasil pelatihan dengan data set gambar mobil
40
3.10.3 Source Code Input Image
Bagian source code ini untuk memasukkan data gambar mobil ke dalam
sistem, data yang dimasukkan berupa data gambar dengan format jpg. Gambar
lokasi penyimpanan gambar pada direktori komputer beserta dengan nama file
yang sama dengan variabel ‘filename’ dengan nama file hampir sama dengan
Bagian source code ini untuk melakukan deteksi plat nomor hitam dengan
‘read()’ yang akan menghasilkan nilai true atau false yang disimpan ke dalam
variabel ‘hasFrame’ (‘hasFrame’ akan bernilai true jika masih ada gambar yang
terbaca, dan akan bernilai false jika sudah tidak ada gambar yang terbaca), serta
41
nilai array 3 dimensi (nilai citra RGB) yang disimpan ke dalam variabel ‘frame’.
Pada bagian ini, ‘hasFrame’ akan bernilai true sehingga source code yang ada di
Gambar 3.19 Source Code Mendapatkan Nilai Array dari Gambar Masukan
parameter variabel ‘frame’, 1/255 yang merupakan nilai pengskala untuk array 3
dimensi yang tersimpan di dalam variabel ‘frame’, dan juga variabel ‘inpWidth’
dan ‘inpHeight’ untuk ukuran array di setiap dimensinya. Nilai balik dari fungsi ini
42
mendapatkan nilai dari 4 dimensi gambar masukan. Fungsi ‘net.setInput’ adalah
untuk menset nilai masukan baru untuk jaringan pada variabel net.
pada variabel ‘net’. Setelah itu dijalankan fungsi ‘postprocess’ dengan parameter
Gambar 3.20 Source Code Mendapatkan Nilai dan Informasi dari Gambar
43
Gambar 3.22 Source Code Fungsi postprocess
44
Fungsi ‘drawPred’ ini bertujuan untuk membuat gambar garis pada prediksi
Pada bagian ini dijelaskan source code untuk proses segmentasi karakter
pendeteksian pada gambar sudah selesai dan tidak ada lagi gambar atau frame yang
selanjutnya akan dilakukan proses segmentasi dan prediksi karakter pada bagian ‘if
not hasFrame:’.
45
Gambar 3.25 Source Code Proses Segmentasi dan Prediksi Karakter
Hal pertama yang dijalankan pada bagian ini merupakan pembacaan gambar
dalam variabel ‘img’. Proses segmentasi karakter dijalankan lewat perintah fungsi
sekumpulan titik koordinat berbentuk persegi panjang pada gambar plat nomor
yang berhasil tersegmentasi. Setelah itu, titik-titik koordinat pada variabel ‘digits’
satu per satu dibuat menjadi persegi berukuran 20x20 dengan perintah ‘square_digit
46
input untuk prediksi karakter dengan model SVM yang tersimpan pada file
“svm.pkl”.
Hasil dari proses prediksi ini merupakan sekumpulan label yang disimpan
47