Docotel Official Blog
ANPR: Mendeteksi Lokasi Pelat Nomor 1

ANPR: Mendeteksi Lokasi Pelat Nomor

Artikel ini merupakan kelanjutan dari artikel sebelumnya mengenai automatic license plate recognition. Pada tulisan kali ini dibahas lebih detail mengenai tehnik yang kami gunakan untuk mendeteksi lokasi pelat nomor pada gambar ataupun video.

Pada bulan Januari 2018, dalam meeting besar awal tahun group Docotel (IT Solution and System Integrator; funded by Indonusa Dwitama as early investor of various startup such as Tokopedia), saya mempresentasikan inisiasi project computer vision sebagai salah satu produk awal Mahapatih. Setelah presentasi selesai, ada challenge yang disampaikan oleh bos divisi Sales group Docotel mengenai inisiasi tersebut.

Beliau menyampaikan bahwa teknologi computer vision sudah ada sejak lama. Produk-produk untuk face recognitionlicense plate recognition, dan object detection sudah menjamur. Pertanyaannya, kenapa kita harus membuat hal serupa? Reinventing the wheels?!

Ada beberapa alasan, salah satunya adalah Indonesia merupakan negara yang besar. Sangat kompleks. Apabila hanya mengandalkan produk-produk dari luar negeri maka hasilnya tidak akan optimal. Produk-produk tersebut dibuat diluar Indonesia dan umumnya dibuat dengan “asumsi”. Contohnya dalam hal mengenali pelat nomor kendaraan, data-data yang digunakan adalah data-data dari luar Indonesia. Mulai dari jenis huruf (font), warna pelat nomor kendaraan, jarak antar karakter, hingga asumsi bahwa semua pelat nomor di Indonesia mengikuti aturan baku yang diberlakukan pemerintah.

Pada kenyataannya asumsi-asumsi di atas banyak tidak tepat. Produk-produk tersebut masuk ke Indonesia sebagai produk jadi, tidak mudah untuk melakukan kustomisasi apabila ada hal-hal yang butuh penyesuaian dengan kondisi lokal di Indonesia. Meminta developer produk tersebut memodifikasi produk-nya agar sesuai dengan keinginan client di Indonesia biasanya bukan hal yang mudah. Akibatnya yang sering terjadi adalah saat PoC / demo akurasi produk-produk computer vision di atas 90% (karena menggunakan data yang diperuntukan demo) namun saat sudah di implementasikan dan berjalan akurasi yang sebenarnya hanya dibawah 50%.

Ada banyak sekali pihak yang membutuhkan teknologi computer vision di Indonesia, mereka membutuhkan dukungan tim developmet yang mumpuni agar dapat menyesuaikan requirement setiap pihak yang membutuhkan.

Untuk itulah kita harus memulai langkah untuk mengembangkan produk tersebut secara mandiri.

Lokasi Pelat Nomor

Ada dua sumber data yang umum digunakan oleh produk computer vision: gambar dan video.

Video sebenarnya adalah kumpulan data gambar yang sequential, sehingga apabila kita bisa mengaplikasikan skenario computer vision pada sebuah file gambar maka tidak sulit untuk mengaplikasikan skenario tersebut pada file video.

Pada kasus pengenalan pelat nomor kendaraan, secara garis besar ada 2 hal yang harus dilakukan oleh mesin (komputer):

  1. Mencari lokasi pelat nomor dalam gambar
  2. Mendeteksi / mengenali angka dan huruf pada pelat nomor tersebut

Pada artikel ini kita akan bahas metode yang dipergunakan oleh poin no.1 di atas.

Cascading Classifiers

Coba perhatikan contoh gambar di bawah ini

ANPR: Mendeteksi Lokasi Pelat Nomor 2
Contoh gambar dengan pelat nomor kendaraan

Bagi kita — manusia, mudah saja untuk dengan cepat menunjukan bagian lokasi pelat nomor kendaraan pada gambar di atas. Namun bagaimana dengan komputer?

