Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Среди известных проблем и трудностей общественного транспорта населению не хватает информации в режиме реального времени и с наименьшей настойчивостью. Переполненность автобусов общественного транспорта отталкивает пользователей, которые предпочитают использовать собственные транспортные средства, даже если они все еще находятся в пробке в течение нескольких часов. Если информация в реальном времени, такая как количество автобусов, легко доступна для пользователя, он может выбрать, ждать ли следующего автобуса, передвигаться на автобусе или использовать собственное транспортное средство. Возможность выбора делает общественный транспорт более привлекательным для пользователя.
Подсчет или оценка людей в помещении может выполняться разными способами, среди которых наиболее часто используются:
- Тепловизионные изображения;
- Компьютерное зрение;
- Счетчик лиц;
Среди нескольких трудностей, связанных с оценкой людей в среде с использованием компьютерного зрения, основными являются:
- Окклюзии людей;
- Инвертирующее освещение;
- Статическая окклюзия, то есть люди за предметами;
- Угол обзора камеры к окружающей среде;
Задача этого проекта состоит в том, чтобы узнать правильный угол наклона камеры, который лучше всего поможет в вычитании фона изображения, а также переменную освещенность в течение дня внутри автобуса.
Основная цель предложения - создать надежную и настраиваемую модель для оценки перенаселенности и сделать результаты доступными для населения через смартфоны.
Шаг 1: материалы
Материал, необходимый для проекта, следующий:
1 доска Dragon Board 410c;
1 х USB-камера;
1 х смартфон Android;
Шаг 2: Установите Linaro в Dragonboard 410c
Следуя инструкциям по ссылке ниже, установите Linaro 17.09 на DragonBoard 410c. Мы рекомендуем установить Linaro 17.09 для поддержки ядром GPS.
www.96boards.org/documentation/consumer/dr…
Шаг 3: Шаг 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 установить opencv-contrib-python
- pip install twilio
- pip install matplotlib
Основная программа была разделена на классы:
- CamBus - основной класс;
- Датчик - класс для получения таких данных, как положение GPS, температура, Co2.
- Счетчик - класс с алгоритмом обработки изображения.
Убедитесь, что все библиотеки установлены, и запустите python CamBus_v1.py.
Шаг 4. Настройка 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. Настройте API Twilio и Dweet
Также была создана 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 (Machine Learning). Итак, мы решили использовать библиотеку машинного обучения OpenCV, и у нас возникла еще одна проблема, потому что найти хороший ввод данных для алгоритма машинного обучения было проблемой, на которую мы потратили много дней. Мы использовали алгоритм OpenCV SVM, но не работал. Мы использовали OpenCV Naive Bayses, и этот работал нормально. Мы пробовали использовать нейронные сети Tensorflow и CNN, но пока этого не сделали. CNN использует большую вычислительную мощность, чего у нас не было. Использование OpenCV ML и базовых методов OpenCV помогло нам достичь хорошей скорости обнаружения людей. Тем не менее, для каждого типа видео мы должны адаптировать параметры OpenCV, чтобы достичь хорошей скорости обнаружения людей и избежать ложных срабатываний. В середине этих двух месяцев мы разработали нашу первую идею сделать центр сбора данных, а не только количество пассажиров и местоположение по GPS. Мы решили собирать данные не с помощью других датчиков, таких как температура и т. Д. Мы создали файл.ini, чтобы параметризовать приложение и сделать его настраиваемым. В файле Cambus.ini вы можете настроить приложение разными способами.
Шаг 7: Результаты и дальнейшая работа
Как видно на видео, счетчик работает точно. Синие линии обозначают предел ввода, а красная линия - предел вывода. В этом случае для моделирования использовалось видео, потому что мы не могли развернуть его на шине.
Имейте в виду, что некоторые изменения должны быть внесены в ваше состояние, касающееся размера видео, угла камеры, яркости и т. Д. Каждый тип видео должен иметь собственную адаптацию параметров, таких как фон всасывания ядра opencv и так далее.
Также измените переменные в cambus.ini, указав брокера MQTT и так далее.
В будущих реализациях мы планируем добавить в систему датчики, например, температуры, влажности и CO2. Идея состоит в том, чтобы получить данные о городах, сделав их доступными для сообщества.
Ниже мы перечислим следующие шаги, которые вы можете сделать для улучшения проекта:
- Перепишите код на C / C ++;
- Улучшить алгоритм машинного обучения;
- Рефакторный код Python;
- Развертывание в автобусе;
Мы хотели бы поблагодарить Embarcados и Qualcomm за оказанную поддержку.
Соавторы:
Бруно Монтейро - [email protected]
Клебер Дробовок - [email protected]
Винисиус де Оливейра - [email protected]
Шаг 8: ссылки
[1]
[2]
[3]
[4]
[5]