Danny Krastev, Mirabbos Umarov, Ekaterina Menshenina, Université ITMO, Info communication Systems, Computer Science. 2019

Résumé
En raison de l'augmentation sans fin du volume de véhicules entourant notre vie quotidienne, la reconnaissance automatique des plaques d'immatriculation (ANPR) est devenue une solution évolutive pour gérer et surveiller les véhicules dans le monde entier afin d'appliquer les règles et de prévenir les activités criminelles, telles que les violations de stationnement, le feu rouge. violation, excès de vitesse et vol de véhicules. Bien qu'il existe déjà une variété de méthodes et de bibliothèques publiques et privées qui ont été développées et utilisées pour obtenir la reconnaissance automatique des numéros de plaques d'immatriculation des voitures dans le monde, il n'y a pas eu beaucoup d'attention à faire des progrès vers une solution ANPR multiplateforme qui prend en charge toutes les plaques d'immatriculation des véhicules dans le monde entier. Cet article présente le projet Plate Vision, une application Web et mobile basée sur Ruby on Rails et React Native, qui vise à servir de plate-forme ANPR alternative qui prend en charge la détection de toutes les plaques d'immatriculation dans le monde en utilisant diverses reconnaissance optique de caractères (OCR) open source. bibliothèques et optimisation de l'efficacité.
Mots et expressions clés: rubis, rails, react native, reconnaissance de plaque d'immatriculation, extraction de région de plaque, reconnaissance optique de caractères (OCR), ANPR.
1. Introduction
Étant donné que la fonctionnalité et les performances de base de la reconnaissance automatique des plaques d'immatriculation (ANPR) sont basées sur des années de recherche qui utilisent des combinaisons distinctes de techniques de reconnaissance optique de caractères (OCR) sur les images afin de trouver et de lire les plaques d'immatriculation sur les véhicules, et une variété de solutions existent déjà, il n'est pas nécessaire de passer par le développement et la formation externes nécessaires pour recréer entièrement la fonctionnalité OCR elle-même, donc l'objectif de ce document est de présenter un exemple de la façon de combiner et d'optimiser les solutions OCR et ANPR existantes dans afin de développer Plate Vision, une plate-forme ANPR unique qui peut fonctionner sur n'importe quel appareil en utilisant n'importe quelle caméra, véhicule, emplacement.
Le reste de l'article se déroule comme suit. La section 2 présente quelques solutions et dépendances existantes. La section 3 décrit le backend, le frontend et l'intégration native de React. La section 4 explique l'optimisation et les tests ANPR ainsi que la façon dont Plate Vision a été conçue, hébergée et maintenue en ligne, tandis que la section 5 conclut le document.
2. Dépendances OCR
Bien que de nombreux géants de la technologie d'entreprise tels que Google, Amazon, Microsoft et IBM fournissent leurs propres API de vision cloud qui ont la capacité d'analyser des images et de marquer certains objets et fonctionnalités à l'aide d'algorithmes qui ont mis des années à leurs chercheurs pour se développer et se former, ils sont des solutions payantes, qui peuvent rapidement devenir coûteuses lorsque vous essayez de faire évoluer ou même de démontrer une plate-forme telle que ANPR à n'importe quel nombre d'utilisateurs.Par conséquent, l'utilisation de cadres et de bibliothèques open source n'est pas seulement une meilleure solution sur le plan économique, mais aussi celle qui offre la capacité nécessaire pour modifier et contrôler les algorithmes de détection ANPR.
De toutes les différentes solutions qui existent actuellement, OpenALPR est la seule qui est open source et offre la possibilité de modifier et de contrôler ses algorithmes de détection ANPR pour des pays spécifiques, c'est pourquoi il a été choisi pour être utilisé pour Plate Vision.
OpenALPR a également 2 dépendances principales, OpenCV et Tesseract OCR, qui servent de base pour effectuer l'ANPR. Il est préférable de limiter au minimum le nombre de dépendances d'une plate-forme pour obtenir les meilleures performances, mais avec tout projet intégrant une OCR personnalisée, il existe forcément de multiples grandes dépendances [1].
3. Plateforme
La plateforme Plate Vision est construite à l'aide des frameworks Ruby on Rails et React Native, et est donc composée de 2 applications individuelles, l'application mobile React Native et l'application Rails qui sert de site Web principal et de backend pour l'application.
Rails est un modèle - vue - contrôleur (MVC) et un cadre d'application Web côté serveur écrit en Ruby, qui fournit des structures par défaut pour une base de données, un service Web et des pages Web. Il encourage et facilite l'utilisation de normes Web telles que JSON ou XML pour le transfert de données, et HTML, CSS et JavaScript pour l'affichage et l'interface utilisateur [2].
React Native est un cadre d'application mobile open source créé par Facebook qui permet d'écrire du code JavaScript qui peut être converti et interprété en code natif, permettant ainsi la compilation facile d'applications multiplateformes de travail pour Android, iOS et UWP en utilisant une seule langue [ 3].
OpenALPR est une bibliothèque open source de reconnaissance automatique de plaque d'immatriculation écrite en C ++ avec des liaisons en C #, Java, Node.js et Python. La bibliothèque analyse les images et les flux vidéo pour identifier les plaques d'immatriculation. La sortie est la représentation textuelle de tout caractère de plaque d'immatriculation [1].
3.1 backend
Le backend de la plateforme est composé de divers gemmes (bibliothèques) et contrôleurs de rails qui traitent respectivement les requêtes du site web et de l'application mobile.
La liste suivante décrit et décrit les gemmes utilisées dans le backend:
- ALPR - utilisé pour appeler les commandes openALPR
- Devise - est une solution d'authentification flexible pour Rails basée sur Warden
- Concevoir l'authentification par jeton - Authentification basée sur des jetons simple, multi-clients et sécurisée pour Rails.
- Rmagick - une interface entre le langage de programmation Ruby et la bibliothèque de traitement d'image ImageMagick
- Rolify - bibliothèque de rôles simple sans aucune application d'autorisation prenant en charge la portée de l'objet ressource.
Les listes suivantes décrivent et décrivent les contrôleurs d'application de site Web:
- Contrôleur d'application - est le contrôleur principal qui contient les méthodes, qui peuvent être exécutées sur tout le site Web.
- Contrôleur public - est un contrôleur hérité (contrôleur de formulaire) qui gère les demandes des pages publiques du site Web.
- Contrôleur d'utilisateurs - gère les demandes de la page de compte d'utilisateur.
- Contrôleur de sessions - est un contrôleur d'authentification d'utilisateur.
- Contrôleur de véhicules - gère la création, l'édition et la suppression de véhicules.
La liste suivante décrit et décrit les contrôleurs d'application qui servent d'API JSON reposante et gèrent les demandes d'application mobile native React:
- Contrôleur Alpr - contient des méthodes pour analyser l'image afin de trouver un numéro de plaque d'immatriculation.
- Contrôleur de périphériques - contient des méthodes pour enregistrer les informations de périphérique de l'utilisateur dans la base de données.
- Contrôleur d'emplacements - enregistre les données d'emplacement de la machine utilisateur dans la base de données.
- Contrôleur d'utilisateurs - gère l'autorisation / l'authentification des utilisateurs.
- Contrôleur de véhicules - gère les méthodes d'objet de véhicule (créer, modifier, supprimer) et enregistre les données du véhicule dans la base de données.
3.2 Frontend (site Web)
Le frontend de la plate-forme est développé en utilisant quelques rails gemmes ainsi que Bootstrap, jQuery et JavaScript personnalisé si nécessaire.
Bootstrap est un framework frontal gratuit et open source pour la conception de sites Web et d'applications Web. Il contient des modèles de conception HTML et CSS pour la typographie, les formulaires, les boutons, la navigation et d'autres composants d'interface, ainsi que des extensions JavaScript en option. [4]
jQuery est une bibliothèque JavaScript multiplateforme gratuite et open source conçue pour simplifier les scripts côté client de HTML. [5]
La liste suivante décrit et décrit les gemmes utilisées dans le frontend:
- Forme simple - améliore l'utilisation existante des formes de rails standard [6]
- Navigation simple - permet de créer facilement des navigations dynamiques [7]
- Rails Admin - fournit une interface d'administration dynamique pour l'application [8]
Voici une liste des principales pages du site et leur description: - Accueil - Page de destination principale du site Web
- Index des véhicules - Page où tous les véhicules créés sont répertoriés
- Véhicules Nouveau / Modifier - Page avec formulaire où le véhicule est créé et édité, et la plaque d'immatriculation est analysée
- Exposition de véhicule - Page qui affiche les détails d'un véhicule enregistré spécifique.
- Inscription - Page où tout utilisateur invité peut créer un compte pour la plateforme
- Connexion - Page sur laquelle tout utilisateur invité peut se connecter à la plateforme
- Compte d'utilisateur - Page où l'utilisateur peut voir et modifier les détails de son compte
- Mot de passe oublié - Page où tout utilisateur peut demander à réinitialiser son mot de passe par e-mail
3.3 React Native Application (Mobile)
L'industrie des applications est aujourd'hui dirigée par deux géants, à savoir Android et iOS. Pour les entreprises et les développeurs, il est essentiel de livrer un produit à la majorité des utilisateurs, d'où la nécessité d'adapter les deux plateformes. Les plates-formes impliquent leur propre façon de développer des applications et n'ont que de petites ressemblances entre elles. Cela a été un problème que l'industrie des applications a rencontré et surmonté en ayant à embaucher du personnel ayant des connaissances dans Android ou iOS, ou les deux, pour créer deux applications distinctes qui nécessitent à leur tour un entretien parallèle [9].
Les frameworks multiplateformes qui comblent cet écart sont passés et disparus, en ne réussissant pas à créer des applications avec le même standard visuel ou fonctionnel que les frameworks natifs. Cependant, React Native promet de fournir une expérience entièrement native avec l'utilisation d'une seule base de code. [10]. React native nécessite et s'exécute sur la plateforme NodeJS. Node.js est un environnement d'exécution JavaScript multiplateforme open source qui exécute du code JavaScript côté serveur. [11]
Afin de comprendre une application React Native, il est nécessaire de connaître certains des concepts de base de React, comme JSX, l'état, les accessoires et les composants. JSX - est une extension de syntaxe de type XML pour ECMAScript sans aucune sémantique définie. Composants - sont les éléments constitutifs de toute application native React et une application native React typique en aura beaucoup. En termes simples, un composant est une classe ou une fonction JavaScript qui accepte éventuellement des entrées, c'est-à-dire des propriétés (accessoires) et renvoie un élément React qui décrit comment une section de l'interface utilisateur (interface utilisateur) doit apparaître.
Il existe deux types de données qui contrôlent un composant:
- Les accessoires: sont immuables et sont définis par le parent et ils sont fixes pendant toute la durée de vie d'un composant.
- État: est mutable. Cela signifie que l'état peut être mis à jour à l'avenir, contrairement aux accessoires. L'état peut être initialisé dans le constructeur, puis appelé par setState lorsqu'il doit être modifié.
Par défaut, React Native fournit un certain nombre de composants intégrés, qui peuvent être utilisés à différentes fins. De plus, les développeurs ne sont pas limités aux composants et aux API fournis avec React Native car il existe de nombreux packages (bibliothèques) différents que de nombreux autres développeurs ont créés pour accélérer le développement pour d'autres.
Les listes suivantes décrivent et décrivent les packages utilisés avec nodeJS pour développer l'application React Native:
- React - Une bibliothèque JavaScript déclarative, efficace et flexible pour créer des interfaces utilisateur. [12]
- React Native - Un cadre pour créer des applications natives avec React. [13]
- Expo - Un ensemble d'outils, de bibliothèques et de services qui permettent la construction d'applications natives iOS et Android en écrivant JavaScript. [14]
- Redux - Un conteneur d'état prévisible pour les applications JavaScript. [15]
- Axios - Un client HTTP basé sur Promise pour le navigateur et node.js [16]
- Native Base - Composants d'interface utilisateur multiplateforme essentiels pour React Native [17]
- React Native Navigation - fournit une navigation native sur la plate-forme sur iOS et Android pour les applications React Native [18]
- React Form Builder - Bibliothèque de générateur de formulaire simple pour React. [19]
- Il8next - Framework d'internationalisation pour navigateur ou tout autre environnement javascript (par exemple Node.js) [20]
Voici une liste des pages de l'application et leur description:
- Accueil - Page de destination principale de l'application
- À propos - Page de l'application qui décrit la plate-forme
- Inscription - Page d'application où tout utilisateur invité peut créer un compte pour la plateforme
- Se connecter - Page d'application où tout utilisateur invité peut se connecter à la plateforme
- Index des véhicules - Page de l'application où tous les véhicules créés sont répertoriés
- Véhicules Nouveau / Modifier - Page d'application avec formulaire où le véhicule est créé et modifié, et la plaque d'immatriculation est analysée
- Exposition de véhicules - Page d'application qui affiche les détails d'un véhicule enregistré spécifique.
4. Test et hébergement
Alors que les premiers tests et recherches pour cette plate-forme sont basés sur des plaques d'immatriculation russes, l'objectif ultime de la plate-forme Plate Vision est de pouvoir lire des plaques d'immatriculation du monde entier, et depuis OpenALPR avait déjà été formé pour des pays populaires comme les États-Unis et l'Europe , il était initialement supposé que cela fonctionnerait également bien avec les numéros de plaques d'immatriculation russes, car certaines des plaques européennes sont similaires aux plaques russes.
Cependant, des tests initiaux utilisant les configurations européennes OpenAlpr par défaut sur les plaques d'immatriculation russes, montrent que bien qu'OpenAlpr ait pu identifier et reconnaître une certaine quantité des plaques d'immatriculation russes, une personnalisation supplémentaire d'OpenAlpr était nécessaire afin d'obtenir des résultats fiables et cohérents. Afin d'améliorer l'analyse des plaques russes sans formation supplémentaire à l'aide d'OpenAlpr, quelques configurations personnalisées ont été créées, dérivées et optimisées à partir des configurations européennes avec des modifications spécifiques basées sur une variété d'images de test contenant des voitures avec des plaques d'immatriculation russes.