Oh iya, manusia juga tau pelat nomor tersebut karena sudah “dilatih” untuk mengenali bagian pelat nomor kendaraan. Coba tanya pada anak kecil usia 5 tahun misalnya, di mana lokasi pelat nomor pada gambar tersebut, apabila dia belum diajarkan sebelumnya maka dia tidak akan tau bagian mana yang dimaksud.

Proses yang sama harus diberikan kepada mesin / komputer. Struktur otak manusia berbeda dengan struktur “otak” komputer, oleh sebab itu cara mengajarkannya juga berbeda (walaupun pada beberapa metode seperti neural network memiliki kemiripan).

Salah satu tehnik yang kami pergunakan pada Matadewa adalah Cascading Classifiers. Informasi mengenai Cascading classifiers dapat dibaca pada wikipedia.

Cascading classifiers – Wikipedia
Cascading Classifiers are trained with several hundred “positive” sample views of a particular object and arbitrary…en.wikipedia.org

Cascading Classifiers are trained with several hundred “positive” sample views of a particular object and arbitrary “negative” images of the same size. After the classifier is trained it can be applied to a region of an image and detect the object in question.

Penjelasan mengenai cascading classifieres bagi orang awam, anggap saja cascading classifiers itu merupakan salah satu bagian dari struktur “otak” komputer yang dapat dilatih untuk mengenali bentuk suatu objek. Jadi apabila kita tunjukan gambar pelat nomor seperti di bawah ini secara terus menerus,

ANPR: Mendeteksi Lokasi Pelat Nomor 3
Pelat nomor kendaraan

Maka komputer akan belajar mengenali bentuk pelat nomor. Akan terbentuk suatu struktur “otak” yang dapat dipergunakan oleh komputer untuk kemudian mengenali objek pelat nomor kendaraan apabila berikutnya dia ditunjukan suatu gambar dengan pelat nomor.

Training Cascading Classifiers

Jadi bagaimana caranya melatih komputer untuk mengenali objek pelat nomor kendaraan? Kita harus men-supply komputer dengan ragam bentuk pelat nomor kendaraan. Pada proses training / pelatihan tersebut, kita harus men-supply 2 jenis sumber data: Positif, dan Negatif. Positif berarti objek pelat nomor kendaraan, sedangkan Negatif berarti objek lain di luar pelat nomor kendaraan.

Komponen positif dan negatif dibutuhkan agar komputer dapat mengenali lebih tepat mana pelat nomor dan mana yang bukan.

ANPR: Mendeteksi Lokasi Pelat Nomor 4
Contoh data “negatif”

Untuk sumber data positif kita juga perlu melakukan proses yang disebut sintesisasi, yaitu merubah posisi objek pelat nomor kendaraan dengan cara merotasi 180°, melakukan mirroring, menambahkan efek blur, menambahkan beragam kotoran yang biasa disebut “noisy”, dsb.

ANPR: Mendeteksi Lokasi Pelat Nomor 5
Sintesisasi sumber data “positif”

Untuk apa melakukan sintesisasi data di atas? Untuk memperkaya referensi objek yang dapat dipelajari oleh komputer, sehingga apabila ada objek pelat nomor kendaraan di mana pada gambar tidak terlalu jelas karena blur misalnya, maka komputer tetap dapat mengenali bentuk objek tersebut sebagai objek pelat nomor kendaraan.

Pada prakteknya, memproduksi sumber data yang dapat digunakan untuk proses training ini secara programming sangat mudah.

ANPR: Mendeteksi Lokasi Pelat Nomor 6
Flip
ANPR: Mendeteksi Lokasi Pelat Nomor 7
Rotate
ANPR: Mendeteksi Lokasi Pelat Nomor 8
Noise + Rotate + Flip

Dari 50 sumber gambar pelat nomor kendaraan, misalnya, dengan proses sintesisasi dapat menghasilkan total variasi hingga 1,250. Proses sintesisasi ini sangat bergantung pada kreativitas masing-masing, dan juga disesuaikan dengan kondisi sebenarnya di lapangan.

Pada tahap ini, kita sudah bisa melihat betapa pentingnya mengembangkan produk computer vision sesuai kondisi di Indonesia, bukan? Karena kita bisa memikirkan kemungkinan-kemungkinan apa saja yang mungkin terjadi pada pelat nomor kendaraan di Indonesia sehingga bisa kita tambahkan dalam proses training mesin (Machine Learning).

