ANPR menggunakan RoR & React Native

Danny Krastev, Mirabbos Umarov, Ekaterina Menshenina, Universitas ITMO, Sistem komunikasi info, Ilmu Komputer. 2019

gambar

Abstrak


Karena peningkatan volume kendaraan yang tak berkesudahan di sekitar kehidupan kita sehari-hari, Automatic Number Plate Recognition (ANPR), telah menjadi solusi yang berkembang untuk mengelola dan memantau kendaraan di seluruh dunia untuk menegakkan peraturan dan mencegah kegiatan kriminal, seperti pelanggaran parkir, lampu merah pelanggaran, ngebut, dan pencurian kendaraan. Meskipun sudah ada berbagai metode dan perpustakaan umum dan pribadi yang telah dikembangkan dan digunakan untuk mencapai pengakuan otomatis nomor plat mobil di seluruh dunia, belum ada banyak fokus untuk membuat kemajuan menuju solusi ANPR lintas platform yang mendukung semua plat nomor kendaraan di seluruh dunia. Makalah ini memperkenalkan proyek Plate Vision, sebuah aplikasi web dan seluler yang dibangun di atas Ruby on Rails and React Native, yang bertujuan untuk berfungsi sebagai platform ANPR alternatif yang mendukung deteksi semua plat nomor di seluruh dunia dengan memanfaatkan berbagai sumber terbuka optical character recognition (OCR) perpustakaan dan membuat optimalisasi efisiensi.

Kata-kata dan frasa kunci: ruby, rel, asli reaksi, pengenalan plat, ekstraksi daerah plat, pengenalan karakter optik (OCR), ANPR.

1. Pendahuluan


Karena fungsionalitas inti dan kinerja Automatic Number Plate Recognition (ANPR) didasarkan pada penelitian bertahun-tahun yang menggunakan kombinasi teknik pengenalan karakter optik (OCR) yang berbeda pada gambar untuk menemukan dan membaca plat nomor pada kendaraan, dan beragamnya solusi sudah ada, tidak perlu melalui pengembangan luar dan pelatihan yang diperlukan untuk sepenuhnya menciptakan kembali fungsi OCR itu sendiri, oleh karena itu tujuan dari makalah ini adalah untuk menyajikan contoh bagaimana menggabungkan dan mengoptimalkan solusi OCR dan ANPR yang ada di untuk mengembangkan Plate Vision, platform ANPR unik yang dapat bekerja pada perangkat apa pun menggunakan kamera, kendaraan, lokasi apa pun.

Sisa makalah ini dilanjutkan sebagai berikut. Bagian 2 menyajikan beberapa solusi dan dependensi yang ada. Bagian 3 menjelaskan backend Rails, frontend, dan React native integrasi. Bagian 4 menjelaskan optimasi dan pengujian ANPR serta bagaimana Plate Vision dibangun, dihosting, dan dipelihara secara online, sementara Bagian 5 menyimpulkan makalah ini.

2. Ketergantungan OCR


Meskipun banyak perusahaan teknologi raksasa seperti Google, Amazon, Microsoft, dan IBM menyediakan API visi cloud mereka sendiri yang memiliki kemampuan untuk menganalisis gambar dan menandai objek dan fitur tertentu menggunakan algoritma yang telah bertahun-tahun peneliti mereka kembangkan dan latih, mereka adalah solusi berbayar, yang dapat dengan cepat menjadi mahal ketika mencoba untuk menskalakan atau bahkan mendemonstrasikan platform seperti ANPR kepada sejumlah pengguna, oleh karena itu menggunakan kerangka kerja sumber terbuka dan perpustakaan tidak hanya merupakan solusi yang lebih baik secara ekonomi tetapi juga solusi yang menyediakan kemampuan yang diperlukan untuk memodifikasi dan mengontrol algoritma deteksi ANPR.

Dari semua berbagai solusi yang ada saat ini, OpenALPR adalah satu-satunya yang open source dan memberikan kemampuan untuk memodifikasi dan mengontrol algoritma deteksi ANPR untuk negara tertentu, itulah sebabnya dipilih untuk digunakan untuk Plate Vision.

