Taula de continguts:

Cambus - Sistema de recollida de dades en bus urbà: 8 passos
Cambus - Sistema de recollida de dades en bus urbà: 8 passos

Vídeo: Cambus - Sistema de recollida de dades en bus urbà: 8 passos

Vídeo: Cambus - Sistema de recollida de dades en bus urbà: 8 passos
Vídeo: Машинное обучение для разработчиков Java: переход на стек технологий ИИ. 2024, Desembre
Anonim
Cambus - Sistema de recollida de dades en autobusos urbans
Cambus - Sistema de recollida de dades en autobusos urbans

Entre els problemes i dificultats coneguts en el transport públic, la població manca d’informació en temps real i amb la menys assertivitat. La massificació d’autobusos de transport públic allunya els usuaris que prefereixen utilitzar els seus propis vehicles, tot i que continuen circulant durant hores. Si la informació en temps real, com ara el nombre d’autobusos, està fàcilment disponible per a un usuari, pot triar si esperar al següent autobús o desplaçar-se en autobús o utilitzar un vehicle propi. El poder d’elecció fa del transport públic una opció més atractiva per a l’usuari.

Comptar o estimar persones a l'interior es pot fer de moltes maneres, entre les quals s'utilitzen més habitualment:

  • Imatges tèrmiques;
  • Visió per ordinador;
  • Comptador de cares;

Entre les diverses dificultats per estimar persones en un entorn que utilitzen la visió per computador, les principals són:

  • Oclusions de persones;
  • Invertir la il·luminació;
  • Oclusió estàtica, és a dir, persones darrere dels objectes;
  • Angle de la càmera amb el medi ambient;

Un repte per a aquest projecte és conèixer l’angle correcte de la càmera que millor ajudarà a la resta del fons de la imatge, així com la lluminositat variable durant el dia a l’interior del bus.

L’objectiu principal de la proposta és crear un model robust i configurable per estimar la massificació i posar els resultats a disposició de la població a través dels telèfons intel·ligents.

Pas 1: materials

El material necessari per al projecte és el següent:

1 x Dragon Board 410c;

1 x càmera USB;

1 x Smartphone Android;

Pas 2: instal·leu Linaro a Dragonboard 410c

Instal·leu Linaro a Dragonboard 410c
Instal·leu Linaro a Dragonboard 410c
Instal·leu Linaro a Dragonboard 410c
Instal·leu Linaro a Dragonboard 410c

Seguiu les instruccions de l’enllaç següent per instal·lar Linaro 17.09 al DragonBoard 410c. Recomanem instal·lar Linaro 17.09 per a la compatibilitat del nucli amb GPS.

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

Pas 3: Pas 2: Instal·leu biblioteques i baixeu el codi font des de GitHub

Pas 2: instal·leu biblioteques i baixeu el codi font des de GitHub
Pas 2: instal·leu biblioteques i baixeu el codi font des de GitHub

Cambus té una arquitectura modular i un disseny de codi. És possible codificar el vostre propi algorisme d'aprenentatge automàtic, canviar a un altre servei al núvol i crear les vostres pròpies aplicacions d'usuari.

