Accueil / Drone et Vision par Ordinateur / Etude comparative sur les algorithmes de détection et de reconnaissance de véhicules dans une séquence d'images / Comment surmonter les défis de la détection de véhicules ? Solutions innovantes révélées

Comment surmonter les défis de la détection de véhicules ? Solutions innovantes révélées

Pour citer ce mémoire et accéder à toutes ses pages
🏫 Université Ain Temouchent Belhadj Bouchaib - Faculté des Sciences et de Technologie - Département des Mathématiques et de l'Informatique
📅 Mémoire de fin de cycle en vue de l'obtention du diplôme de Master - 2021/2022
🎓 Auteur·trice·s
BENZAZOU Aïcha, SAHRAOUI Yasmine Tekfa
BENZAZOU Aïcha, SAHRAOUI Yasmine Tekfa

Les défis et solutions en détection de véhicules révèlent des performances surprenantes des algorithmes YOLOv5 et Faster R-CNN, avec une précision atteignant 89%. Cette étude critique transforme notre compréhension des technologies de vision par ordinateur, essentielles pour la sécurité routière.


Implémentation

Environnement et outils de développement

        1. Google Colab

Colaboratory ou ‘Colab’, permet d’écrire et d’exécuter le code Python de son choix par le biais du navigateur. Offert par Google (gratuit), basé sur Jupyter Notebook et destiné à la formation et à la recherche dans l’apprentissage automatique. Cette plateforme permet d’entraîner des modèles de Machine Learning directement dans le Cloud. Colab permet :

  • D’améliorer les compétences de codage en langage de programmation Python.
  • De développer des applications en Deep Learning en utilisant des bibliothèques Python populaires telles que Keras, TensorFlow, PyTorch et OpenCV.
  • D’utiliser un environnement de développement (Jupyter Notebook) qui ne nécessite aucune configuration, Mais la fonctionnalité qui distingue Colab des autres services est l’accès à un processeur graphique GPU, totalement gratuit. [Djaballah, 2021]

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_29]

Figure 28: Interface de Google Colab.

        1. Mode d’exécution GPU

Pour passer en mode GPU, dans la barre des options choisir “exécution” puis “modifier le type d’exécution” et mettre l’option “accélérateur matériel” en mode GPU.

Nous serons obligés de ré-exécuter tout le notebook. Cette fois ci l’exécution du précédent prendra environ 4 minutes. Pour cet exemple l’entrainement sur un GPU est 60 fois plus rapide qu’un entrainement classique sur un CPU. [Touahri, 2020]

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_30]
[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_31]

Figure 29: Paramètres du notebook sur Google Colab.

        1. Langage Python

C’est un langage de programmation de haut niveau interprété (il n’y a pas d’étape de compilation), interactif et orienté objet avec une sémantique dynamique.

Python est conçu pour être hautement lisible et utilise fréquemment des mots clés en anglais, alors que d’autres langages utilisent la ponctuation, il a moins de constructions syntaxiques. Il est très sollicité par une large communauté de développeurs et de programmeurs. [Ounissi et Harnane, 2020]

        1. Bibliothèques utilisées
Torch

Torch est une bibliothèque d’apprentissage automatique open source, un cadre de calcul scientifique et un langage de script basé sur le langage de programmation Lua. Il fournit une large gamme d’algorithmes pour l’apprentissage en profondeur et utilise le langage de script LuaJIT et une implémentation en C sous-jacente. [Ghediri et Sakri, 2021]

Matplotlib

Est une bibliothèque complète pour créer des visualisations statiques, animées et interactives en Python, il offre une alternative open source viable à MATLAB. [Zerargui et Benzaoui, 2021]

TensorFlow

TensorFlow est la meilleure bibliothèque de toutes, Car elle est conçue pour être accessible à tous. La bibliothèque TensorFlow intègre différentes API pour construire à l’échelle des architectures d’apprentissage profond telles que CNN ou RNN.

TensorFlow est basé sur le calcul de graphe, il permet au développeur de visualiser la construction du réseau neural avec Tensorboad. Cet outil est utile pour déboguer le programme. Enfin, TensorFlow est conçu pour être déployé à grande échelle. Il fonctionne sur le CPU et le GPU. [Atif et Misseraoui, 2021]

NumPy

NumPy est l’abréviation de « Numerical Python » et c’est un ensemble fondamental pour le calcul scientifique en Python. NumPy fournit à Python une vaste bibliothèque mathématique capable d’effectuer des calculs numériques de manière efficace et efficiente afin de pouvoir travailler avec des tableaux multidimensionnels et des structures de données matricielles, très courante dans les domaines de la science des données et de l’apprentissage automatique.