OpenALPR juga memiliki 2 dependensi utama, OpenCV dan Tesseract OCR, yang berfungsi sebagai dasar untuk melakukan ANPR. Yang terbaik adalah menjaga jumlah dependensi yang dimiliki platform seminimal mungkin untuk kinerja terbaik, namun dengan proyek apa pun yang mengintegrasikan OCR khusus, pasti ada banyak dependensi besar [1].

3. Platform


Platform Plate Vision dibangun menggunakan kerangka kerja Ruby on Rails and React Native, dan oleh karena itu terdiri dari 2 aplikasi individual, aplikasi mobile React Native, dan aplikasi Rails yang berfungsi sebagai situs web utama dan backend untuk aplikasi.

Rails adalah model-view-controller (MVC) dan kerangka kerja aplikasi web sisi-server yang ditulis dalam Ruby, yang menyediakan struktur default untuk database, layanan web, dan halaman web. Ini mendorong dan memfasilitasi penggunaan standar web seperti JSON atau XML untuk transfer data, dan HTML, CSS dan JavaScript untuk tampilan dan antarmuka pengguna [2].

React Native adalah kerangka kerja aplikasi seluler open-source yang dibuat oleh Facebook yang memungkinkan penulisan kode JavaScript yang dapat dikonversi dan diinterpretasikan ke kode asli, sehingga memungkinkan kompilasi aplikasi lintas platform yang berfungsi dengan mudah untuk Android, iOS, dan UWP menggunakan satu bahasa tunggal [ 3].

OpenALPR adalah perpustakaan open source Automatic License Plate Recognition yang ditulis dalam C ++ dengan binding dalam C #, Java, Node.js, dan Python. Perpustakaan menganalisis gambar dan aliran video untuk mengidentifikasi plat nomor. Outputnya adalah representasi teks dari karakter plat nomor [1].

3.1 backend


Backend platform terdiri dari berbagai permata (perpustakaan) dan pengontrol rel yang masing-masing menangani permintaan dari situs web dan aplikasi seluler.

Daftar berikut dan menjelaskan permata yang digunakan di backend:

  • ALPR - digunakan untuk memanggil perintah openALPR
  • Rancang - adalah solusi otentikasi fleksibel untuk Rails berdasarkan Warden
  • Rancang token auth - Otentikasi berbasis token yang sederhana, multi-klien, dan aman untuk Rails.
  • Rmagick - antarmuka antara bahasa pemrograman Ruby dan pustaka pemrosesan gambar ImageMagick
  • Rolify - pustaka Peran sederhana tanpa ruang lingkup penegakan otorisasi yang mendukung objek sumberdaya.

Daftar berikut dan menjelaskan pengontrol aplikasi situs web:

  • Pengontrol aplikasi - adalah pengontrol utama yang berisi metode, yang dapat dieksekusi di seluruh situs web.
  • Pengontrol publik - adalah pengontrol yang diwarisi (form Pengontrol aplikasi) yang menangani permintaan dari halaman publik di situs web.
  • Pengontrol pengguna - menangani permintaan dari halaman akun pengguna.
  • Pengontrol sesi - adalah pengontrol otentikasi pengguna.
  • Pengontrol kendaraan - menangani pembuatan, pengeditan, dan penghapusan kendaraan.

Berikut ini daftar dan menjelaskan pengontrol aplikasi yang berfungsi sebagai JSON API yang tenang dan menangani permintaan Aplikasi Mobile Asli Bereaksi:

  • Pengontrol alpr - berisi metode untuk menganalisis gambar untuk menemukan nomor plat.
  • Pengontrol perangkat - berisi metode untuk menyimpan informasi perangkat pengguna ke Database.
  • Pengontrol lokasi - menyimpan data lokasi perangkat pengguna ke database.
  • Pengontrol pengguna - menangani otorisasi / otentikasi pengguna.
  • Pengontrol kendaraan - menangani metode objek kendaraan (membuat, mengedit, menghapus) dan menyimpan data kendaraan ke dalam Database.