Per executar el projecte cambus, primer heu de descarregar el codi font de github (https://github.com/bmonteiro00/cambus). Instal·leu python (el mode Cambus funcionava a la versió 2.7 i> 3.x) i les biblioteques següents utilitzant 'pip' (sudo apt-get install python-pip). Caldrà instal·lar un munt de biblioteques al sistema Linaro (A més, es recomana crear un entorn virtual - pip install virtualenv - per aïllar el sistema Cambus del SO). Instal·leu les biblioteques següents:

  • pip install paho-mqtt
  • pip instal·lar numpy
  • instal·lar pip opencv-python
  • pip instal·lar opencv-contrib-python
  • pip instal·lar twilio
  • pip instal·lar matplotlib

El programa principal es va dividir en classes:

  • CamBus: la classe principal;
  • Sensor: una classe per obtenir dades com la posició del GPS, la temperatura i el CO2.
  • Contaclasse amb algorisme de processament d 'imatges.

Assegureu-vos que s’han instal·lat totes les biblioteques i executeu Python CamBus_v1.py.

Pas 4: Configuració d’AWS IoT Core, DynamoDB

Configuració d’AWS IoT Core, DynamoDB
Configuració d’AWS IoT Core, DynamoDB
Configuració d’AWS IoT Core, DynamoDB
Configuració d’AWS IoT Core, DynamoDB
Configuració d’AWS IoT Core, DynamoDB
Configuració d’AWS IoT Core, DynamoDB

Hem utilitzat el nucli AWS IoT com a broker MQTT amb TLS i X509 i NoSQL i DynamoDB per registrar dades. Haureu de crear un compte a https://aws.amazon.com/free.). A continuació, haureu de seguir els passos següents per crear una cosa i integrar-la amb Dynamo:

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

Pas 5: configureu les API de Twilio i Dweet

Configureu les API de Twilio i Dweet
Configureu les API de Twilio i Dweet
Configureu les API de Twilio i Dweet
Configureu les API de Twilio i Dweet

També es va crear el servei Twilio SMS. Consulteu l'URL següent per obtenir instruccions per completar aquest pas:

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

La integració entre l’aplicació per a Android i el sistema es va fer mitjançant REST mitjançant la plataforma Dweet. No cal registrar-se.

dweet.io/

Pas 6: reptes

Durant el nostre desenvolupament, vam afrontar molts reptes, des de les tècniques OpenCV fins a la plataforma AWS. Vam decidir codificar amb Python per estalviar temps desenvolupant-vos en C / C ++. Durant el nostre desenvolupament només els mètodes bàsics d’Opencv, com ara:

• cv2. GaussianBlur (..)

• llindar cv2. (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Aquests mètodes bàsics no eren suficients per assolir una bona qualitat en la detecció de persones. Es van utilitzar escenaris amb un vídeo inestable ML (Machine Learning). Per tant, vam decidir fer servir la biblioteca d’aprenentatge automàtic OpenCV i vam tenir un altre problema perquè trobar una bona entrada de dades per a l’algorisme ML era un problema que vam passar molts dies. Hem utilitzat l’algorisme OpenCV SVM però no hem treballat. Vam utilitzar OpenCV Naive Bayses i aquest va funcionar bé. Hem intentat utilitzar les xarxes neuronals Tensorflow i CNN, però no ho hem aconseguit per ara. CNN utilitza molta potència de processament, cosa que no teníem. L’ús d’OpenCV ML i els mètodes bàsics d’OpenCV ens van ajudar a assolir un bon ritme de detecció de persones. No obstant això, per a cada tipus de vídeo hem d’adaptar els paràmetres d’OpenCV per tal d’arribar a una bona taxa de detecció de persones i evitar falsos positius. A la meitat d’aquests dos mesos vam desenvolupar la nostra primera idea de fer un centre de recopilació de dades que no només el nombre de passatgers i la ubicació del GPS. Vam decidir no recopilar dades mitjançant altres sensors com la temperatura, etc. Hem creat un fitxer.ini per parametritzar l’aplicació i configurar-la. Al fitxer Cambus.ini podeu configurar l'aplicació de moltes maneres.

Pas 7: Resultats i treball futur

Com podeu veure al vídeo, el comptador funciona amb precisió. Les línies blaves marquen el límit d’entrada i la línia vermella el límit de sortida. En aquest cas, es va fer servir un vídeo per simular perquè no el vam poder desplegar a un autobús.

Tingueu en compte que s’ha de fer algun canvi en la vostra condició quant a la mida del vídeo, l’angle de la càmera, la lluminositat, etc.

Si us plau, també canvieu les variables a cambus.ini, indicant el corredor MQTT, etc.

Considerem en futures implementacions afegir sensors, per exemple, de temperatura, humitat i CO2 al sistema. La idea és obtenir dades de les ciutats que les facilitin a la comunitat.

A continuació, es detallen els següents passos que podeu fer per millorar el projecte:

  • Torneu a escriure el codi amb C / C ++;
  • Millorar l'algorisme ML;
  • Torneu a factoritzar el codi python;
  • Desplegament en un autobús;

Volem agrair a Embarcados i Qualcomm tot el suport donat.

Col·laboradors:

Bruno Monteiro: [email protected]

Kleber Drobowok: [email protected]

Vinicius de Oliveira - [email protected]

Pas 8: referències

[1]

[2]

[3]

[4]

[5]

Recomanat: