Table des matières:

Cambus - Système de Collecte de Données sur Bus Urbain : 8 Étapes
Cambus - Système de Collecte de Données sur Bus Urbain : 8 Étapes

Vidéo: Cambus - Système de Collecte de Données sur Bus Urbain : 8 Étapes

Vidéo: Cambus - Système de Collecte de Données sur Bus Urbain : 8 Étapes
Vidéo: Déploiement d’un réseau de fibre optique 2024, Novembre
Anonim
Cambus - Système de Collecte de Données sur Bus Urbain
Cambus - Système de Collecte de Données sur Bus Urbain

Parmi les problèmes et difficultés connus dans les transports en commun, la population manque d'informations en temps réel et avec le moins d'assurance. La surpopulation des bus des transports en commun éloigne les usagers, qui préfèrent utiliser leur propre véhicule, même s'ils sont encore dans la circulation pendant des heures. Si des informations en temps réel, telles que le nombre de bus, sont facilement accessibles à un utilisateur, il peut choisir d'attendre le prochain bus ou de se déplacer en bus ou d'utiliser son propre véhicule. Le pouvoir de choix fait des transports publics une option plus attrayante pour l'usager.

Le comptage ou l'estimation des personnes à l'intérieur peut être effectué de plusieurs manières, parmi lesquelles les plus couramment utilisées sont:

  • Images thermiques;
  • Vision par ordinateur;
  • Compteur de visages;

Parmi les nombreuses difficultés pour estimer les personnes dans un environnement utilisant la vision par ordinateur, les principales sont:

  • Occlusions de personnes;
  • Inverser l'éclairage;
  • Occlusion statique, c'est-à-dire des personnes derrière des objets;
  • Angle de la caméra par rapport à l'environnement;

Un défi pour ce projet est de connaître l'angle correct de la caméra qui aidera le mieux à soustraire le fond de l'image, ainsi que la luminosité variable pendant la journée à l'intérieur du bus.

L'objectif principal de la proposition est de créer un modèle robuste et configurable pour estimer la surpopulation et rendre les résultats disponibles à la population via les smartphones.

Étape 1: Matériaux

Le matériel nécessaire au projet est le suivant:

1 x Dragon Board 410c;

1 caméra USB;

1 x Smartphone Android;

Étape 2: Installer Linaro dans Dragonboard 410c

Installer Linaro dans Dragonboard 410c
Installer Linaro dans Dragonboard 410c
Installer Linaro dans Dragonboard 410c
Installer Linaro dans Dragonboard 410c

Suivez les instructions sur le lien ci-dessous pour installer Linaro 17.09 sur la DragonBoard 410c. Nous vous recommandons d'installer Linaro 17.09 pour la prise en charge du noyau pour GPS.

www.96boards.org/documentation/consumer/dr…

Étape 3: Étape 2: Installer les bibliothèques et télécharger le code source depuis GitHub

Étape 2: Installez les bibliothèques et téléchargez le code source depuis GitHub
Étape 2: Installez les bibliothèques et téléchargez le code source depuis GitHub

Cambus a une architecture modulaire et une conception de code. Il est possible de coder votre propre algorithme d'apprentissage automatique, de passer à un autre service cloud et de créer vos propres applications utilisateur.

Pour exécuter le projet cambus, vous devez d'abord télécharger le code source depuis github (https://github.com/bmonteiro00/cambus). Installez python (Cambus était en mode pour s'exécuter sur les versions 2.7 et > 3.x) et les bibliothèques suivantes en utilisant 'pip' (sudo apt-get install python-pip). Il sera nécessaire d'installer un tas de bibliothèques dans le système Linaro (en outre, il est recommandé de créer un environnement virtuel - pip install virtualenv - afin d'isoler le système Cambus du SO). Veuillez installer les bibliothèques suivantes:

  • pip installer paho-mqtt
  • pip installer numpy
  • pip installer opencv-python
  • pip installer opencv-contrib-python
  • pip installer twilio
  • pip installer matplotlib

Le programme principal était divisé en classes:

  • CamBus - la classe principale;
  • Capteur - une classe pour obtenir des données telles que la position GPS, la température, le Co2.
  • Compteur - classe avec algorithme de traitement d'image.

Assurez-vous que toutes les bibliothèques ont été installées et exécutez python CamBus_v1.py.

Étape 4: configuration d'AWS IoT Core, DynamoDB

Configuration d'AWS IoT Core, DynamoDB
Configuration d'AWS IoT Core, DynamoDB
Configuration d'AWS IoT Core, DynamoDB
Configuration d'AWS IoT Core, DynamoDB
Configuration d'AWS IoT Core, DynamoDB
Configuration d'AWS IoT Core, DynamoDB