Viola-Jones

Apa itu algoritma Viola-Jones? Berikut ini informasi dari Wikipedia,

The Viola–Jones object detection framework is the first object detection framework to provide competitive object detection rates in real-time proposed in 2001 by Paul Viola and Michael Jones.

Algortima Viola-Jones awalnya dipergunakan sebagai pendeteksi objek wajah pada fitur face recognition, namun algoritma tersebut dapat dipergunakan pada objek selain wajah.

Untuk training pelat nomor kendaraan, kita melatih cascade classifier menggunakan algoritma Viola-Jones dengan memasukan gambar-gambar “positif” dan “negatif” di atas sebagai data sample. Pada akhir proses, akan dihasilkan sebuah output yang disebut “cascade_plates.xml”. Sebelumnya saya sempat menyebutkan “bagian struktur otak komputer” yang memahami bentuk objek pelat nomor kendaraan, nah, “cascade_plates.xml” inilah yang saya maksud sebagai struktur otak komputer tersebut.

Selanjutnya, kita akan test dengan memberikan gambar pelat nomor kendaraan sebagai uji coba dimana pelat nomornya tidak termasuk dalam pelat nomor yang dilatihkan sebelumnya (karena tujuan kita adalah mesin dapat mengenali “bentuk” pelat nomor kendaraan),

ANPR: Mendeteksi Lokasi Pelat Nomor 9

Uji coba pengenalan objek pelat nomor kendaraan

Terlihat bahwa komputer dapat mengenali lokasi pelat nomor kendaraan. Namun ternyata ada tiga bagian yang terdeteksi sebagai pelat nomor kendaraan, dimana dua di antaranya salah. Istilah untuk kondisi ini biasa disebut sebagai “false positives”, yaitu terindikasi sebagai objek pelat nomor kendaraan (positives) padahal salah (false).

Mengapa terjadi false positives? Ada beberapa alasan, namun yang perlu diperhatikan adalah kita harus menyaring (filter) false-positives tersebut sehingga komputer benar-benar menunjukan dengan tepat bagian pelat nomor kendaraan. Kesalahan pada machine learning adalah hal yang lumrah, penyelesaian umumnya ada dua: pertama, memperbaiki sumber data yang dipergunakan, ataupun memperbaiki proses pelatihan komputer-nya, dan yang kedua, mereduksi kesalahan tersebut melalui metode-metode yang lebih advanced dan “manual”.

Filtering False Region

Untuk menyaring false-positives pada area pelat nomor kendaraan, maka secara garis besar dilakukan proses berikut ini:

  • Gambar objek dikonversi ke ukuran standar

ANPR: Mendeteksi Lokasi Pelat Nomor 10

  • Menentukan warna latar belakang (background) dari pelat nomor (kuning atau hitam)
  • Gambar objek dikonversi ke dalam format grayscale

ANPR: Mendeteksi Lokasi Pelat Nomor 11

  • Mengaplikasikan adaptive filtering

ANPR: Mendeteksi Lokasi Pelat Nomor 12

  • Mencari kontur objek (kontur dari area berwarna putih pada gambar)
  • Mencari area persegi dari objek-objek yang berwarna putih sesuai dengan parameter jarak tertentu dan rasio jarak tepi antar persegi. Apabila tes kontur tersebut hasilnya positif maka dapat dipastikan objek didalam persegi merupakan huruf atau angka
  • Area di mana di dalamnya terdapat banyak deretan angka dapat disimpulkan merupakan objek pelat nomor, sisanya berarti bukan objek pelat nomor (false positive)
  • Berikut ini contoh dari pemrosesan 3 area yang terindikasi sebagai objek pelat nomor setelah dilakukan adaptive filtering dan mencari bagian-bagian persegi dari objek-objek dalam area jarak tertentu

ANPR: Mendeteksi Lokasi Pelat Nomor 13

Menyaring objek pelat nomor false positive. Satu merupakan objek pelat nomor, sisanya salah