3.2 Frontend (Situs Web)


Bagian depan platform dikembangkan menggunakan beberapa permata rel serta Bootstrap, jQuery dan JavaScript khusus jika diperlukan.

Bootstrap adalah kerangka front-end sumber terbuka dan gratis untuk merancang situs web dan aplikasi web. Ini berisi templat desain berbasis HTML dan CSS untuk tipografi, formulir, tombol, navigasi, dan komponen antarmuka lainnya, serta ekstensi JavaScript opsional. [4]
jQuery adalah pustaka JavaScript lintas-platform sumber terbuka dan gratis yang dirancang untuk menyederhanakan skrip HTML sisi klien. [5]

Daftar berikut dan menjelaskan permata yang digunakan di frontend:

  • Simple Form - meningkatkan penggunaan rel standar saat ini [6]
  • Navigasi Sederhana - membantu membuat navigasi dinamis dengan mudah [7]
  • Rails Admin - menyediakan antarmuka admin dinamis untuk aplikasi [8]

    Berikut ini adalah daftar halaman situs utama dan deskripsinya:
  • Rumah - Halaman arahan utama untuk situs web
  • Indeks Kendaraan - Halaman tempat semua kendaraan dibuat terdaftar
  • Kendaraan Baru / Sunting - Halaman dengan formulir di mana kendaraan dibuat dan diedit, dan plat nomor dianalisis
  • Pameran Kendaraan - Halaman yang menunjukkan rincian tentang kendaraan yang disimpan khusus.
  • Daftar - Halaman di mana setiap pengguna tamu dapat membuat akun untuk platform
  • Masuk - Halaman tempat pengguna tamu dapat masuk ke platform
  • Akun pengguna - Halaman tempat pengguna dapat melihat dan mengedit detail tentang akun mereka
  • Lupa Kata Sandi - Halaman di mana pengguna dapat meminta untuk mengatur ulang kata sandi mereka menggunakan email

3.3 Bereaksi Aplikasi Asli (Seluler)


Industri aplikasi saat ini dikuasai oleh dua raksasa, yaitu Android dan iOS. Untuk perusahaan dan pengembang, penting untuk mengirimkan produk ke mayoritas pengguna, sehingga kebutuhan untuk mengadaptasi kedua platform. Platform melibatkan cara mereka sendiri mengembangkan aplikasi dan hanya memiliki kemiripan kecil antara satu sama lain. Ini telah menjadi masalah yang dihadapi dan diatasi oleh industri aplikasi dengan harus mempekerjakan staf yang memiliki pengetahuan baik di Android atau iOS, atau keduanya, untuk membangun dua aplikasi terpisah yang pada gilirannya membutuhkan pemeliharaan paralel [9].

Kerangka kerja lintas platform yang menjembatani kesenjangan ini telah datang dan pergi, dengan tidak berhasil membuat aplikasi dengan standar visual atau fungsional yang sama seperti yang diberikan kerangka kerja asli. Namun, React Native berjanji untuk memberikan pengalaman yang sepenuhnya asli dengan menggunakan hanya satu basis kode. [10]. Bereaksi asli memerlukan dan berjalan pada platform NodeJS. Node.js adalah lingkungan run-time JavaScript sumber terbuka dan lintas platform yang mengeksekusi kode sisi server JavaScript. [11]

Untuk memahami aplikasi React Native, perlu mengetahui tentang beberapa konsep dasar React, seperti BEJ, keadaan, alat peraga, dan komponen. JSX - adalah ekstensi sintaks mirip XML ke ECMAScript tanpa semantik yang ditentukan. Komponen - adalah blok bangunan dari setiap aplikasi asli Bereaksi dan khas aplikasi asli Bereaksi akan memiliki banyak ini. Sederhananya, komponen adalah kelas JavaScript atau fungsi yang secara opsional menerima input yaitu properti (alat peraga) dan mengembalikan elemen Bereaksi yang menjelaskan bagaimana bagian UI (Antarmuka Pengguna) akan muncul.

