Российскими разработчиками создана система видеоаналитики и подсчета пассажиропотока с функциями бесконтактного контроля температуры и режима ношения средств защиты - “Контроль пассажиров”.
Система позволяет решать следующие задачи:
Потоковая термометрия пассажиров и водителя транспортного средства.
Автоматический контроль ношения индивидуальных средств защиты (масок),
Контроль соблюдения социальной дистанции между пассажирами.
Подсчет пассажиров (с использованием технологии одновременной обработки видеопотока в видимом и инфракрасном спектре), отслеживание фактической загрузки линий.
Пресечение махинаций со стороны пассажиров, уклоняющихся от оплаты проезда, а также со стороны водителя/контролера по взиманию денег с пассажиров без выписывания билетов.
Контроль безопасного вождения с определением резких маневров или засыпания водителя, а также курения в салоне.
В этой статье мы подробно расскажем о технологии компьютерного зрения и применяемых в системе технических решениях. Надеемся информация, представленная в тексте, будет интересна не только обывателем, но и полезна IT-разработчикам, владельцам пассажирских автопарков и всем неравнодушным к развитию инновационной сферы.
Описание системы
Системы мониторинга пассажиров общественного транспорта основывается на одновременной обработке видео потоков от двух видео камер в видимом и дальнем (8...14 мкм) инфракрасном диапазонах.
В качестве вычислительной платформы прототипа используется бортовой терминал СКАУТ MT-700 DVR PRO, к которому подключаются тепловизор и обычная IP камера, а также монитор и клавиатура для настройки системы и визуализации результатов (Рисунок 1).
![Рисунок 1. Схема прототипа Рисунок 1. Схема прототипа](https://habrastorage.org/getpro/habr/upload_files/d7c/41b/da1/d7c41bda1f7a7e7a68ab6f8f5d8c2462.png)
В качестве тепловизора используется камера Dahua TPC-DF1241-T
Обработка видеопотоков осуществляется программно с помощью библиотеки компьютерного зрения OpenCV с использованием нейронных сетей для распознавания и классификации объектов.
1. Подсчет пассажиров
Контроль правил перевозки пассажиров как со стороны водителя/контролера, так и пассажиров выполняется на сегодняшней день посредством людей-контролеров, с помощью механических турникетов или автоматизированных систем контроля пассажиропотока.
На данный момент часты случаи обмана работодателя за счет провозки части пассажиров с оплатой “себе в карман”. В некоторых случаях водитель с кондуктором работают в сговоре и совершают даже дополнительные рейсы. В последнем случае компания перевозчик не только несет убытки за счет недополученной прибыли с таких рейсов, но еще и фактически оплачивает бензин на эти рейсы.
На мировом рынке присутствуют разнообразные системы подсчета пассажиров в салоне транспорта, самые точные из которых работают по принципу анализа видеопотока, считая пассажиров по головам. Однако, данные системы имеют ложные срабатывания на такие факторы, как случайное перекрытие головы пассажира большими теплыми головными уборами, воздушными шариками, и т.д.
Решение подсчета пассажиров позволяет сократить ложные срабатывания за счет использования уникальной технологии автоматического подсчета, основанной на одновременной обработке видео потока сразу с двух видео камер в видимом и инфракрасном диапазонах.
То есть, картина происходящего в салоне транспортного средства фиксируется одновременно видеокамерой, работающей в видимом диапазоне, и инфракрасной видеокамерой. Камеры настраиваются таким образом, что координаты точки на изображении, полученном с одной камеры, можно было однозначно отобразить на координаты соответствующей точки на изображении другой камеры.
Изображение видимого спектра поступает на вход нейронной сети, и результат обнаружения людей корректируется с помощью инфракрасного изображения. Такой подход позволяет использовать признаки объекта (в видимом и инфракрасном диапазоне видны различные детали происходящего, а объединенная картина является более полной), полученных с обеих видеокамер, тем самым существенно повышая точность распознавания и снижая число ложных срабатываний.
Базовые алгоритмы
При подсчете пассажиров на настоящий момент используются методы, которые базируются на двух алгоритмах: обнаружение людей (голов) и трекинг людей.<o:p>
1.1. Обнаружение людей
1.1.1. Нейронные сети для обнаружения объектов
Алгоритм распознавания пассажиров основан на использовании сверточных нейронных сетей. Название архитектура сети получила из-за наличия операции свёртки, суть которой в том, что каждый фрагмент изображения умножается на матрицу (ядро) свёртки поэлементно, а результат суммируется и записывается в аналогичную позицию выходного изображения (Рисунок 2).
![Рисунок 2. Архитектура свёрточной нейронной сети Рисунок 2. Архитектура свёрточной нейронной сети](https://habrastorage.org/getpro/habr/upload_files/624/9bd/b70/6249bdb709571d1b81e7940dd2995de4.png)
1.1.2. Выбор нейронной сети
Для применения в проекте был проведен анализ существующих на данный момент нейросетей для обнаружения и распознавания объектов, после чего выбрана нейросеть Darknet YOLOv4.
Графики сравнения популярных нейросетей, используемых для детекции объектов, представлены далее (Рисунок 3). Сравнение проводилось на стандартном датасете Microsoft COCO.
Как видно из графиков YOLOV4 является оптимальной, т.к. сеть лежит на кривой оптимальности по Парето на графике AP(точность) / FPS(производительность).
Для сравнения были использованы данные из статей, сравнение выполнялось только на GPU с одинаковой архитектурой.
Как видно из графиков, YOLOv4 требует в 5 раза более дешевое оборудование и при этом точнее, чем EfficientDet (Google-TensorFlow).
![Рисунок 3. Сравнение скорости и точности различных детекторов объектов Рисунок 3. Сравнение скорости и точности различных детекторов объектов](https://habrastorage.org/getpro/habr/upload_files/423/ad4/fdc/423ad4fdcf606b6334c83fe89cb90006.png)
1.1.3. Подготовка датасетов
Распознавание изображений с помощью нейронных сетей возможно только посредством специального обучения, представляющего собой процесс, направленный на настройку параметров нейронной сети. Для успешного распознавания изображения нейронная сеть должна быть предварительно обучена на большом числе наборов размеченных данных (датасетов). Этот процесс очень похож на тот, который помогает наработать нейронные связи в человеческом мозге — мы обладаем определенными знаниями, видим объект, анализируем его и идентифицируем, при идентификации следующих аналогичных объектов процесс проходит точнее и быстрее.
В сети Интернет есть готовые наборы аннотированных данных, но они не всегда могут быть пригодны при разработке коммерческих продуктов. Для обучения нейросети для подсчета пассажиров было собрано порядка 28 тысяч картинок.
1.1.4 Отслеживание объектов (трекинг людей)
Одной из наиболее актуальных задач для современных систем видеонаблюдения является подсчет множества объектов и учет их перемещений в пространстве. Решение данной задачи предлагается в сфере машинного зрения, с использованием алгоритмов трекинга.
При выборе алгоритма трекинга для применения в разработанной бортовой системе видеоаналитики и подсчета пассажиропотока был проведен анализ наиболее популярных алгоритмов. С учетом потребности использования в реальном масштабе времен при сравнении характеристик алгоритм SORT (Simple Online And Realtime Tracking, алгоритмический подход к отслеживанию объектов) был определен как трекер с лучшим соотношением скорость/MOTA (Multi-object Tracking Accuracy) на ресурсе «Mutliple Object Tracking Benchmark» (1 место в списке MOT20) (Рисунок 4, источник: https://motchallenge.net/results/MOT20/?orderBy=runtime&orderStyle=DESC)), (Рисунок 5 – на диаграмме сравнивалась точность и скорость трекера, измеренная в кадрах в секунду (FPS) [Hz], т. е. положение выше и правее является наилучшим).
![Рисунок 4. Результаты сравнения характеристик алгоритмов трекинга («Mutliple Object Tracking Benchmark») Рисунок 4. Результаты сравнения характеристик алгоритмов трекинга («Mutliple Object Tracking Benchmark»)](https://habrastorage.org/getpro/habr/upload_files/380/4df/9d6/3804df9d6ff98fc31a32ffc60f0a373d.png)
![Рисунок 5. Результаты сравнения точности и скорости алгоритмов трекинга[1] Рисунок 5. Результаты сравнения точности и скорости алгоритмов трекинга[1]](https://habrastorage.org/getpro/habr/upload_files/46e/f9e/0d4/46ef9e0d4db5303e83d74dac873d0239.png)
Использованный алгоритм SORT решает задачу трекинга в два этапа: сначала решается задача обнаружения объектов требуемых классов в кадре, а потом выполняется их сопоставление с результатами обнаружения, полученными на предыдущих кадрах.
В приложениях видеонаблюдения в процессе трекинга множества объектов важно отслеживать соответствие объектов текущего фрейма объектам предыдущих фреймов. Каждая цель ограничивается прямоугольным фреймом и далее прогнозируется новое положение этого прямоугольного фрейма в текущем кадре. В процессе трекинга возможны ошибки, которые обусловлены различными обстоятельствами, такими как пересечения объектов между собой, пересечения объектов с объектами переднего плана сцены, изменения формы объектов.
Это алгоритм трекинга множества объектов, основанный на выделении характерных параметров объекта. Вероятностная модель построена на основе фильтра Калмана. Также используется Венгерский алгоритм для отслеживания компонентов. Информация, полученная посредством создания модели движения с параметрами центроида, площади и вектора скорости движущихся объектов при необходимом условии статической сцены и статической камеры, позволяет выявить коллизии слияния/разделения, алгоритм позволяет решить проблему соответствия объектов после разделения.
1.2. Реализация функции подсчета пассажиров
Для обнаружения и подсчета пассажиров используются следующие программные модули:
Модуль считывания видеопотока видимого спектра;
Модуль считывания видеопотока ИК спектра;
Модуль обнаружения голов пассажиров;
Модуль уточнения положения голов пассажиров;
Модуль отслеживания и подсчета пассажиров;
Модуль визуализации.
Взаимодействие модулей показано на блок-схеме (Рисунок 6):
![Рисунок 6. Взаимодействие программных модулей в процессе подсчета пассажиров Рисунок 6. Взаимодействие программных модулей в процессе подсчета пассажиров](https://habrastorage.org/getpro/habr/upload_files/09c/897/261/09c8972613e6acadfa8470e992e9b103.png)
Модуль считывания видеопотока видимого спектра обеспечивает:
получение потока изображений с камеры видимого диапазона,
исправление искажений,
конвертирование исходных изображений в изображения с разрешением 640х480 для дальнейшей обработки с помощью нейросетей,
вырезание отдельных участков из исходного изображения по заданным координатам.
Модуль считывания видеопотока ИК спектра обеспечивает:
получение потока изображений с камеры инфракрасного диапазона,
исправление искажений,
конвертирование исходных изображений в изображения с разрешением 640х480 для дальнейшей обработки с помощью нейросетей,
соотнесение координат «теплового» изображения с координатами изображения видимого спектра.
Модуль обнаружения голов пассажиров использует детектор на базе нейронной сетиYOLOv4_Tiny. Входными данными для этого модуля являются изображения видимого спектра с разрешением 640х480. Выходными данными являются координаты и размеры прямоугольных фреймов, которые соответствуют положению на изображении найденных голов пассажиров.
Исходный код модуля приведен в приложении А.2.
Модуль уточнения положения голов соотносит результаты работы модуля обнаружения голов с соответствующим тепловым изображением с целью дополнительной проверки правильности обнаружения пассажиров. Данный модуль предназначен для уменьшения количества ложных срабатываний при обнаружении пассажиров.
Модуль отслеживания и подсчета пассажиров позволяет отслеживать положение голов пассажиров между кадрами (алгоритм SORT), а также позволяет подсчитать как количество людей, пересекающих условную линию, так и суммарное число людей на кадре.
Модуль визуализации выводит на экран поток исходных изображений с выделенными головами пассажиров (с помощью прямоугольных фреймов) и счетчиком текущего числа пассажиров.
1.3. Результаты тестирования
Тестирование прототипа подсистемы подсчета людей проводилось в офисе (имитация салона автобуса).
1.3.1 Подсчет людей по головам
Снимки экранов при работе подсистемы подсчета пассажиров по головам представлены далее (Рисунок 7) (количество людей отображается в верхнем левом углу снимков). Как видно на скриншотах, при обнаружении ненастоящей головы человека на изображении видимого спектра эта голова фильтруется при анализе соответствующего участка на изображении ИК спектра и при подсчете игнорируется. Т.е. несмотря на то, что алгоритм на одном из кадров обнаружил 4 головы, суммарное число людей – 3.
![Рисунок 7. Снимки экранов при работе подсистемы подсчета пассажиров по головам Рисунок 7. Снимки экранов при работе подсистемы подсчета пассажиров по головам](https://habrastorage.org/getpro/habr/upload_files/c53/9e3/c5e/c539e3c5e3fd98528c6434b32593e3b1.png)
1.3.2 Подсчет входящих и выходящих пассажиров
Процесс подсчета «входящих» и «выходящих» пассажиров показан на скриншотах далее (Рисунок 8 - Рисунок 15).
![Рисунок 8. Условные линии для подсчета Рисунок 8. Условные линии для подсчета](https://habrastorage.org/getpro/habr/upload_files/822/78b/8f2/82278b8f2e847267539b55c7c14e13d7.png)
На скриншоте изображена условная линия, при пересечении которой производится увеличение счетчиков «входящих» и «выходящих» людей (перпендикуляр к линии указывает на направление входа).
![Рисунок 9. Приближение человека к условной линии Рисунок 9. Приближение человека к условной линии](https://habrastorage.org/getpro/habr/upload_files/592/797/b6d/592797b6d2d5a12571f169a4c0b7685a.png)
Голова человека попадает в область работы трекера (Heads tracks увеличивается на 1).
![Рисунок 10. Условная линия пересечена Рисунок 10. Условная линия пересечена](https://habrastorage.org/getpro/habr/upload_files/cf7/828/d8f/cf7828d8fc783b8e1499a64e1e89445a.png)
При пересечении линии в направлении «входа» счетчик «вошедших» (In) увеличивается на 1.
![Рисунок 11. К условной линии приближается следующий человек Рисунок 11. К условной линии приближается следующий человек](https://habrastorage.org/getpro/habr/upload_files/ba1/0bf/cec/ba10bfcec5b5dc9c8a418bc6647b5dd8.png)
Трекер отслеживает двух людей, один из которых готов пересечь линию.
![Рисунок 12. Второй человек проходит уловную линию Рисунок 12. Второй человек проходит уловную линию](https://habrastorage.org/getpro/habr/upload_files/a43/543/fca/a43543fca8d54a4b71ff1dd6deb8599f.png)
Счетчик «вошедших» увеличился на единицу. Теперь счетчик равен двум.
![Рисунок 13. Два человека «внутри автобуса» Рисунок 13. Два человека «внутри автобуса»](https://habrastorage.org/getpro/habr/upload_files/661/8b2/ebd/6618b2ebdcc37ba1665779b7795e5161.png)
Два человека находятся «внутри автобуса». Состояние счетчиков не изменилось.
![Рисунок 14. Вышел первый человек Рисунок 14. Вышел первый человек](https://habrastorage.org/getpro/habr/upload_files/ed6/5bf/6f3/ed65bf6f3a00a5482911a66d9e0e7313.png)
После пересечения линии в обратном направлении счетчик «вышедших» увеличивается на единицу.
![Рисунок 15. Вышел второй человек Рисунок 15. Вышел второй человек](https://habrastorage.org/getpro/habr/upload_files/df9/e09/c82/df9e09c82b53515d3b82e5e936d83f3e.png)
После пересечения линии вторым человеком общее количество «вошедших» и «вышедших» равно двум.
2. Обнаружение масок
На сегодняшний день в России и большинстве стран мира введены меры по противодействию распространения COVID-19. В частности, в большинстве стран мира, в том числе и в России, введено обязательное ношение защитных масок в общественном транспорте - эта мера применяется для профилактики распространения COVID-19. Наземный пассажирский транспорт является местом большого скопления людей и в период пандемии представляет собой место максимальной опасности заражения.
На данный момент контроль ношения масок в общественном транспорте осуществляется сотрудниками административно-пассажирской инспекции.
Разработанное решение позволяет вести автоматизированный контроль ношения средств защиты (масок), что существенно повышает эффективность применения, экономит средства на обеспечения процесса контроля и исключает коррупцию при проверке пассажиров.
2.1. Описание алгоритма
Алгоритм контроля ношения средств индивидуальной защиты использует нейронную сеть для обнаружения маски на лице человека и формирует признак ее наличия. Как и в случае с обнаружением голов пассажиров, для обнаружения масок была выбрана YOLOv4_Tiny.
В рамках реализации проекта для обучения нейросети с целью обнаружения масок использовались готовые датасеты из разных источников. Общий объем картинок для обучения составил более 9 тысяч.
2.2. Реализация функции обнаружения масок
Для обнаружения средств индивидуальной защиты (масок) используются следующие программные модули:
Модуль считывания видеопотока видимого спектра;
Модуль считывания видеопотока ИК спектра;
Модуль обнаружения голов пассажиров;
Модуль уточнения положения голов пассажиров;
Модуль обнаружения масок;
Модуль уточнения наличия масок;
Модуль визуализации.
Взаимодействие модулей показано на блок-схеме (Рисунок 16):
![Рисунок 16. Взаимодействие программных модулей в процессе выявления масок Рисунок 16. Взаимодействие программных модулей в процессе выявления масок](https://habrastorage.org/getpro/habr/upload_files/37d/60f/b1e/37d60fb1eddfd46413a75f94ea0c4d01.jpg)
Модуль обнаружения масок использует детектор на базе нейронной сети YOLOv4_tiny. Входными данными для этого модуля являются изображения видимого спектра с разрешением 640х480. Выходными данными являются координаты и размеры прямоугольных фреймов, которые описывают лица с масками и без масок.
Модуль уточнения наличия масок соотносит найденные лица с уже уточненными положениями голов пассажиров для уменьшения количества ложных срабатываний при обнаружении лиц.
Модуль визуализации выводит на экран поток исходных изображений, где разным цветом выделяет наличие или отсутствие маски на лице пассажира.
2.3. Результаты тестирования
Снимки экранов при работе подсистемы обнаружения масок представлены далее (Рисунок 17, Рисунок 18).
![Рисунок 17. Работа подсистемы обнаружения масок – выявлен нарушитель Рисунок 17. Работа подсистемы обнаружения масок – выявлен нарушитель](https://habrastorage.org/getpro/habr/upload_files/a7c/f26/b60/a7cf26b6039a84c3a203ff4dec04b32b.png)
Головы людей в масках выделяются зеленым цветом. Головы людей без маски выделяется красным цветом.
![Рисунок 18. Работа подсистемы обнаружения масок – отмечены плохо различимые маски Рисунок 18. Работа подсистемы обнаружения масок – отмечены плохо различимые маски](https://habrastorage.org/getpro/habr/upload_files/22b/fa7/3c2/22bfa73c24d5752a8c2a8d9077994569.png)
Если маска плохо различима, то соответствующие головы людей выделяются фиолетовым цветом.
3. Обнаружение курения
3.1. Описание задачи
Курение в салоне и кабине ТС при перевозке пассажиров находится под запретом как в России, так и большинстве стран мира. Своевременное обнаружение фактов таких нарушений является важной задачей системы здравоохранения и обеспечения безопасности пассажироперевозок.
Однако применяемые в обычной жизни датчики дыма позволяют обнаруживать лишь существенное задымление, что значительно снижает их эффективность при использовании в общественном транспорте.
Предлагаемое решение базируется на обнаружении курения с помощью видео камер и сочетает в себе следующие функции:
Автоматическое обнаружение фактов курения;
Автоматическая фиксация нарушения (курения) с помощью фото и видео.
3.2. Базовый алгоритм
Алгоритм обнаружения курения основывается на обработке видео потоков от двух видео камер в видимом и инфракрасном диапазонах.
Алгоритм состоит из трех шагов:
Сначала на изображении инфракрасного спектра выделяются объекты с высокой температурой.
Затем эти объекты соотносятся с соответствующими объектами на изображении видимого спектра.
Последним шагом является анализ участков изображения видимого спектра, которые содержат обнаруженные объекты, на предмет являются ли эти объекты сигаретами или нет.
Для распознавания сигарет используется классификатор на базе нейронной сети EfficientNet – ее мобильная адаптация EfficientNet Lite0. Данная нейросеть была выбрана как наиболее производительная на сегодняшний день.
Как видно на рисунке (Рисунок 19), EfficientNet значительно опережает другие сверточные сети при классификации изображений ImageNet. (EfficientNet-B7 достигает производительность 84.3% - лучшую на сегодняшний день).
Для обучения нейросети был подготовлен датасет, который включает порядка 8200 различных картинок.
![Рисунок 19. Сравнение сверточных сетей при классификации изображений Рисунок 19. Сравнение сверточных сетей при классификации изображений](https://habrastorage.org/getpro/habr/upload_files/d68/30d/f6c/d6830df6c936fc705d9e0761c661aa5b.png)
3.3. Реализация функции обнаружения курения
Для обнаружения курения в салоне используются следующие программные модули:
Модуль считывания видеопотока видимого спектра;
Модуль считывания видеопотока ИК спектра;
Модуль обнаружения сигарет;
Модуль уточнения сигарет;
Модуль визуализации.
Взаимодействие модулей показано на блок-схеме (Рисунок 20):
![Рисунок 20. Взаимодействие программных модулей в процессе выявления фактов курения Рисунок 20. Взаимодействие программных модулей в процессе выявления фактов курения](https://habrastorage.org/getpro/habr/upload_files/3f7/38b/c21/3f738bc21c8247577d30489766f3049d.jpg)
Модули 1 и 2 описаны ранее.
Модуль обнаружения сигарет анализирует тепловое изображение на предмет наличия участков, температура которых превышает заданный уровень (70 градусов). При наличии таких участков модуль выдает координаты их положения на соответствующем изображении видимого спектра.
Модуль уточнения сигарет получает в качестве входных данных участок изображения видимого спектра, который соответствует точкам на тепловой карте, температура которых превышает заданный уровень. Для распознавания сигареты модуль использует классификатор на базе нейронной сети EfficientNet. После распознавания сигареты данный модуль передает координаты сигареты модулю визуализации.
Модуль визуализации выводит на экран поток исходных изображений, где специальным цветом выделяет сигареты.
3.4. Результаты тестирования
Работа подсистемы обнаружения курения представлены на следующих скриншотах (Рисунок 21, Рисунок 22).
![Рисунок 21. Инфракрасная съемка – выделены области повышенной температуры Рисунок 21. Инфракрасная съемка – выделены области повышенной температуры](https://habrastorage.org/getpro/habr/upload_files/16d/434/b3b/16d434b3b0f8d75585f093c341a220f7.png)
На инфракрасном изображении выделяются области повышенной температуры.
![Рисунок 22. Зафиксирован нарушитель Рисунок 22. Зафиксирован нарушитель](https://habrastorage.org/getpro/habr/upload_files/9da/acf/f47/9daacff479fdf5864ba59079a4edc137.png)
После анализа соответствующих областей на изображении видимого спектра отображается только та область, которая содержит сигарету.
4. Оценка ускорения перемещения пассажиров
4.1. Описание задачи
Контроль качества и комфортности перевозки пассажиров является неотъемлемой частью работы компании-перевозчика. Нередки случаи, когда водитель транспортного средства перевозит пассажиров некомфортным для них образом: совершает резкие маневры, проезжает ямы и бугры на высокой скорости и т.п. Все это приводит не только к дискомфорту пассажиров, но и в ряде случаев угрожает их здоровью, может вызвать травмы.
На сегодняшний день наиболее распространённые автоматизированные решения контролируют стиль вождения ТС за счет применения специализированных GPS/ГЛОНАСС-трекеров и терминалов.
Однако данный тип решений все равно не может полностью помочь в устранении вышеуказанных проблем, так как обладает недостатками: например, короткое резкое движение рулем будет отфильтровано трекерами как незначительное и не будет зафиксировано, но при этом в салоне ТС оно может привезти даже к падению пассажиров. Аналогично, короткое по времени резкое торможение может серьезно повлиять на пассажиров, но при этом не быть зафиксировано трекером.
В предлагаемом решении автоматический контроль качества перевозки пассажиров осуществляется путем обнаружения фактов их резкого перемещения в салоне транспортного средства. Таким образом, задача контроля качества перевозки сводится к задаче оценки скорости изменения положения объектов между кадрами видео потока.
4.2. Описание алгоритма
Для оценки скорости изменения положения объектов между кадрами видео потока использовалась технология оптического потока – технология, использующаяся в различных областях компьютерного зрения для определения сдвигов, сегментации, выделения объектов и компрессии видео. В частности, использовался алгоритм плотного оптического потока методом Фарнебака, который дает векторы потока всего кадра (всех пикселей).
Особенностью применения данного алгоритма для оценки перемещения пассажиров является то, что вычисление оптического потока производится только для тех областей изображения, где предварительно были обнаружены головы пассажиров. Таким образом, данный подход позволяет оценить перемещения только пассажиров транспортного средства и не учитывать перемещения других объектов (например, автомобиля за окном).
Разработанный подход нацелен на выявление резких рывков транспортного средства, которые могут привести к падениям и травмам пассажиров. Пример работы алгоритма оптического потока показан далее (Рисунок 23) – на скриншотах видео запечатлен момент резкого торможения транспортного средства, который привел к падению пассажиров. Момент торможения отражен на графике резким скачком.
![Рисунок 23. Пример работы алгоритма оптического потока Рисунок 23. Пример работы алгоритма оптического потока](https://habrastorage.org/getpro/habr/upload_files/1b2/2a1/93a/1b22a193a83462c251d973fa2f4191eb.png)
4.3. Реализация функции оценки скорости перемещения пассажиров
Для оценки ускорения перемещения пассажиров в салоне ТС используются следующие программные модули:
Модуль считывания видеопотока видимого спектра;
Модуль считывания видеопотока ИК спектра;
Модуль обнаружения голов пассажиров;
Модуль уточнения положения голов пассажиров;
Модуль оценки ускорения перемещения пассажиров;
Модуль визуализации.
Взаимодействие модулей показано на блок-схеме (Рисунок 24):
![Рисунок 24. Взаимодействие программных модулей в процессе оценки ускорения перемещения пассажиров в салоне ТС Рисунок 24. Взаимодействие программных модулей в процессе оценки ускорения перемещения пассажиров в салоне ТС](https://habrastorage.org/getpro/habr/upload_files/0b9/14c/16e/0b914c16e2321b63178ed25a31d4f349.jpg)
Модули 1…4 описаны ранее.
Модуль оценки ускорения перемещения пассажиров использует алгоритм оптического потока для определения скорости перемещений объектов между кадрами. Выбор объектов ограничивается головами пассажиров, фреймы которых формируются модулем уточнения голов. Результатом работы модуля является величина среднего ускорения перемещения объектов. Если ускорение превышает заданный порог, принимается решение о резком ускорении или торможении транспортного средства.
Исходный код модуля приведен в приложении А.3.
Модуль визуализации выводит на экран поток исходных изображений, при этом изображение разбивается на небольшие участки, для каждого из которых с помощью векторов изображается средняя скорость перемещения соответствующих пикселей.
4.4. Результаты тестирования
Снимки экранов при работе подсистемы оценки перемещения представлены далее (Рисунок 25 - Рисунок 27).
![Рисунок 25. Объекты неподвижны Рисунок 25. Объекты неподвижны](https://habrastorage.org/getpro/habr/upload_files/76b/e3e/d51/76be3ed519de31a0d70d10cb9f5b9aa9.png)
Объекты на скриншоте практически не двигаются, поэтому вектора скоростей имеют минимальную длину (отображаются зелеными точками).
![Рисунок 26. Вектора скоростей не превысили заданный порог Рисунок 26. Вектора скоростей не превысили заданный порог](https://habrastorage.org/getpro/habr/upload_files/222/23d/a31/22223da3108a38385189539a168b1b2a.png)
Алгоритм фиксирует движение головы человека (вектора скоростей имеют определенную длину).
![Рисунок 27. Вектора скоростей превысили заданный порог Рисунок 27. Вектора скоростей превысили заданный порог](https://habrastorage.org/getpro/habr/upload_files/3ff/2e3/e2f/3ff2e3e2f6489930368d0d28305fd942.png)
Если ускорение объектов превышает заданный порог (резкое перемещение), то соответствующие вектора выделяются красным цветом.
5. Оценка расстояния между пассажирами
5.1. Общее описании задачи
Наземный пассажирский транспорт в час пик является местом большого скопления людей и представляет собой место максимальной опасности заражения инфекционными заболеваниями. Если транспортное средство заполнено выше норматива, пассажиры вынуждены нарушать рекомендованную социальную дистанцию и стоять вплотную друг к другу. Для отслеживания пассажиропотока с целью последующих мер по реорганизации движения общественного транспорта необходимо иметь возможность автоматической оценки расстояния между пассажирами в салоне транспортного средства.
5.2. Описание алгоритма
Алгоритм оценки расстояния между пассажирами использует калибровочную информацию камеры для проецирования голов пассажиров на координаты плана транспортного средства и вычисляет примерное расстояние между пассажирами.
Работа алгоритма основана на проецировании точки из координат кадра в точку на плане, Расчет дистанции между людьми с помощью проекций на план позволяет более точно определить расстояния, и не зависит от положения (сидящего или стоящего) пассажира в транспортном средстве, а также исключает ошибки при частичном перекрытии тел.
Данный алгоритм состоит из нескольких этапов:
Калибровка камеры. Производится до запуска системы с помощью отдельного скрипта при помощи специальной доски. По завершению работы скрипта, получаем конфигурационный файл с внутренними параметрами камеры, такими как: внутренняя матрица камеры и коэффициенты искажения кадра.
Позиционирование камеры и определение матриц переноса. Также производится до запуска системы с помощью отдельного скрипта, на основе калибровочной информации, полученной ранее. По завершению работы скрипта, получаем дополненный конфигурационный файл, в котором содержатся матрицы проецирования из локального пространства в мировое и из мирового в пространство плана, а также информация о положении камеры в мире (ее повороте и смещении), и положении камеры на плане.
Оценка расстояний между пассажирами. Производится непосредственно во время работы системы. Для работы модуль использует дополненный конфигурационный файл, полученный ранее, и список найденных на кадре голов.
5.3. Реализация функции оценки расстояния между пассажирами
Для оценки расстояния между пассажирами в салоне ТС используются следующие программные модули:
Модуль считывания видеопотока видимого спектра;
Модуль считывания видеопотока ИК спектра;
Модуль обнаружения голов пассажиров;
Модуль уточнения положения голов пассажиров;
Модуль оценки расстояния между пассажирами;
Модуль визуализации.
Взаимодействие модулей показано на блок-схеме (Рисунок 28):
![Рисунок 28. Взаимодействие программных модулей в процессе оценки расстояния между пассажирами в салоне ТС Рисунок 28. Взаимодействие программных модулей в процессе оценки расстояния между пассажирами в салоне ТС](https://habrastorage.org/getpro/habr/upload_files/3d6/003/5a4/3d60035a48a35bcd542f948ed4a5a62a.jpg)
Модули 1…4 описаны ранее.
Модуль оценки расстояния между пассажирами использует калибровочную информацию камеры для проецирования голов пассажиров на координаты плана транспортного средства и вычисляет примерное расстояние между пассажирами. Если полученное расстояние меньше заданного порога, то формируется сигнал о нарушении социального дистанцирования.
Модуль визуализации выводит проекцию пассажиров (в виде точек) на план ТС и специальным цветом отмечает тех пассажиров, расстояние между которыми меньше заданного порога.
5.4. Результаты тестирования
Работа подсистемы оценки расстояния между пассажирами представлена на следующих снимках (Рисунок 29, Рисунок 30).
![Рисунок 29. Два человека находятся на допустимом расстоянии друг от друга, социальная дистанция не нарушена Рисунок 29. Два человека находятся на допустимом расстоянии друг от друга, социальная дистанция не нарушена](https://habrastorage.org/getpro/habr/upload_files/a9a/011/20d/a9a01120da82079a86513a92eebbe87e.png)
На данном снимке два человека сидят по диагонали. Их положение проецируется на план офиса в виде точек. Текущее расстояние превышает заданный порог (70 см), поэтому цвет точек синий.
![Рисунок 30. Два человека сидят слишком близко, социальная дистанция нарушена Рисунок 30. Два человека сидят слишком близко, социальная дистанция нарушена](https://habrastorage.org/getpro/habr/upload_files/e3c/7f3/5d3/e3c7f35d3637ad0f39a4b55272966c68.png)
На данном снимке два человека сидят рядом. Расстояние между ними меньше заданного порога, поэтому они визуализируются красным цветом.
6. Oценка температуры тела
6.1. Описание решения
В связи с существующей на данный момент эпидемической ситуацией особо актуальной становится проблема отслеживания перемещений людей с повышенной температурой, так как они могут представлять угрозу для здоровья окружающих. За счет автоматизированной обработки показаний с термометрической камеры (фактически это цифровой термометр) разработанная система позволяет увидеть точную картину перемещения людей с повышенной температурой. На основании полученных данных появляется возможность принятия обоснованного решения о дополнительных мерах с целью противодействия распространению инфекций, снижения плотности людей пассажиропотока.
На сегодняшний день функции термометрии пассажиров выполняются ручным способом с применением инфракрасного термометра. Проведенное нами исследование показало, что на рынке существуют решения для автоматизированного контроля температуры людей. Например: http://rdgroupltd.com/ru/heatvision, https://promo-bot.ru/production/thermocontrol/. Однако они не специализированы для применения на транспорте и ориентированы на применение в стационарных объектах и рассчитаны на контроль температуры по одному человеку при проходе через турникет или рамку.
В результате было разработано решение, основанное на использовании опорных термостабилизированных реперов и одновременной обработке видео потоков от камер видимого и инфракрасного диапазона.
Предлагаемое нами решение является уникальным на российском рынке потому, что, во-первых, позволяет выполнять термометрию пассажиров на подвижном объекте в салоне и кабине транспортного средства, а, во-вторых, рассчитано на работу одновременно с несколькими рядом стоящими людьми.
6.2. Реализация функции оценки температуры тела
Для оценки температуры тела пассажиров в салоне ТС используются следующие программные модули:
Модуль считывания видеопотока видимого спектра;
Модуль считывания видеопотока ИК спектра;
Модуль обнаружения голов пассажиров;
Модуль уточнения положения голов пассажиров;
Модуль контроля температуры тела;
Модуль визуализации.
Взаимодействие модулей показано на блок-схеме (Рисунок 31):
![Рисунок 31. Взаимодействие программных модулей в процессе оценки температуры тела пассажиров в салоне ТС Рисунок 31. Взаимодействие программных модулей в процессе оценки температуры тела пассажиров в салоне ТС](https://habrastorage.org/getpro/habr/upload_files/045/69b/579/04569b5798ee4fa2ed19fe373ead1553.jpg)
Модули 1…4 описаны ранее.
Модуль контроля температуры выделяет точки на «тепловой» карте салона, которые соответствуют позициям голов пассажиров и вычисляет их температуру. Если температура превышает заданный порог, то формируется соответствующий сигнал.
Модуль визуализации выводит на экран поток исходных изображений, где около головы выводит текущую температуру человека.
6.3. Результат тестирования
Пример работы подсистемы оценки температуры показан на следующих снимках (Рисунок 32, Рисунок 33).
![Рисунок 32. Оценка температуры тела Рисунок 32. Оценка температуры тела](https://habrastorage.org/getpro/habr/upload_files/332/493/8de/3324938de8540afbfac22c1c52e37366.png)
![Рисунок 33. Оценка температуры тела (инфракрасная съемка) Рисунок 33. Оценка температуры тела (инфракрасная съемка)](https://habrastorage.org/getpro/habr/upload_files/f67/397/2ab/f673972ab08745454729058330e05b76.png)
Заключение
Основной особенностью бортовой системы видеоаналитики и подсчета пассажиропотока с функциями бесконтактного контроля температуры и режима ношения средств защиты - “Контроль пассажиров”» является применение искусственного интеллекта при анализе и обработке видео потоков одновременно от двух камер, одна из которых передает видео в видимом диапазоне, а другая – в ИК диапазоне. Данный подход позволяет, с одной стороны, повысить точность работы системы, а с другой - расширить функционал обычной системы видеоаналитики.