Setelah dilakukan algoritma untuk menyaring false region maka hasilnya sekarang menjadi jauh lebih akurat

ANPR: Mendeteksi Lokasi Pelat Nomor 14

Akurasi deteksi lokasi pelat nomor pada gambar mendekati 99%

More and More Pre-Processing Technique

Setelah lokasi objek pelat nomor didapatkan maka proses dilanjutkan dengan pengenalan angka dan huruf, inilah proses inti dari Automatic Number Plate Recognition.

Namun kita bisa lihat bahwa sebelum proses pembacaan angka dan huruf dimulai maka dibutuhkan beberapa proses lain (pre-processing) agar proses pengenalan menjadi lebih akurat.

Bahkan sebelum proses pengenal angka dan huruf dimulai butuh beberapa pre-processing lainnya seperti membetulkan posisi pelat nomor kendaraan agar tidak miring dengan menggunakan metode histogram (horizontal dan vertikal).

ANPR: Mendeteksi Lokasi Pelat Nomor 15

Merotasi objek pelat nomor dan menghitung pixel histogram

ANPR: Mendeteksi Lokasi Pelat Nomor 16

Meluruskan objek secara horizontal

ANPR: Mendeteksi Lokasi Pelat Nomor 17

Meluruskan objek secara vertikal

ANPR: Mendeteksi Lokasi Pelat Nomor 18

Objek pelat nomor sudah tegak lurus

Melalui pre-processing tersebut maka kondisi pelat nomor yang posisinya ketika ditangkap kamera tidak standar bisa dibuat menjadi lebih standar sehingga mudah untuk dibaca oleh proses pengenalan angka dan huruf nantinya.

Locating License Plate Object in Video

Berikut ini salah satu showcase di mana prototype Matadewa berusaha mendeteksi lokasi pelat nomor kendaraan berdasarkan video stream yang diambil dari kamera yang di install di depan kantor (Docotel World)

<iframe width=”560″ height=”315″ src=”https://www.youtube.com/embed/AAmtkbn_0Po” frameborder=”0″ allow=”autoplay; encrypted-media” allowfullscreen></iframe>

Bisa terlihat bahwa pelat nomor khususnya motor masih belum semua bisa dideteksi dengan baik. Hal ini disebabkan oleh cukup banyak alasan salah satunya karena pelat nomor motor ukurannya kecil secara pixel (dan banyak yang bengkok) sehingga lebih sulit untuk dideteksi.

Ini merupakan salah satu tantangan bagi tim kami untuk memoles algoritma Matadewa sehingga menjadi lebih akurat lagi ?

It’s fun, really really fun ?. Banyak sekali teknik yang dapat kita aplikasikan pada implementasi ANPR. Kondisi di Indonesia yang sangat kompleks pun menambah tantangan bagi kita terutama yang hobi sekali memecahkan masalah-masalah kompleks melalui software engineering.

Kita belum masuk pada bagian pengenalan angka dan huruf namun sudah cukup banyak langkah-langkah yang harus dilakukan, dan pada perjalanannya nanti terutama ketika sudah di-deploy pada client tentu akan lebih banyak lagi feedback yang akan kita terima baik berupa bugs ataupun change request, tentu saja…lagi-lagi kembali pada kebutuhan yang disesuaikan dengan kondisi lokal di negara Indonesia tercinta.

Software akan selalu butuh perubahan, perlu di-tunning agar akurasinya bisa semakin meningkat untuk ragam use-case di Indonesia.

By end of the day, we would say that, our engineers are here for them. Sitting in Jakarta, or other area remotely, working together to support various needs of our customer.

Artikel asli: https://medium.com/mahapatih-sibernusa-teknologi/anpr-mendeteksi-lokasi-plat-nomor-8f22f08edadd

Tentang Docotel

Docotel 4.0 meliputi tim yang berdedikasi, berpengalaman, dan ahli dalam menyediakan produk dan solusi yang bernilai tinggi di semua industri.
Kami hadir dengan visi mengatasi permasalahan sehingga dapat menciptakan pengalaman terbaik bagi klien.

armitatyas

armitatyas

Add comment

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.

Most discussed