Pourquoi utiliser NumPy ?

  • Les tableaux Numpy utilisent moins de mémoire que les listes python normales.
  • Une liste python normale est un groupe de pointeurs pour séparer les objets Python (par exemple les nombres à l’intérieur de la liste).
  • Un tableau Numpy est conçu pour être un tableau de valeurs uniformes, sans utiliser d’espace pour les pointeurs de type.
  • Numpy peut également lire les informations plus rapidement et dispose de nombreuses opérations de diffusion pratiques qui peuvent être effectuées à travers les dimensions du tableau. [Bellahmer, 2020]

Résultats d’entrainement

PrécisionRappelMoyenne de précision

(mAP)

Itérations
Car0.3970.3110.305300
Bus0.610.4780.506300
Truck0.3930.1730.252300
Motorcycle0.4940.3480.359300
Ambulance0.6670.7810.747300

Tableau 5: Rapport de classification.

Les résultats que nous avons obtenus (tableau 5) ne sont pas bon, ils sont tous inférieur à 50%, il faut entrainer beaucoup plus notre modèle. Les images des ambulances sont bien classifiées, car parmi les cinq classes, l’ambulance est celle qui présente les plus grands nombres de résultat.

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_32]

Figure 30: Graphes de métriques (YOLOv5).

La fonction de perte

Dans le domaine de l’apprentissage profond et de l’apprentissage automatique, la « Perte » est la perte d’une mauvaise prédiction. D’une autre façon, la perte représente la pénalité générée lorsque l’estimation de la cible fournie par le modèle d’apprentissage-machine n’est pas parfaitement égale à la cible. Une fonction de perte quantifie cette pénalité sous la forme d’une valeur individuelle. [HOURRANE Oumaima, 2018]

Une tâche de prédiction peut être considérée comme une simple tâche d’optimisation. Le modèle tente d’optimiser ses performances en prédisant la valeur correcte. La valeur réelle que nous optimisons, s’appelle la « perte » (que nous essayons de minimiser, bien sûr). Pour ce faire, le modèle doit pouvoir mesurer ce que l’on appelle la « perte », qui dépend du problème.

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_33]

Généralement, la fonction de perte, L, est une fonction sur l’entrée, un ensemble de paramètres (appelés « poids ») et le vrai label (Dans la famille multi-classe, Li est défini comme la perte sur la classe i).

R est une fonction de régularisation. Cette fonction est utilisée pour pénaliser W « complexe » (par exemple, elle « préférera » Ws plus petit). Cela force le modèle à préférer les modèles plus simples aux plus complexes. [HOURRANE Oumaima, 2018]

Lambda, le coefficient de R, est un autre paramètre que ce processus optimisé.

Matrice de confusion

La matrice de confusion (figure 31) nous permet de voir exactement ce que notre modèle donne comme résultats de classification. La première classe a donné le meilleur pourcentage de classification (72%) comme nous l’avons décrit avec le rapport de classification présenté au Tableau 4 donnant la précision.

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_34]

Figure 31: Matrice de confusion (YOLOv5).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_35]

Figure 32: Estimateurs (metrics) (YOLOv5).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_36]

Figure 33: La fonction loss (YOLO V5).

Le tableau de bord Scalars (figure 32 et 33) montre comment la perte et les métriques changent à chaque époque nous pouvons également voir la vitesse d’apprentissage, le taux d’apprentissage et d’autres valeurs scalaires.

Le but de l’algorithme d’apprentissage profond est de minimiser la fonction de perte qui reflète l’erreur entre la prédiction et la vérité terrain que nous avons fourni.

Pour un bon modèle d’entrainement la tendance à la baisse des courbes perdues pour chaque époque et éventuellement aplanir. Dans nos graphes nous voyons que notre modèle a besoin de beaucoup d’entrainement pour avoir de meilleurs résultats.

La précision est une métrique que notre algorithme d’apprentissage profond utilise pour évaluer la qualité du modèle pendant la formation cela devrait avoir une tendance à hausse indiquant que la qualité du modèle s’améliore effectivement et que la précision ne fournit pas d’information sur la qualité de la segmentation pour chacune des classes et de l’arrière-plan de nos images.

Comparaison

Cette partie représente une comparaison entre le YOLOv5 et le Faster R-CNN :

  • YOLOv5 est une version récente de la famille de modèles YOLO, il fonctionne plus rapidement que le Faster R-CNN en raison de son architecture plus simple. Contrairement au Faster R-CNN, il est formé pour effectuer la classification et la régression de la boîte englobante en même temps.
  • Faster R-CNN est plus lent, donc il ne représente pas le bon choix pour la prédiction de la détection en temps réel.
  • Le taux de précision est plus élevé avec l’architecture Faster R-CNN.
  • YOLOv5 a un avantage en termes de vitesse d’exécution, il fonctionne environ 2,5 fois plus vite.
  • Faster R-CNN est bien meilleur pour la détection des objets les plus petits contrairement au Modèle YOLO ;
  • Les résultats du modèle YOLOv5 sont avec peu ou pas de cases qui se chevauchent.

