AI Pengenalan Tulisan Tangan Korea
Universitas Konkuk. Senior, Pemrograman Multimedia - Proyek jangka (Proyek individu)
1. Pendahuluan
“Bisakah tulisan tangan Korea seseorang dipelajari melalui jaringan saraf tiruan?”
Bahkan ketika menulis huruf yang sama, gaya tulisan tangan setiap orang terlihat sedikit berbeda. Gaya tulisan tangan orang yang dipaksa menulis atau menulis sambil bersendawa akan meninggalkan jejak yang berbeda dari biasanya sehingga sangat dapat diandalkan sebagai alat bukti. Keunikan inilah yang membuat sebuah tanda tangan menjadi unik. Dalam dokumen dan ujian penting, sangat penting untuk memeriksa keaslian tulisan tangan.
Karena digunakan untuk membuktikan identitas, tulisan tangan itu unik, namun jika ada dua tulisan tangan yang berbeda dan hanya sedikit perbedaannya, maka sulit bagi manusia untuk membedakannya dengan mata telanjang. Oleh karena itu, saya ingin menerapkan model kecerdasan buatan untuk pengenalan tulisan tangan Korea.
(1-1) Memasukkan data
- Tulisan Tangan Korea dari 10 orang
- Gambar di atas semuanya ditulis oleh orang yang berbeda. (Anda dapat melihat bahwa keduanya adalah huruf yang sama, namun sedikit berbeda.)
(1-2) Sasaran
- 10 orang (3 anggota keluarga, 7 teman dekat)
- BSN(Sona Bang), CHW(Howon Choi), KBJ(Beomjun Kim), KJH(Joonhyung Kwon), LJH(Jongho Lee), LSE(Seungeon Lee), PJH(Jonghyuk Park), PSM(Sangmoon Park), SHB( Suk Hyunbin), SWS(Woosub Shin)
(1-3) Bidang aplikasi yang diharapkan
- Verifikasi tulisan tangan ujian nasional dan dokumen penting.
- OCR (Pengenalan Karakter Optik)
2. Membuat basis data
2-1. Data satu huruf
(1) belum dibaca
- Templat bekas disediakan dari "Ongle-leap", sebuah perusahaan desain font
- Termasuk setiap kombinasi huruf Korea
(2) Topeng yang tidak diasah
- Menggunakan topeng yang belum diasah untuk mempertajam tulisan tangan seseorang
(3) Transformasi skala abu-abu
(4) Periksa histogram & Terapkan ambang batas pertama
- Ambang batas diatur melalui Histogram, dan gambar dibinarisasi berdasarkan ambang batas.
- (Dalam contoh ini, ambang batas diatur ke 150 dari 0 hingga 255)
(5) Terapkan LPF
- Untuk mengekstrak posisi tulisan tangan, perlu dilakukan penghalusan tulisan tangan melalui LPF agar konturnya terlihat.
- Atur ukuran kernel dengan tepat dan terapkan LPF ke gambar biner melalui cv2.filter2D.
- Semakin kecil ukuran Kernel maka semakin mudah untuk mendeteksi satuan yang lebih kecil seperti vokal dan konsonan, dan semakin besar ukuran Kernel maka semakin mudah untuk mendeteksi kontur huruf itu sendiri.
- (Contoh berlaku kernel 21x21)
(6) Periksa histogram & Terapkan ambang batas ke-2
- Atur ambang batas melalui histogram gambar yang dihaluskan dengan LPF, kemudian dilakukan binerisasi sekali lagi berdasarkan ambang batas tersebut.
- (Contoh nilai ambang batas : 230)
(7) Ekstrak kontur & koordinat, pemotongan gambar
- Garis besar kecil yang bukan berupa huruf, tidak diekstraksi.
- Koordinat x,y dan nilai w,h diekstraksi dari kontur yang diekstraksi, dan koordinat tersebut dihitung kembali dengan persegi agar ciri-ciri tulisan tangan tidak hilang semaksimal mungkin karena nantinya harus diubah ukurannya menjadi ukuran 64x64.
- Melalui koordinat yang dihitung, gambar dipotong menjadi bentuk persegi.
(8) Tuliskan
- 81 data satu huruf per orang
- total : 810 data satu huruf dikumpulkan,
2-2. Data dua huruf
- Data dua huruf dibuat dengan menggabungkan data satu huruf yang berbeda, masing-masing diskalakan dengan tepat.
- Untuk mengurangi hilangnya informasi fitur selama pengubahan ukuran, fungsi img_concat(img1, img2) dibuat dan digunakan untuk menghubungkan gambar, dan membentuknya menjadi kotak.
- Memperoleh 6.480 data dua huruf per target (81P2)
2-3. Data tiga huruf
- Data tiga huruf dibuat dengan menggabungkan data satu huruf dan data dua huruf yang masing-masing diskalakan secara tepat.
- Memperoleh 7.980 data tiga huruf per target
2-4. Data tulisan tangan aktual dari pencatatan
- Data diperoleh dari pencatatan target yang sebenarnya.
- Memperoleh 30 data tulisan tangan aktual per target
3. Hasil Pertama
Data latih : Data uji = 9 : 1
Data yang digunakan = Satu huruf(81) + Dua huruf(500) + Tiga huruf(500) + Tulisan tangan sebenarnya(30)
n.Epoch = 20, Ukuran batch = 50, Kecepatan pembelajaran = 0,01
Konfigurasi lapisan
- Hasil
- Kerugian=0,7819, Akurasi=0,72
- Hasil untuk data uji=0,6503
4. Hasil ke-2
Data latih : Data uji = 9 : 1
Data yang digunakan = Satu huruf(81) + Dua huruf(1000) + Tiga huruf(1300) + Tulisan tangan sebenarnya(30)
n.Epoch = 20, Ukuran batch = 150, Kecepatan pembelajaran = 0,04
Konfigurasi lapisan
- Hasil
- Kerugian=0,0397, Akurasi=0,9908
- Hasil untuk data uji=0,9360
5. Analisis hasil
Dibandingkan dengan hasil pertama, hasil kedua mengalami peningkatan yang signifikan. Saya rasa alasan mengapa hasil meningkat adalah sebagai berikut.
(5-1) Memperbanyak data yang digunakan untuk pembelajaran
- Pada upaya pertama, 1.111 data digunakan per target, dan pada upaya kedua, 2.411 data digunakan, yang berarti lebih dari dua kali lipat.
- Karena pembelajaran dan evaluasi dilakukan melalui lebih banyak data, karakteristik tulisan tangan target yang lebih halus dapat ditangkap.
(5-2) Perubahan pada lapisan jaringan saraf tiruan
- Pada percobaan kedua, ukuran topeng konvolusi dan ukuran pengumpulan diubah.
- Ukuran topeng konvolusi diperkecil menjadi lebih kecil dari sebelumnya untuk menangkap karakteristik tulisan tangan yang sangat halus
- Mengurangi hilangnya karakteristik tulisan tangan dalam proses pembelajaran dengan mengurangi ukuran penggabungan.
- Selain itu, untuk memuat lebih banyak informasi tentang tulisan tangan sebagai parameter, jumlah node yang terhubung penuh ditingkatkan dari 128 menjadi 256
(5-3) Peningkatan ukuran batch dan kecepatan pembelajaran