Aplikasi scanner untuk membaca informasi dari KTP Indonesia sebenarnya sudah sangat banyak dan sudah terhubung ke API. Pada postingan kali ini, kita akan sedikit membahas mengenai model deep learning yang bisa kita gunakan untuk mendeteksi lokasi sebuah NIK berbentuk bounding box. Model deep learning yang robust untuk tugas tersebut yaitu RCNN.
RCNN (Regional Convolutional Neural Network) adalah salah satu pendekatan dalam deep learning yang digunakan untuk mendeteksi objek dalam sebuah gambar. Tujuannya adalah menemukan dan mengidentifikasi objek dengan akurasi tinggi. Saat ini ada 2 jenis improvement dari RCNN standar yaitu Fast RCNN dan Faster RCNN
Untuk mengatasi kelemahan RCNN, dikembangkan varian yang lebih cepat:
- Fast RCNN: Memproses seluruh gambar dengan CNN terlebih dahulu, lalu mengekstrak fitur untuk semua region proposal sekaligus.
- Faster RCNN: Menggunakan Region Proposal Network (RPN) untuk menghasilkan region proposal secara lebih efisien.
RCNN sendiri sudah ada di pytorch dengan beragam model https://pytorch.org/vision/main/models/faster_rcnn.html yaitu
fasterrcnn_resnet50_fpn
: Faster R-CNN model with a ResNet-50-FPN backbone from the Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks paper.fasterrcnn_resnet50_fpn_v2
: Constructs an improved Faster R-CNN model with a ResNet-50-FPN backbone from Benchmarking Detection Transfer Learning with Vision Transformers paper.fasterrcnn_mobilenet_v3_large_fpn
: Constructs a high resolution Faster R-CNN model with a MobileNetV3-Large FPN backbone.fasterrcnn_mobilenet_v3_large_320_fpn
:Low resolution Faster R-CNN model with a MobileNetV3-Large backbone tuned for mobile use cases.
Namun bila kalian masih bingung untuk cara pelatihannya, kalian bisa menggunakan versi mudah nya yaitu lightning yang merupakan versi turunan dari pytorch yang lebih mudah untuk pemula. https://lightning.ai/lightning-ai/studios/object-detection-with-pytorch-lightning
Font KTP Indonesia
Contents
Sekedar info saja mengenai jenis FONT KTP yang digunakan agak unik yaitu dengan nama OCR A Extended Font, kalian bisa download di https://cooltext.com/download-font-ocr+a+extended#google_vignette. Tujuan dari penggunaan jenis font tersebut sebenarnya untuk mempermudah dalam proses OCR karena sering dalam pada jenis font tertentu antar karakater angka 0 huruf O itu hampir mirip sehingga untuk jenis font OCR A Extended Font itu dapat dibedakan dengan mudah. Perhatikan tampilan font OCR A Extended berikut terhadap huruf latin
Perhatikan
- huruf 0 kecil dengan
- O besar, dan
- angka 0 mempunyai tampilan yang berbeda-beda
Biasanya jenis font diatas digunakan juga pada ID pasport internasional.
Model Deep Learning
Seperti yang sudah saya jelaskan kita butuh model deep learning untuk object detection sehingga kita bisa memilih fasterrcnn_resnet50_fpn. Model ini sangat robust bahkan untuk objek yang kecil-kecil dan mempunyai ukuran gambar input berbeda-beda. Hal ini sangat berbeda dengan YOLO yang mengharuskan input gambar harus berupa square biasanya minimal 600×600. Dataset yang akan kita gunakan nanti menggunakan format YOLO ya Belajar mengenai Format YOLO, Pascal VOC, dan COCO serta Trimap pada Dataset Deep Learning
Sebelum melangkah lebih jauh, kita perjelas disini yaitu
- Deteksi NIK yang dimaksud disini yaitu hanya mendeteksi bounding box nya tanpa ada proses OCR. Karena kalau udah ketemu NIK nya maka akan lebih mudah memproses khusus NIK tersebut via OCR dan menarik datanya via API.
- Database KTP saya comot dari https://github.com/YukaLangbuana/KTP-OCR
Tool Annotation
Untuk tools annotation nya menggunakan CVAT Tools Canggih Buat Anotasi Objek CVAT Computer Vision Annotation Tool – Deteksi NIK KTP Indonesia seperti berikut tampilan CVAT nya atau kalian bisa menggunakan roboflow
Format dataset di export dalam format YOLO
Proses Pelatihan Model Deep Learning untuk Deteksi NIK KTP Indonesia
Berikut hasil deteksi Bounding Box nya pada proses training nya dengan loss semakin turun.
Berikut ketika kita coba untuk melakukan prediksi lokasi NIK KTP
pada proses pelatihan juga menggunakan teknik augmentasi sehingga untuk gambar seperti berikut masih bisa dikenali
Selanjutnya OCR NIK Membuat Model OCR untuk membaca No KTP