Même si la plate-forme a été optimisée pour fonctionner avec les meilleures plaques d'immatriculation russes, elle prend déjà en charge de nombreuses images de voitures et de plaques du monde entier car elle exécute plusieurs configurations modifiées de la bibliothèque OpenAlpr, ce qui conduit à de nombreux résultats possibles et, à la fin, détermine le meilleur résultat basé sur l'appariement des motifs des plaques des régions du monde et la précision de lecture.
La plateforme entière est hébergée à l'aide des services cloud de Heroku et est mise à jour et maintenue via le système de contrôle de version git. Cependant, il est important de noter que la configuration de dépendances spécifiques comme OpenAlpr pour fonctionner sur un environnement de serveur cloud comme Heroku était difficile en raison des restrictions et des défis présentés par l'environnement de serveur cloud de Heroku. Par conséquent, les services de Docker ont également été utilisés en combinaison avec Heroku afin de surmonter les difficultés de configuration et de garantir que le cloud OpenAlpr et toutes ses dépendances fonctionnent de la même manière que ceux de l'environnement de développement local [1].
5. Conclusion
En conclusion, l'objectif de cet article était de présenter la plate-forme Plate Vision ainsi que de décrire ses 3 principaux composants fonctionnels et comment elle prévoit d'optimiser l'ANPR tout en prenant en charge n'importe quel appareil, caméra, véhicule, emplacement à l'avenir. Bien que la version actuelle de la plate-forme n'implémente et n'utilise OpenAlpr qu'avec plusieurs configurations afin d'améliorer la reconnaissance automatique des plaques d'immatriculation, il existe encore différentes façons d'atteindre l'ANPR, et avec des recherches, des tests et des expériences supplémentaires, la plate-forme Plate Vision espère pour combiner des techniques et des méthodes uniques qui utilisent la meilleure vision open source et les bibliothèques OCR disponibles pour créer une solution ANPR internationale vraiment optimale.
Les références