0% ont trouvé ce document utile (0 vote)
8 vues5 pages

Détection de Places de Parking AI

Transféré par

salmakaine04
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues5 pages

Détection de Places de Parking AI

Transféré par

salmakaine04
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Introduction :

Bonjour à tous,

Nous sommes ravies de vous présenter notre projet intitulé 'Détection des places vacantes dans un
parking et optimisation du trafic urbain par l'Intelligence Artificielle'.

De nos jours le stationnement en milieu urbain pose plusieurs défis majeurs : perte de temps,
augmentation du trafic, consommation de carburant et pollution. En moyenne, un conducteur peut
passer jusqu'à 20 minutes par jour à chercher une place de parking, contribuant à 30% du trafic
urbain. Cela a un impact significatif sur la fluidité du trafic, la consommation de carburant et les
émissions de CO2.

Face à ces défis, nos objectifs principaux sont de détecter les places vacantes en temps réel,
améliorer l'expérience utilisateur, optimiser le routage des véhicules et réduire la congestion ainsi
que les émissions de CO2.

Machine Learning :

L'apprentissage automatique, ou machine Learning, permet aux ordinateurs d'apprendre et de


s'améliorer automatiquement à partir de données. Il existe deux principaux types d'apprentissage
automatique : supervisé, où le modèle est entraîné sur des données étiquetées, et non supervisé, où
le modèle identifie des structures cachées dans des données non étiquetées.

Routage du Trafic Routier :

Le routage du trafic routier consiste à déterminer les itinéraires optimaux pour diriger les véhicules
afin de minimiser les temps de trajet et réduire la congestion.

Algorithme A* : Utilise une heuristique pour trouver le chemin le plus court efficacement.

Protocole OSPF : Utilise l'algorithme de Dijkstra pour trouver le chemin le plus court basé sur des
métriques de coût.

Algorithme de Dijkstra : Calcule le plus court chemin entre deux nœuds dans un graphe.

Algorithme de Contraction Hierarchies (CH) : Simplifie le graphe pour des requêtes de chemin plus
rapides tout en préservant les chemins les plus courts.

Détection par Computer Vision :

Utilise des techniques de traitement d'image pour analyser les images des caméras et identifier les
places de parking vacantes en temps réel.

Applications courantes : reconnaissance d'objets, détection de visages, analyse d'images médicales,


et systèmes de conduite autonome.

Étapes d’utilisation de ORS Tools pour trouver le chemin le plus court entre deux points

Installation de QuickMapServices

Détails sur l'installation de ORS Tools et la configuration de la clé API pour accéder à
OpenRouteService.

Choix de la zone dans OpenStreetMap


Diapositive 33

Définir le point de départ et le point d'arrivée (emplacements de parking) dans la zone choisie.

Calcul de l'itinéraire le plus court entre les deux points

Diapositive 34

Calcul des itinéraires les plus courts à partir d'un point de départ unique vers deux emplacements de
parking différents.

Fonctionnement de ORS Tools dans QGIS

Installation et configuration :

Installation : Installez l'extension ORS Tools à partir du dépôt QGIS.

Clé API : Insérez votre clé API OpenRouteService dans les paramètres de l'extension pour pouvoir
utiliser les services de routage.

Accès aux services de routage :

Menu ORS Tools : Une fois configurée, l'extension ajoute un menu dans QGIS où vous pouvez
accéder à diverses fonctionnalités telles que le calcul d'itinéraires, l'isochronie, etc.

Paramètres d'itinéraire : Vous pouvez spécifier les points de départ et d'arrivée, ainsi que des
paramètres tels que le mode de transport (voiture, vélo, piéton), les restrictions (éviter les péages,
les autoroutes, etc.).

Calcul d'itinéraire :

Choix des points : Sélectionnez les points de départ et d'arrivée directement sur la carte ou en
entrant des coordonnées spécifiques.

Options avancées : Vous pouvez définir des points intermédiaires, des priorités sur certains types de
routes, etc.

Exécution : Lancez le calcul d'itinéraire, et l'extension envoie une requête à l'API ORS. La réponse est
ensuite affichée sous forme de couche vectorielle dans QGIS, montrant l'itinéraire optimal.

Algorithme Principal Utilisé par ORS

Contraction Hierarchies (CH) :

ORS utilise principalement l'algorithme de Contraction Hierarchies pour ses calculs de routage. Cet
algorithme permet de prétraiter le réseau routier pour accélérer les requêtes de plus courts chemins.
Il est particulièrement efficace pour les grands réseaux routiers, tels que ceux des villes ou des
régions entières, et est capable de fournir des résultats rapidement même pour des requêtes
complexes.

Utilisation et Efficacité

Efficacité : L'algorithme CH est choisi pour sa capacité à réduire significativement le temps de calcul
des itinéraires, en particulier dans les grands réseaux. Cela est réalisé en créant une hiérarchie de
nœuds contractés, ce qui simplifie le processus de recherche lors des requêtes.
Prétraitement : Le prétraitement du réseau peut prendre du temps, mais une fois terminé, les
requêtes de routage peuvent être résolues très rapidement.

Comparaison avec Dijkstra et A*

Dijkstra :

