Привет, Habr! Это Сергей Пономаренко, я занимаюсь аналитикой данных в «МосТрансПроекте». Как и многие современные компании, мы применяем искусственный интеллект в нашей деятельности. Недавно мы впервые использовали машинное зрение для анализа пассажиропотоков на Большой кольцевой линии. Подробности расскажу в деталях под катом.
Взяли в кольцо
Для того, чтобы улучшать работу транспортной системы города и понимать перспективы ее развития, нужно знать спрос на инфраструктуру и пассажиропотоки: куда, кто едет и какими видами транспорта пользуется.
Наши коллеги из Транспортного комплекса Москвы используют расчетную модель распределения пассажиропотоков. Она позволяет определить, на каких станциях метро с наибольшей вероятностью пассажир совершит пересадку. С помощью моделирования было определено, что ежедневный суммарный пассажиропоток на Большой кольцевой линии (БКЛ) метро превышает 1,4 млн поездок.
В подсчетах пассажиропотоков есть некоторые особенности. Любой вход с улицы на станцию является валидируемым – по проходу через турникеты можно точно посчитать количество людей. Аналогично – на пересадках между метро\МЦК, метро\МЦД. Внутри метро, между радиальными линиями и БКЛ на пересадках, на выходах со станций валидаций нет. В таких местах пассажиропотоки определяются только модельным расчетом.
Контролируя точки входа, мы знаем, откуда пассажиры едут, но где выходят и делают пересадки, можем только предположить на основе вышеуказанной модели. С высокой долей вероятности мы знаем, что большинство пассажиров во время поездок выбирают самый быстрый маршрут. Например, если человек зашел на «Мнёвниках», а вышел на «Бутырской», то, скорее всего, он выберет кратчайший путь с пересадкой на «Марьиной Роще».
Ни у кого не возникало сомнений в том, что Транспортный комплекс Москвы при принятии решений опирается исключительно на достоверные данные. Но нам все же было интересно проверить, можно ли использовать искусственный интеллект для расчета пассажиропотоков. Эту работу мы выделили в отдельный проект.
Взгляд с экрана
Сразу поясню, что мы анализировали пассажиропоток на апрель 2024 года. Окончательная верификация данных заняла довольно много времени. Проект, в целом, был достаточно сложным и завершился только недавно. Именно поэтому о результатах рассказываем только сейчас.
К моменту, как мы приступили к верификации, целью проверки были 12 пересадок. Другие фиксировались валидаторами, являлись кроссплатформенными и требовали отдельной методологии для исследования (об этом расскажу ниже), либо не требовали проверки в связи с закрытием. В июне 2024 года, например, был закрыт участок от «Хорошёвской» до «Делового центра», который впоследствии станет частью Рублёво-Архангельской линии метро – ее уже строят.
Самый простой, на первый взгляд, способ верификации – это натурные обследования. Для этого на каждую из 12 станций нужно задействовать не менее четырех человек, чтобы они считали проходящих мимо людей по головам. Чтобы результаты были соизмеримыми, считать нужно одновременно на всех станциях и в одинаковые промежутки времени в течение суток. В часы пик, когда поток становится особенно интенсивным, выполнить такой расчет может быть крайне затруднительно.
Этот вариант мы сразу отбраковали по вполне понятным причинам: для этого требуется большое количество исследователей и почти на всех станциях есть камеры. Очевидно, что лучше использовать видеоаналитику и машинное зрение.
Теперь – про нюансы, с которыми мы столкнулись при подсчете пассажиров. На «Нижегородской» и «Каширской», к примеру, кроссплатформенные пересадки (как на «Китай-городе»). Для подсчета фактического пассажиропотока нужна своя методика, учитывающая пересадку пассажиров на всем протяжении платформы с одной на другую сторону при выходе из вагонов поезда. Также нужно учитывать, что часть пассажиров, выходя из вагонов, идет к эскалатору для выхода в город, и отделить их от пересаживающегося потока – та еще задачка.
На некоторых станциях пересадка более сложная с точки зрения возможных коридоров движения, из-за чего требуется анализировать записи с нескольких камер. Одним из таких примеров является станция «Кунцевская», где в рамках единого транспортного узла пересекаются две радиальные линии и БКЛ. Учесть особенности каждой пересадки, подобрать подходящие камеры с нужным ракурсом и освещением и было одной из самых сложных задач данного проекта.
Считай, не прикидывай
Для анализа видеоряда использовали ПО одной из известных отечественных компаний. Софт обрабатывал видеоряд с камер, определяя отдельных людей в толпе и понимая их направление движения. Важно было заранее выбрать камеру с «правильным» ракурсом, обеспечивающим, с одной стороны, хороший угол обзора, с другой – достаточный уровень освещения (не забываем, что съемка подземная).
На первом этапе нужно было оценить погрешность подсчета потока с использованием машинного зрения. В час пик люди движутся в довольно плотном потоке, и ПО может не распознать часть людей как отдельных пассажиров, посчитав 2-3 человека как одно целое. Люди, к примеру, в черной одежде и шапках могут слиться в одно пятно, тем более, в условиях недостаточного освещения. Любая система, связанная с машинным зрением, имеет определенную погрешность (это абсолютно нормально), и нам надо было ее определить.
Проверка проводилась самым простым и надежным способом. Софт анализировал видеоряд с камеры, одновременно с этим наш сотрудник делал ровно ту же работу, причем дважды, самостоятельно считая людей по головам на записи. Для сравнения брались 15-минутные временные отрезки в самых загруженных часах:
три в утренний час пик (7.30-7.45, 8.30-8.45, 9.30-9.45);
три в вечерний (17.30-17.45, 18.30-18.45, 19.30-19.45);
один в межпиковый час (14.30-14.45);
один вечером (22.30-22.45);
Если результаты подсчетов машины и человека отличались более, чем на 10%, мы брали записи с камеры другого ракурса и делали сравнения повторно. В итоге по большинству пересадок нам удалось добиться минимальной (меньше 10%) погрешности при подсчетах. Для трех станций погрешность была в пределах 20%.
Отклонения были связаны с пропуском пассажиров при подсчете машинным зрением. Зная эту погрешность (которая оказалась для каждого отдельного видеоряда достаточно стабильной), мы стали применять корректирующие коэффициенты. Данный коэффициент для каждой камеры просто умножался на значение пересадок, которое считало ПО.
Данный этап проверки хоть и является трудозатратным, но выполняется только при первой настройке автоматического подсчета, либо при значимых изменениях в транспортной инфраструктуре (например, ввода новой линии или участка), которые могут повлиять на поведение пассажиров и увеличить число пересадок.
Вторым этапом мы запустили анализ уже круглосуточного видеоряда со всех камер всех станций. Результаты корректировались с помощью коэффициентов, о которых я говорил выше. На выходе по каждой из пересадок мы получали данные о фактическом пассажиропотоке.
Двери открываются
Самое главное, мы выяснили, что расчеты по используемой нашими коллегами из транспортного комплекса модели достаточно точны и соответствуют реальным пассажиропотокам.
Верификация пасспотоков теперь будет происходить регулярно (особенно – после ввода в эксплуатацию новых пересадок и станций, строительства крупных транспортных проектов), чтобы максимально точно знать, сколько пассажиров пользуются пересадками. В декабре 2024 года открылась удобная пересадка на БКЛ с «Авиамоторной» и «Электрозаводской». А в 2026 году должна появиться пересадка на новую Рублево-Архангельскую линию, в 2028 - на Бирюлевскую. После этого пассажиропотоки, очевидно, перераспределятся.
Ценность нашего проекта и в практическом опыте, который мы получили, используя искусственный интеллект в прикладных задачах. Проект, который мы завершили, был, наверное, не самый сложный, но пользу городу точно принес. В качестве тизера скажу, что у нас еще несколько очень интересных проектов по использованию ИИ, о них расскажем в следующих статьях.
Расскажите в комментариях, как используете искусственный интеллект в своей работе.
JBFW
Ну ближайших определять несложно, а вот дальние теряются