Ada dua jenis data yang mengontrol komponen:

  1. Alat peraga: tidak dapat diubah dan disetel oleh induk dan diperbaiki sepanjang masa pakai komponen.
  2. Status: bisa berubah. Ini berarti bahwa keadaan dapat diperbarui di masa depan sementara alat peraga tidak bisa. Status dapat diinisialisasi dalam konstruktor, dan kemudian dipanggil oleh setState ketika itu perlu diubah.

Secara default Bereaksi asli menyediakan sejumlah komponen bawaan, yang dapat digunakan dalam berbagai tujuan. Selain itu, pengembang tidak terbatas pada komponen dan API yang dibundel dengan React Native karena ada banyak paket berbeda (pustaka) yang telah dibuat oleh banyak pengembang lain untuk mempercepat pengembangan untuk yang lain.

Daftar berikut dan menjelaskan paket-paket yang digunakan dengan nodeJS untuk mengembangkan aplikasi Asli Bereaksi:

  • React - Pustaka JavaScript yang deklaratif, efisien, dan fleksibel untuk membangun antarmuka pengguna. [12]
  • React Native - Kerangka kerja untuk membangun aplikasi asli dengan React. [13]
  • Expo - Seperangkat alat, perpustakaan, dan layanan yang memungkinkan pembuatan aplikasi iOS dan Android asli dengan menulis JavaScript. [14]
  • Redux - Wadah keadaan yang dapat diprediksi untuk aplikasi JavaScript. [15]
  • Axios - Klien HTTP berbasis janji untuk browser dan node.js [16]
  • Native Base - Komponen UI lintas platform penting untuk React Native [17]
  • React Native Navigation - menyediakan navigasi platform asli di iOS dan Android untuk aplikasi React Native [18]
  • React Form Builder - pustaka generator bentuk sederhana untuk bereaksi. [19]
  • Il8next - Kerangka kerja internasionalisasi untuk browser atau lingkungan javascript lainnya (mis. Node.js) [20]

Berikut ini adalah daftar halaman aplikasi dan deskripsinya:

  • Rumah - Halaman pendaratan aplikasi utama untuk aplikasi
  • Tentang - Halaman aplikasi yang menjelaskan tentang platform
  • Mendaftar - Halaman aplikasi tempat pengguna tamu dapat membuat akun untuk platform
  • Masuk - Halaman Aplikasi tempat pengguna tamu dapat masuk ke platform
  • Indeks Kendaraan - Halaman aplikasi tempat semua kendaraan dibuat terdaftar
  • Kendaraan Baru / Edit - Halaman aplikasi dengan formulir di mana kendaraan dibuat dan diedit, dan plat nomor dianalisis
  • Pameran Kendaraan - Halaman aplikasi yang menunjukkan rincian tentang kendaraan yang disimpan khusus.

4. Pengujian & Hosting


Sementara tes awal dan penelitian untuk platform ini didasarkan pada plat nomor Rusia, tujuan akhir platform Plate Vision adalah untuk dapat membaca plat nomor dari seluruh dunia, dan karena OpenALPR telah dilatih untuk negara-negara populer seperti Amerika Serikat dan Eropa , pada awalnya diasumsikan bahwa itu juga akan bekerja dengan baik dengan nomor plat Rusia, karena beberapa plat Eropa mirip dengan yang Rusia.

Namun, tes awal menggunakan konfigurasi OpenAlpr Eropa default pada plat nomor Rusia, menunjukkan bahwa walaupun OpenAlpr mampu mengidentifikasi dan mengenali sejumlah plat nomor Rusia, penyesuaian lebih lanjut dari OpenAlpr diperlukan untuk mendapatkan hasil yang dapat diandalkan dan konsisten. Untuk meningkatkan analisis pelat Rusia tanpa pelatihan tambahan menggunakan OpenAlpr, beberapa konfigurasi khusus dibuat, diturunkan dan dioptimalkan dari konfigurasi Eropa dengan modifikasi spesifik berdasarkan berbagai gambar uji yang berisi mobil dengan pelat lisensi Rusia.