Nous avons utilisé le noyau AWS IoT en tant que courtier MQTT avec TLS et X509 et NoSQL et DynamoDB pour enregistrer les données. Vous devrez créer un compte sur https://aws.amazon.com/free.). Ensuite, vous devrez suivre les étapes ci-dessous pour créer un objet et l'intégrer à Dynamo:

docs.aws.amazon.com/iot/latest/developergu…

Étape 5: Configurer les API Twilio et Dweet

Configurer les API Twilio et Dweet
Configurer les API Twilio et Dweet
Configurer les API Twilio et Dweet
Configurer les API Twilio et Dweet

Le service SMS Twilio a également été mis en place. Consultez l'URL ci-dessous pour obtenir des instructions pour effectuer cette étape:

www.twilio.com/docs/iam/api/account

L'intégration entre l'application Android et le système a été effectuée via REST utilisé la plate-forme Dweet. Aucune inscription requise.

dweet.io/

Étape 6: Défis

Au cours de notre développement, nous avons été confrontés à de nombreux défis, des techniques OpenCV à la plate-forme AWS. Nous avons décidé de coder avec Python afin de gagner du temps sur le développement en C/C++. Au cours de notre développement, seules les méthodes Opencv de base telles que:

• cv2. Flou gaussien(..)

• cv2.seuil(..)

• cv2.morphologieEx(..)

• cv2.contourArea(..)

• cv2.findContours(..)

Ces méthodes de base n'étaient pas suffisantes pour atteindre une bonne qualité dans la détection des personnes. Des scénarios avec une vidéo tremblante ML (Machine Learning) ont été utilisés. Nous avons donc décidé d'utiliser la bibliothèque d'apprentissage automatique OpenCV et nous avons eu un autre problème car trouver une bonne entrée de données pour l'algorithme ML était un problème que nous avons passé plusieurs jours. Nous avons utilisé l'algorithme OpenCV SVM mais n'a pas fonctionné. Nous avons utilisé OpenCV Naive Bayses et celui-ci a bien fonctionné. Nous avons essayé d'utiliser les réseaux de neurones Tensorflow et CNN, mais nous n'y sommes pas parvenus pour le moment. CNN utilise beaucoup de puissance de traitement, ce que nous n'avions pas. L'utilisation d'OpenCV ML et des méthodes de base OpenCV nous a aidés à atteindre un bon taux de détection des personnes. Néanmoins, pour chaque type de vidéo, nous devons adapter les paramètres d'OpenCV afin d'atteindre un bon taux de détection des personnes et d'éviter les faux positifs. Au milieu de ces deux mois, nous avons développé notre première idée de faire un centre de collecte de données non uniquement le nombre de passagers et la localisation GPS. Nous avons décidé de ne pas collecter de données en utilisant d'autres capteurs comme la température, etc. Nous avons créé un fichier.ini pour paramétrer l'application et la rendre configurable. Sur le fichier Cambus.ini, vous pouvez configurer l'application de plusieurs manières.

Étape 7: Résultats et travaux futurs

Comme vous pouvez le voir dans la vidéo, le compteur fonctionne correctement. Les lignes bleues marquent la limite d'entrée et la ligne rouge la limite de sortie. Dans ce cas, une vidéo a été utilisée pour simuler car nous ne pouvions pas la déployer dans un bus.

N'oubliez pas que certains changements doivent être apportés à votre condition concernant la taille de la vidéo, l'angle de la caméra, la luminosité, etc. Chaque type de vidéo doit être adapté à ses propres paramètres, tels que l'arrière-plan d'aspiration du noyau opencv, etc.

Veuillez également modifier les variables sur cambus.ini, en indiquant le courtier MQTT, etc.

Nous envisageons dans les futures implémentations d'ajouter des capteurs, par exemple, la température, l'humidité et le CO2 dans le système. L'idée est d'obtenir des données autour des villes pour les rendre disponibles à la communauté.

Nous énumérons ci-dessous les prochaines étapes que vous pouvez pour améliorer le projet:

  • Réécrivez le code en utilisant C/C++;
  • Améliorer l'algorithme ML;
  • Re-factoriser le code python;
  • Déploiement dans un bus;

Nous tenons à remercier Embarcados et Qualcomm pour tout le soutien apporté.

Collaborateurs:

Bruno Monteiro - [email protected]

Kléber Drobowok - [email protected]

Vinicius de Oliveira - [email protected]

Étape 8: Références

[1]

[2]

[3]

[4]

[5]

Conseillé: