Sadržaj:
- Korak 1: Materijali
- Korak 2: Instalirajte Linaro u Dragonboard 410c
- Korak 3: Korak 2: Instalirajte knjižnice i preuzmite izvorni kod s GitHub -a
- Korak 4: Postavljanje AWS IoT Core, DynamoDB
- Korak 5: Postavljanje Twilio i Dweet API -ja
- Korak 6: Izazovi
- Korak 7: Rezultati i budući rad
- Korak 8: Reference
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Među problemima i poteškoćama poznatim u javnom prijevozu, stanovništvu nedostaju informacije u stvarnom vremenu i s najmanje asertivnosti. Prenapučenost autobusa za javni prijevoz tjera korisnike koji više vole koristiti vlastita vozila, iako su još uvijek satima u prometu. Ako su informacije u stvarnom vremenu, poput broja autobusa, lako dostupne korisniku, on može izabrati hoće li čekati sljedeći autobus ili će se kretati autobusom ili koristiti vlastito vozilo. Snaga izbora čini javni prijevoz privlačnijom opcijom za korisnika.
Brojanje ili procjena ljudi u zatvorenom prostoru može se izvršiti na mnogo načina, među kojima su najčešće zaposleni:
- Toplinske slike;
- Računalni vid;
- Brojač lica;
Među nekoliko poteškoća u procjeni ljudi u okruženju pomoću računalnog vida, glavne su:
- Okluzije ljudi;
- Invertirajuća rasvjeta;
- Statička okluzija, odnosno ljudi iza objekata;
- Kut kamere prema okolišu;
Izazov za ovaj projekt je znati pravilan kut kamere koji će najbolje pomoći u oduzimanju pozadine slike, kao i promjenjivoj svjetlini tijekom dana unutar autobusa.
Glavni cilj prijedloga je stvoriti robustan i konfigurabilan model za procjenu prenapučenosti i učiniti rezultate dostupnim stanovništvu putem pametnih telefona.
Korak 1: Materijali
Za projekt je potreban sljedeći materijal:
1 x Zmajeva ploča 410c;
1 x USB kamera;
1 x pametni telefon Android;
Korak 2: Instalirajte Linaro u Dragonboard 410c
Slijedite upute na donjoj poveznici za instaliranje Linara 17.09 na DragonBoard 410c. Preporučujemo instaliranje Linara 17.09 za podršku jezgre za GPS.
www.96boards.org/documentation/consumer/dr…
Korak 3: Korak 2: Instalirajte knjižnice i preuzmite izvorni kod s GitHub -a
Cambus ima modularnu arhitekturu i dizajn koda. Moguće je kodirati vlastiti algoritam strojnog učenja, promijeniti na drugu uslugu u oblaku i stvoriti vlastite korisničke aplikacije.
Da biste pokrenuli cambus projekt, prvo morate preuzeti izvorni kod s github -a (https://github.com/bmonteiro00/cambus). Instalirajte python (Cambus je bio način rada na verzijama 2.7 i> 3.x) i sljedeće knjižnice koristeći 'pip' (sudo apt-get install python-pip). Bit će potrebno instalirati hrpu knjižnica u sustav Linaro (Također, preporučuje se stvaranje virtualnog okruženja - pip install virtualenv - kako bi se izolirao Cambusov sustav od SO). Molimo instalirajte sljedeće biblioteke:
- pip install paho-mqtt
- pip install numpy
- pip instalirajte opencv-python
- pip install opencv-contrib-python
- pip install twilio
- pip install matplotlib
Glavni program bio je podijeljen u klase:
- CamBus - glavna klasa;
- Senzor - klasa za dobivanje podataka kao što su GPS položaj, temperatura, Co2.
- Counter -class s algoritmom za obradu slike.
Provjerite jesu li sve knjižnice instalirane i izvedite python CamBus_v1.py.
Korak 4: Postavljanje AWS IoT Core, DynamoDB
Za bilježenje podataka koristili smo jezgru AWS IoT -a kao MQTT posrednika s TLS -om i X509 te NoSQL -om i DynamoDB -om. Morat ćete stvoriti račun na https://aws.amazon.com/free.). Zatim ćete morati slijediti donje korake za stvaranje stvari i integraciju s Dynamom:
docs.aws.amazon.com/iot/latest/developergu…
Korak 5: Postavljanje Twilio i Dweet API -ja
Postavljena je i usluga Twilio SMS. Za dovršetak ovog koraka pogledajte donji URL:
www.twilio.com/docs/iam/api/account
Integracija između android aplikacije i sustava izvršena je putem REST -a na platformi Dweet. Nije potrebna prijava.
dweet.io/
Korak 6: Izazovi
Tijekom našeg razvoja suočili smo se s mnogim izazovima, počevši od OpenCV tehnika do AWS platforme. Odlučili smo kodirati s Pythonom kako bismo uštedjeli vrijeme na razvoju u C/C ++. Tijekom našeg razvoja samo su osnovne metode Opencv -a, kao što su:
• cv2. GaussianBlur (..)
• cv2.threshold (..)
• cv2.morphologyEx (..)
• cv2.contourArea (..)
• cv2.findContours (..)
Ove osnovne metode nisu bile dovoljne za postizanje dobre kvalitete u otkrivanju ljudi. Korišteni su scenariji s klimavim videom ML (Machine Learning). Stoga smo odlučili koristiti biblioteku strojnog učenja OpenCV -a i dobili smo još jedan problem jer je pronalaženje dobrog unosa podataka za ML algoritam bio problem na koji smo proveli mnogo dana. Koristili smo OpenCV SVM algoritam, ali nije uspio. Koristili smo OpenCV Naive Bayses i ovaj je radio OK. Pokušali smo koristiti neuronske mreže Tensorflow i CNN, no to za sada nismo uspjeli. CNN koristi veliku procesorsku snagu, nešto što mi nismo imali. Korištenje OpenCV ML i osnova OpenCV metoda pomoglo nam je da dosegnemo dobru stopu otkrivanja ljudi. Ipak, za svaku vrstu videa moramo prilagoditi parametre OpenCV -a kako bismo postigli dobru stopu otkrivanja ljudi i izbjegli lažno pozitivne rezultate. Sredinom ova dva mjeseca razvili smo našu prvu ideju da centar za prikupljanje podataka ne samo broj putnika i GPS lokacija. Odlučili smo ne prikupljati podatke pomoću drugih senzora kao što su temperatura i tako dalje. Napravili smo.ini datoteku za parametrizaciju aplikacije i njezinu konfiguraciju. Na datoteci Cambus.ini aplikaciju možete konfigurirati na mnogo načina.
Korak 7: Rezultati i budući rad
Kao što možete vidjeti u videu, brojač radi točno. Plave linije označavaju ulaznu granicu, a crvena liniju izlaznu granicu. U ovom slučaju za simulaciju je korišten video zapis jer ga nismo mogli primijeniti na sabirnicu.
Imajte na umu da se u vaše stanje moraju unijeti neke promjene u pogledu veličine videozapisa, kuta kamere, svjetline itd. Svaka vrsta videozapisa mora biti prilagođena vlastitim parametrima, poput pozadine suktracije jezgre opencv, itd.
Promijenite i varijable na cambus.ini, označavajući posrednika MQTT -a itd.
U budućim implementacijama razmatramo dodavanje senzora, na primjer, temperature, vlage i CO2 u sustav. Ideja je doći do podataka po gradovima i učiniti ih dostupnima zajednici.
Slijedi popis sljedećih koraka koje možete učiniti kako biste poboljšali projekt:
- Ponovno napišite kod pomoću C/C ++;
- Poboljšati algoritam ML;
- Ponovite faktor python koda;
- Uvođenje u autobus;
Ovim putem zahvaljujemo Embarcados -u i Qualcomm -u na svoj podršci.
Suradnici:
Bruno Monteiro - [email protected]
Kleber Drobowok - [email protected]
Vinicius de Oliveira - [email protected]
Korak 8: Reference
[1]
[2]
[3]
[4]
[5]