gambar

Walaupun platform ini telah dioptimalkan untuk menghasilkan plat nomor Rusia terbaik, platform ini sudah mendukung banyak gambar mobil dan plat dari seluruh dunia karena menjalankan beberapa konfigurasi yang dimodifikasi dari perpustakaan OpenAlpr, yang mengarah ke banyak kemungkinan hasil, dan pada akhirnya menentukan banyak hasil terbaik berdasarkan pencocokan pola pelat wilayah dunia dan akurasi pembacaan.

Seluruh platform di-host menggunakan layanan cloud Heroku dan diperbarui dan dikelola melalui sistem kontrol versi git. Namun, penting untuk dicatat bahwa, menyiapkan dependensi spesifik seperti OpenAlpr untuk bekerja di lingkungan server cloud seperti Heroku sulit karena pembatasan, dan tantangan yang disajikan oleh lingkungan server cloud Heroku. Oleh karena itu, layanan Docker juga digunakan bersama dengan Heroku untuk mengatasi kesulitan pengaturan dan memastikan bahwa cloud OpenAlpr dan semua dependensinya berfungsi sama dengan yang ada di lingkungan pengembangan lokal [1].

5. Kesimpulan


Kesimpulannya, tujuan dari makalah ini adalah untuk menghadirkan platform Plate Vision serta menjelaskan 3 komponen fungsi utamanya dan bagaimana ia berencana untuk mengoptimalkan ANPR sambil tetap mendukung perangkat, kamera, kendaraan, lokasi di masa depan. Meskipun versi platform saat ini hanya mengimplementasikan dan menggunakan OpenAlpr dengan berbagai konfigurasi untuk meningkatkan Pengenalan Plat Nomor Otomatis, masih ada berbagai cara untuk mencapai ANPR, dan dengan penelitian, pengujian, dan eksperimen lebih lanjut, platform Plate Vision berharap untuk menggabungkan teknik dan metode unik yang memanfaatkan visi sumber terbuka terbaik dan perpustakaan OCR yang tersedia untuk menciptakan solusi ANPR internasional yang benar-benar optimal.

Referensi


Referensi
1. Dokumentasi OpenALPR - http://doc.openalpr.com/
2. Dokumentasi Ruby on Rails - https://guides.rubyonrails.org/
3. Bereaksi Dokumentasi Asli - https://facebook.imtqy.com/react-native/docs/getting-started.html
4. Dokumentasi Bootstrap - https://getbootstrap.com/
5. Dokumentasi JQuery - https://jquery.com/
6. Dokumentasi Formulir Sederhana - https://github.com/plataformatec/simple_form
7. Dokumentasi Navigasi Sederhana - https://github.com/codeplant/simple-navigation
8. Rails Admin Documentation - https://github.com/sferik/rails_admin
9. Axelsson Oscar, Carlstrom Fredrik [Penargetan Evaluasi Bereaksi Asli dalam Perbandingan dengan Pengembangan Ponsel Asli] - https://lup.lub.lu.se/student-papers/search/publication/8886469
10. Hansson Niclas, Vidhall Tomas [Efek pada kinerja dan kegunaan untuk pengembangan aplikasi lintas platform menggunakan React Native] - http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A946127&dswid=8626
11. NodeJS - https://nodejs.org
12. ReactJS - https://reactjs.org/
13. Bereaksi Asli - https://facebook.imtqy.com/react-native/
14. Expo - https://expo.io/
15. Redux - http://redux.js.org/
16. Axios - https://github.com/axios/axios
17. Basis Asli - https://nativebase.io/
18. Bereaksi Navigasi Asli - https://wix.imtqy.com/react-native-navigation
19. React Form Builder - https://github.com/bietkul/react-native-form-builder
20. Il8next - https://www.i18next.com/

Source: https://habr.com/ru/post/id453190/


All Articles