Съдържание:

Cambus - Система за събиране на данни за градски автобус: 8 стъпки
Cambus - Система за събиране на данни за градски автобус: 8 стъпки

Видео: Cambus - Система за събиране на данни за градски автобус: 8 стъпки

Видео: Cambus - Система за събиране на данни за градски автобус: 8 стъпки
Видео: CS50 2014 – 7-я неделя 2024, Ноември
Anonim
Cambus - Система за събиране на данни за градски автобус
Cambus - Система за събиране на данни за градски автобус

Сред проблемите и трудностите, известни в обществения транспорт, населението няма информация в реално време и с най -малко увереност. Пренаселеността на автобусите за обществен транспорт прогонва потребителите, които предпочитат да използват собствени превозни средства, въпреки че все още са в движение с часове. Ако информацията в реално време, като например броя на автобусите, е лесно достъпна за потребителя, той може да избере дали да изчака следващия автобус или да се придвижва с автобус или да използва собствено превозно средство. Силата на избор прави обществения транспорт по -привлекателен вариант за потребителя.

Преброяването или оценяването на хората на закрито може да се извърши по много начини, сред които най -често използваните са:

  • Термични изображения;
  • Компютърно зрение;
  • Брояч за лице;

Сред няколкото трудности при оценката на хората в среда, използваща компютърно зрение, основните са:

  • Запушвания на хора;
  • Инвертиращо осветление;
  • Статична оклузия, тоест хора зад обекти;
  • Ъгъл на камерата спрямо околната среда;

Предизвикателство за този проект е да се знае правилният ъгъл на камерата, който ще помогне най -добре при изваждането на фона на изображението, както и променливата яркост през деня в автобуса.

Основната цел на предложението е да се създаде стабилен и конфигурируем модел, който да оцени пренаселеността и да направи резултатите достъпни за населението чрез смартфони.

Стъпка 1: Материали

Необходимите материали за проекта са следните:

1 x Dragon Board 410c;

1 x USB камера;

1 x смартфон Android;

Стъпка 2: Инсталирайте Linaro в Dragonboard 410c

Инсталирайте Linaro в Dragonboard 410c
Инсталирайте Linaro в Dragonboard 410c
Инсталирайте Linaro в Dragonboard 410c
Инсталирайте Linaro в Dragonboard 410c

Следвайки инструкциите на връзката по -долу, за да инсталирате Linaro 17.09 на DragonBoard 410c. Препоръчваме да инсталирате Linaro 17.09 за поддръжка на ядрото за GPS.

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

Стъпка 3: Стъпка 2: Инсталирайте библиотеки и изтеглете изходния код от GitHub

Стъпка 2: Инсталирайте библиотеки и изтеглете изходния код от GitHub
Стъпка 2: Инсталирайте библиотеки и изтеглете изходния код от GitHub

Cambus има модулна архитектура и кодов дизайн. Възможно е да кодирате свой собствен алгоритъм за машинно обучение, да преминете към друга облачна услуга и да създадете свои собствени потребителски приложения.

