Au Sénégal, il ne passe pas un jour ou presque sans accidents mortels de la circulation. Malgré les nombreuses campagnes de sensibilisation sur les dangers de la route, le nombre d’accidents ne baisse pas. 400 décès pour l’année 2013, 43 pour l’année 2014 et plus de 500 décès pour l’année 2016. Le rapport 2016 de la gendarmerie nationale note une augmentation des accidents de la circulation avec « 503 personnes tuées et 5653 blessés à l’occasion d’accidents impliquant 844 véhicules légers, 405 véhicules poids lourds, 516 véhicules de transport en commun, 212 véhicules à deux routes et hippomobiles et 242 piétons ». En 2019, le nombre d’accident s’élèvent à plus de 600 décès. Et 45% des causes d’accidents sont du fait de l’imprudence du conducteur [1].
Certains de ces accidents pouvaient être évités si le conducteur avait su l’objet qui était devant la voiture 3 secondes avant. La préoccupation majeure est de trouver comment réduire le nombre d’accidents dans le transport routier au Sénégal. La meilleure solution est la prudence et le respect du code de la route par les conducteurs et les piétons. Une solution qui va dans ce sens consiste à détecter et reconnaitre les objets en temps réel dans le trafic routier. Celle-ci repose sur la mise en place d’un système de détection et de reconnaissance d’objets sur une carte Raspberry est qui relié à une caméra embarquée placée sur la voiture. La caméra va envoyer les images capturées à une base de données MySQL, cette dernière va servir de stockage pour un autre système de détection et reconnaissance qui sera couplé avec une application web.
la reconnaissance des objets
A l’heure actuelle, les systèmes de vision sont de plus en plus répandus (webcam, caméra, …) et les caméras peuvent être installées partout dans notre quotidien. Elles sont utilisées pour réaliser de la vidéo surveillance (dans les magasins, rues ou aéroports), de l’aide à la conduite (aide ou guidage ou la détection d’obstacle), et bien d’autres applications encore…Pour l’être humain, voir est une tâche innée et nous ne mesurons souvent pas la difficulté pour obtenir les mêmes performances artificiellement. Malgré les avancées de la vision par ordinateur, les systèmes développés sont très loin d’égaler les performances de l’œil et du cerveau humains en rapidité. Il s’agit de mettre au point un système capable de détecter et reconnaitre les objets comme des piétons, des voitures, des tableaux, … à partir d’images provenant d’une simple caméra. Le problème est d’autant plus difficile que le système que le système de vision est embarqué dans un véhicule se déplaçant en milieu urbain : l’environnement visuel contient de nombreux éléments, est aussi à sujet de multiples variations, et de plus, le processus doit prendre place en temps réel pour éviter une éventuelle collision.
Définition
La reconnaissance d’objets est un terme général pour décrire un ensemble de tâches de vision par ordinateur associées qui impliquent l’identification d’objets dans les photographies numériques. La classification d’image implique de prédire la classe d’un objet dans une image. La localisation d’objet fait référence à l’identification de l’emplacement d’un ou plusieurs objets dans une image et au dessin d’une boîte abondante autour de leur étendue. La détection d’objets combine ces deux tâches et localise et classe un ou plusieurs objets dans une image. Lorsqu’un utilisateur ou un praticien fait référence à la « reconnaissance d’objet », ils signifient souvent « détection d’objet ». Nous utiliserons le terme de reconnaissance d’objet au sens large pour englober à la fois la classification d’images (une tâche nécessitant un algorithme pour déterminer quelles classes d’objets sont présentes dans l’image) ainsi que la détection d’objets (une tâche nécessitant un algorithme pour localiser tous les objets présents dans une image). A ce titre nous pouvons distinguer ces trois tâches de vision par ordinateur :
❖ Classification de l’image : prédisez le type ou la classe d’un objet dans une image.
– Entrée : une image avec un sujet objet, telle qu’une photographie.
– Sortie : une étiquette de classe (par exemple un ou plusieurs entiers mappés à des étiquettes de classe).
❖ Localisation d’objets : localisez la présence d’objets dans une image et indiquez leur emplacement avec un cadre de sélection.
– Entrée : une image avec un ou plusieurs objets, comme une photographie.
– Sortie : une ou plusieurs boîtes englobantes (par exemple définies par un point, une largeur et une hauteur).
❖ Détection d’objets : localisez la présence d’objets avec un cadre de sélection et les types ou classes des objets localisés dans une image.
– Entrée : une image avec un ou plusieurs objets, comme une photographie
– Sorite : une ou plusieurs boîtes englobantes (par exemple définies par un point, une largeur et une hauteur) et une étiquette de classe pour chaque boîte englobante.
Une autre extension de cette répartition des tâches de vision par ordinateur est la segmentation d’objet, également appelée « segmentation d’instance d’objet » ou «segmentation sémantique », où les instances d’objets reconnus sont indiquées mettant en surbrillance les pixels spécifiques de l’objet au lieu d’une zone de délimitation grossière. A partir de cette ventilation, nous pouvons voir que la reconnaissance d’objet se réfère à une suite de tâches de vision par ordinateur difficiles. [2]
Reconnaissance des formes
Introduction à l’Intelligence Artificielle
Le terme d’Intelligence Artificielle (IA) désigne toutes les techniques et méthodes qui permettent de doter des systèmes informatiques des capacités proches de celles de l’être humain. La science-fiction s’est approprié ce domaine en imaginant des robots, dotés d’une intelligence qui serait semblable à celle de l’homme. Toutefois, de nos jours, maîtrise de l’IA est bien plus modeste, les systèmes développés ne sont capables que d’imiter certaines capacités de l’homme. Prenons par exemples des robots alliant des capacités de perception de l’environnement et de commande qui sont capables de se déplacer de façon autonome en évitant les obstacles (voir figure 1) [2]. Le but de ce mémoire est de réaliser un système de détecter des objets devant un véhicule à partir d’une caméra embarquée. Le travail se situe au niveau de la perception, effectivement, il s’agit de recréer artificiellement les capacités de perception d’un conducteur qui chercherait de façon active les objets (piétons, animaux, voitures, tableaux, etc…) situés devant son véhicule avec lesquels il pourrait entrer en collision. Le système désiré est donc apparenté à un système d’Intelligence Artificielle.
a) Exemple d’un robot imaginé par la science-fiction (extrait du film I-Robots) ayant les mêmes capacités que l’être humain,
b) Exemple des capacités d’un robot (NAO de la société Aldebaran Robotics ).
L’intelligence artificielle à la reconnaissance des formes
Mais l’IA est un très vaste domaine et les applications sont diverses et variées. Il est possible de distinguer plusieurs branches, les travaux de ce mémoire s’inscrivent dans le cadre de la « reconnaissance des formes ». Cette appellation désigne les méthodes qui, à partir de l’observation d’un objet, lui attribuent une classe. Par exemple, un système qui, à partir d’une observation radar, classifie des objets volants soit dans une classe avion, soit dans une classe non-avion, réalise une tâche de reconnaissance d’objets. L’observation d’un objet peut-être très différente selon le domaine d’activité dans lequel nous évoluons. Souvent c’est une observation visuelle qui est utilisée (photo, séquence vidéo, image médicale, image satellite, etc.), mais il est également possible d’avoir une analyse radar, laser ou sonore, le champ d’application étant très large. De même, le motif à reconnaitre et à classer peut-être simple ou complexe, et les outils développés sont adaptés à chaque utilisation. Par exemple, un cube sera plus facile à reconnaitre qu’un visage puisqu’il a des propriétés physiques constantes dans le temps et l’espace alors qu’un visage est sujet à beaucoup plus de changements. Dans ce mémoire, nous cherchons à reconnaitre les objets (piétons, véhicules, arbres, panneaux de signalisation, etc.) à partir d’images vidéo. Grâce à une caméra embarquée, une observation visuelle de la scène à l’avant d’un véhicule est obtenue ; la problématique principale est alors de reconnaitre les objets présents dans les images, c’est-à-dire d’être capable d’indiquer si les objets présents dans l’environnement devant le véhicule appartiennent à telle classe. Dans ce rapport, nous présentons les différentes étapes permettant de réaliser ce système de détection et de reconnaissance des objets. Actuellement, il existe différentes méthodes, les plus utilisées sont basées sur le modèle et l’apprentissage. Les premières utilisent un modèle d’objet et identifient un nouvel objet en calculant sa distance au modèle [3]. Les secondes font appel à une phase d’apprentissage hors ligne qui génère un classificateur capable de différencier un objet (par exemple une personne) par rapport à un objet. Dans notre travail nous avons utilisé des techniques d’apprentissage du deep Learning.
|
Table des matières
Introduction générale
CHAPITRE 1 : la reconnaissance des objets
Introduction
1. Définition
2. Reconnaissance des formes
2.1. Introduction à l’Intelligence Artificielle
a. Segmentation d’images
b. Description d’images
c. Deep Learning
Conclusion
CHAPITRE2 : Etat de l’art sur les algorithmes du Deep Learning
Introduction
1. Fonctionnement d’un réseau de neurones
2. Les différents types de modèles
2.1. Les réseaux de neurones convolutifs
2.1.1. Inspiration
2.1.2. L’opération de convolution
2.1.3. La couche convolutif
2.1.4. La couche de pooling
2.1.5. Le perceptron
2.1.6. Quelques réseaux convolutifs célèbres
2.2. Réseaux de neurones récurrents
2.2.1. C’est quoi un RNN ?
2.2.2. Apprentissage
2.2.3. Application
2.3. Deep generative model
3. La fonction d’activation
3.1. Les caractéristiques
3.2. Quelques fonctions d’activation
3.2.1. Rectified Linear Units et leurs généralisations
3.2.2. Sigmoïde et tangente hyperbolique
4. La famille de modèles R-CNN
4.1. Le R-CNN
4.2. Le Fast R-CNN
4.3. Le Faster R-CNN
5. La famille de modèles YOLO
5.1. YOLO
5.2. YOLOv2 (YOLO900) et YOLOv3
6. SSD (Single Shot Detector)
7. Le software
7.1. Theano
7.2. TensorFlow
7.3. Keras
7.4. PyTorch
7.5. Caffee
7.6. CNTK
7.7. Caffe2
7.8. MXNet
7.9. Torche
7.10. Darkne
7.11. Comparaison des frameworks de l’IA
Conclusion
Chapitre 3 : mise en œuvre, analyse et conception
1. Logiciels et librairies utilisés dans l’implémentation
1.1. Analyse des besoins du système
1.1.1. Besoins fonctionnels
1.1.2. Besoins non fonctionnels
1.2. Matériels et logiciels
1.2.1. Matériels
1.2.2. Logiciels et plateforme
2. Conception
2.1. Diagramme du cas d’utilisation
2.2. Description des cas d’utilisation
2.3. Diagramme de séquence
2.4. Diagramme de classe
3. Architecture de la solution
3.1. Architecture matérielle proposée
3.2. Architecture fonctionnelle
4. Protocoles utilisés
4.1. Protocoles de streaming vidéo RTP, RTCP et RTSP
4.2. Protocole UDP
4.3. Le protocole http
5. Mise en œuvre
5.1. Outils de développement
5.2. Réalisation de la solution
Conclusion