Les figures suivantes montrent une démonstration de la détection de véhicules par les deux algorithmes en utilisant les mêmes séquences d’images :

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_37]

Figure 34: Détection de véhicules par YOLOv5 (1).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_38]

Figure 35: Détection véhicules par Faster R-CNN (1).

Séquence 1MéthodePrécision
CarYOLO73%
Faster R-CNN94%

Tableau 6: Comparaison entre les deux méthodes (séquence 1).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_39]

Figure 36: Détection de véhicules par YOLO (2).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_40]

Figure 37: Détection de véhicules par Faster R-CNN (2).

Séquence 2MéthodePrécision
MotorcycleYOLO32%
Faster R-CNN85%

Tableau 7: Comparaison entre les deux méthodes (séquence 2).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_41]

Figure 38: Détection de véhicules par YOLO (3).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_42]

Figure 39: Détection de véhicules par Faster R-CNN (3).

Séquence 3MéthodePrécision
CarYOLO72%
Faster R-CNN100%

Tableau 8: Comparaison entre les deux méthodes (séquence 3).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_43]

Figure 40: Détection de véhicules par YOLO (4).

[11_defis-et-solutions-en-detection-de-vehicules-etude-2023_44]

Figure 41: Détection de véhicules par Faster R-CNN (4).

Conclusion

Ce chapitre a été divisé en deux parties : la 1ère partie est la conception dans laquelle nous avons vu les architectures des deux modèles choisis YOLOv5 et Faster R-CNN ainsi que ResNet-50. La 2ème partie concerne l’implémentation, où nous avons vu notre environnement de travail, les bibliothèques utilisées avec l’utilité de chacune d’elles et les résultats de la détection de véhicules dans une séquence d’images obtenus.

Nous avons clôturé ce chapitre par une comparaison entre les deux algorithmes et d’après l’étude comparative on peut déduire que YOLOv5 a l’intérêt d’être robuste permettant la détection de véhicules dans une vidéo avec une vitesse plus rapide que RCNN.

Conclusion générale

Au-delà d’être un problème général de la vision par ordinateur, la reconnaissance d’objets dans des catégories très variables est une étape indispensable pour de nombreuses applications spécifiques.

Notre projet se place dans le cadre du contrôle routier notamment d’une étude de différents algorithmes de détection de véhicules. Nous avons pu ici passer en revue la théorie et les résultats de deux algorithmes largement utilisés dans la détection de ces primitives.

D’autre part l’étude approfondie de la littérature sur la détection de véhicules nous a permis de définir une taxinomie des méthodes proposées, et de remarquer que la plupart des solutions consistent à considérer les séquences vidéo comme des successions d’images.

Ce projet nous a aussi permis de découvrir ce qu’est le travail de recherche, plus précisément de développer cet esprit de recherche sur un sujet qui nous était totalement inconnu et d’appliquer les diverses connaissances acquises au cours de notre parcours universitaire, que ce soit les notions mathématiques mais aussi l’intelligence artificielle et les algorithmes de classification que nous avons beaucoup étendu durant nos cours.

De plus, ce travail nous a permis de découvrir un domaine particulier qu’est la détection et la reconnaissance de véhicules dans un contexte très concret qu’est celui de la sécurité dans les transports.

Pour la réalisation de notre mémoire, nous avons utilisé les réseaux de neurones convolutifs et nous avons fait nos tests sur 4 classes de véhicules (voiture, camion, bus, bicyclette) qui décidera par la suite de la classe de chaque véhicule détecté.

L’objectif final est la détection ainsi que la classification des véhicules dans une séquence d’images.

Nous avons envisagé quelques perspectives qui sont les suivantes :
  • Tester les algorithmes sur des images satellitaires ;
  • Comparer les résultats de méthodes entre plus que deux architectures de CNN ;
  • Entraîner les modèles plus longtemps sur d’autres base de données ;
  • Utilisation de vidéo haute résolution (HD).
  • Evaluer une application pour l’utiliser comme un radar qui permettra de détecter la vitesse des véhicules et leurs matricules.

Questions Fréquemment Posées

Quels outils sont utilisés pour la détection de véhicules dans l’étude?

L’étude utilise des outils de développement tels que Google Colab, Torch, Matplotlib, TensorFlow et NumPy.

Comment améliorer les performances de détection des véhicules?

Pour améliorer les performances, il est recommandé d’utiliser un environnement de développement comme Google Colab avec un processeur graphique GPU, qui rend l’entraînement 60 fois plus rapide qu’un CPU.

Pourquoi utiliser Python pour la détection de véhicules?

Python est un langage de programmation hautement lisible et sollicité par une large communauté de développeurs, ce qui en fait un choix idéal pour le développement d’applications en Deep Learning.

Rechercher
Télécharger ce mémoire en ligne PDF (gratuit)

Laisser un commentaire

Votre adresse courriel ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Scroll to Top