Utilisé pour les réseaux plus petits ou lorsque des calculs très basiques sont nécessaires. Il trouve le
chemin le plus court mais peut être inefficace pour les grands réseaux en raison de son approche
exhaustive.

A* (A Star) :

Utilise une heuristique pour améliorer l'efficacité par rapport à Dijkstra. A* est plus performant que
Dijkstra pour les grands réseaux mais reste moins rapide que CH pour les très grands réseaux routiers
prétraités.

Conclusion

ORS se concentre principalement sur l'utilisation de Contraction Hierarchies pour offrir un routage
rapide et efficace. Bien que Dijkstra et A* soient des algorithmes importants dans le domaine des
calculs de chemins, c'est l'algorithme de Contraction Hierarchies qui est le plus utilisé par ORS pour
répondre aux besoins de routage à grande échelle.

Explication code détection :

Fichiers et Importations

[Link] :

Importe les bibliothèques nécessaires comme OpenCV (cv2) et NumPy (np).

Importe les fonctions get_parking_spots_bboxes et empty_or_not du fichier [Link].

Définit une fonction calc_diff pour calculer la différence moyenne absolue entre deux images.

[Link] :

Importe des bibliothèques et définit des constantes comme EMPTY et NOT_EMPTY.

Charge un modèle pré-entraîné à partir d'un fichier pickle (model.p) qui est utilisé pour prédire si une
place de parking est vide ou non.

Définit la fonction empty_or_not qui prend une image de place de parking en entrée, la
redimensionne, l'aplatit et utilise le modèle pour prédire l'état de la place.

Définit la fonction get_parking_spots_bboxes qui utilise connectedComponentsWithStats de OpenCV


pour détecter et retourner les boîtes englobantes des places de parking dans une image.

Logique principale ([Link])

Initialisation :

Charge l'image masque (mask) et la vidéo de la caméra de surveillance de parking (cap).

Utilise connectedComponentsWithStats pour détecter les composants connectés dans l'image


masque et obtient les emplacements des places de parking (spots).
Boucle principale :

Lit chaque frame de la vidéo.

Pour chaque frame à chaque étape définie (step), il compare la différence moyenne entre la frame
actuelle et la frame précédente pour chaque place de parking détectée.

Utilise la fonction empty_or_not pour déterminer si une place de parking est vide ou non, en
fonction de la prédiction du modèle.

Affichage :

Dessine des rectangles autour des places de parking sur la frame de sortie en fonction de leur état
(vert pour vide, rouge pour occupé).

Affiche le nombre de places disponibles sur la frame.

Interaction utilisateur :

Affiche la frame mise à jour dans une fenêtre nommée "Parking Spot Detection".

S'arrête si l'utilisateur appuie sur la touche 'q'.

Libération des ressources :

Libère la capture vidéo et ferme toutes les fenêtres ouvertes à la fin du programme.

Conclusion

Ce code combine la détection d'objets (places de parking) à l'aide de la vision par ordinateur
(OpenCV) et la classification (à l'aide du modèle chargé) pour déterminer si chaque place de parking
dans la vidéo est vide ou occupée. C'est une application pratique pour la gestion automatisée des
parkings.

Dans [Link]

Importation de OpenCV (cv2) :

import cv2

OpenCV est une bibliothèque open-source spécialisée dans le traitement d'images et la vision par
ordinateur. Elle fournit des fonctions pour charger, manipuler et traiter des images et des vidéos.

Importation de NumPy (np) :

import numpy as np

NumPy est une bibliothèque fondamentale pour le calcul numérique en Python. Elle offre des
structures de données efficaces pour le traitement de tableaux multidimensionnels et des fonctions
mathématiques de haut niveau pour opérer sur ces tableaux.

Importation de fonctions locales (get_parking_spots_bboxes, empty_or_not) :

from util import get_parking_spots_bboxes, empty_or_not


Ces instructions importent des fonctions spécifiques (get_parking_spots_bboxes et empty_or_not)
depuis un fichier local appelé [Link]. Ces fonctions sont utilisées dans le script principal pour détecter
les places de parking et déterminer si elles sont vides ou occupées.

Dans [Link]

Importation de pickle :

import pickle

Pickle est un module Python standard qui implémente un protocole de sérialisation et de


désérialisation pour convertir un objet Python en un flux de données binaires, et vice versa. Il est
utilisé ici pour charger un modèle pré-entraîné à partir d'un fichier .p.

Importation de resize depuis [Link] :

from [Link] import resize

scikit-image est une bibliothèque spécialisée dans le traitement d'images. resize est une fonction de
cette bibliothèque qui redimensionne une image à une taille spécifiée.

Importation de NumPy (np) :

import numpy as np

Comme dans [Link], NumPy est importé ici pour les opérations sur les tableaux.

Importation de OpenCV (cv2) :

import cv2

OpenCV est également importé ici pour le traitement d'images.

Conclusion

Chaque importation dans vos fichiers sert à charger des bibliothèques et des fonctions nécessaires
pour effectuer des opérations spécifiques comme la manipulation d'images, la détection de places de
parking, le redimensionnement d'images, et la classification à l'aide d'un modèle pré-entraîné. Ces
bibliothèques et fonctions sont essentielles pour la mise en œuvre de votre projet de détection de
places de parking vacantes.

Vous aimerez peut-être aussi