За да стартирате проекта cambus, първо трябва да изтеглите изходния код от github (https://github.com/bmonteiro00/cambus). Инсталирайте python (Cambus беше режим за изпълнение на версия 2.7 и> 3.x) и следните библиотеки, използвайки „pip“(sudo apt-get install python-pip). Ще бъде необходимо да се инсталират куп библиотеки в системата Linaro (Също така се препоръчва да се създаде виртуална среда - pip install virtualenv - за да се изолира системата Cambus от SO). Моля, инсталирайте следните библиотеки:

  • pip install paho-mqtt
  • pip install numpy
  • pip инсталирайте opencv-python
  • pip install opencv-contrib-python
  • pip install twilio
  • pip install matplotlib

Основната програма беше разделена на класове:

  • CamBus - основният клас;
  • Сензор - клас за получаване на данни като GPS позиция, температура, Co2.
  • Counter - клас с алгоритъм за обработка на изображения.

Уверете се, че всички библиотеки са инсталирани и изпълнете python CamBus_v1.py.

Стъпка 4: Настройка на AWS IoT Core, DynamoDB

Настройване на AWS IoT Core, DynamoDB
Настройване на AWS IoT Core, DynamoDB
Настройване на AWS IoT Core, DynamoDB
Настройване на AWS IoT Core, DynamoDB
Настройване на AWS IoT Core, DynamoDB
Настройване на AWS IoT Core, DynamoDB

Използвахме ядрото на AWS IoT като брокер на MQTT с TLS и X509 и NoSQL и DynamoDB за регистриране на данни. Ще трябва да създадете акаунт на адрес https://aws.amazon.com/free.). След това ще трябва да следвате стъпките по -долу, за да създадете нещо и да се интегрирате с Dynamo:

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

Стъпка 5: Настройка на Twilio и Dweet API

Настройка на Twilio и Dweet API
Настройка на Twilio и Dweet API
Настройка на Twilio и Dweet API
Настройка на Twilio и Dweet API

SMS услугата Twilio също беше настроена. Вижте URL адреса по -долу за инструкции за завършване на тази стъпка:

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

Интеграцията между приложението Android и системата беше извършена чрез REST, използвайки платформата Dweet. Не се изисква регистрация.

dweet.io/

Стъпка 6: Предизвикателства

По време на нашето развитие се сблъскахме с много предизвикателства, започвайки от OpenCV техники до AWS платформа. Решихме да кодираме с Python, за да спестим време за разработка в C/C ++. По време на нашето разработване само основните методи на Opencv като:

• cv2. GaussianBlur (..)

• cv2.threshold (..)

• cv2.morphologyEx (..)

• cv2.contourArea (..)

• cv2.findContours (..)

Тези основни методи не бяха достатъчни, за да се постигне добро качество при откриването на хора. Използвани са сценарии с треперещо видео ML (машинно обучение). И така, решихме да използваме библиотеката за машинно обучение на OpenCV и получихме друг проблем, защото намирането на добро въвеждане на данни за ML алгоритъма беше проблем, който прекарахме много дни. Използвахме OpenCV SVM алгоритъм, но не работихме. Използвахме OpenCV Naive Bayses и този работи добре. Опитахме се да използваме невронни мрежи Tensorflow и CNN, но засега не го направихме. CNN използва много процесорна мощ, нещо, което нямахме. Използването на OpenCV ML и основите на методите на OpenCV ни помогнаха да достигнем добра степен на откриване на хора. Независимо от това, за всеки вид видео трябва да адаптираме параметрите на OpenCV, за да достигнем добър процент на откриване на хора и да избегнем фалшиви положителни резултати. само броя на пътниците и местоположението на GPS. Решихме да не събираме данни, използвайки други сензори като температура и т.н. Създадохме.ini файл, за да параметризираме приложението и да го конфигурираме. На файла Cambus.ini можете да конфигурирате приложението по много начини.

Стъпка 7: Резултати и бъдеща работа

Както можете да видите във видеото, броячът работи точно. Сините линии маркират входната граница, а червената - изходната граница. В този случай беше използвано видео за симулиране, тъй като не можахме да го разгърнем в шина.

Имайте предвид, че трябва да се направят някои промени във вашето състояние по отношение на размера на видеото, ъгъла на камерата, яркостта и т.н. Всеки тип видео трябва да бъде собствена адаптация на параметри, като например фона на извличане на ядрото на opencv и т.н.

Моля, променете и променливите на cambus.ini, като посочите MQTT брокер и т.н.

Смятаме в бъдещи реализации да добавим сензори, например температура, влажност и CO2 в системата. Идеята е да се получат данни около градовете, като ги направят достъпни за общността.

След това изброяваме следващите стъпки, които можете да подобрите проекта:

  • Препишете кода отново, използвайки C/C ++;
  • Подобряване на алгоритъма ML;
  • Повторно факториране на python код;
  • Разгръщане в автобус;

Бихме искали да благодарим на Embarcados и Qualcomm за цялата оказана подкрепа.

Сътрудници:

Бруно Монтейро - [email protected]

Kleber Drobowok - [email protected]

Виниций де Оливейра - [email protected]

Стъпка 8: Препратки

[1]

[2]

[3]

[4]

[5]

Препоръчано: