Онлайн сервис «Анализ скорости при ДТП по видеозаписи»

cdy3epcwmj1kjozbojililkdon0.jpeg

В тестовой версии заработал онлайн сервис, который показывает текущую скорость интересуемых нас объектов (автомобилей и других средств передвижения) по записям с видеокамер на перекрестках.
С проблемой визуализации дистанции при движении автомобиля и его текущей скорости сталкиваются как ученики в автошколах, так и достаточно опытные водители.

Но есть решение — анализ этих данных по записанным ранее видеокадрам и их обработка в разных платных и бесплатных, доступных и закрытых сервисах.

b3z20wxe8mcembonf9sw2px9xem.png

Об одном таком недавно появившемся сервисе и пойдет далее речь.

Ссылка на онлайн сервис «Анализ скорости при ДТП по видеозаписи».

Главная страница сервиса (пока что очень простая):

twqq0bdt0xrihcn6ktmpdt7nys0.png

Автор идеи и реализации — российский программист и хабровчанин — Илья Александрович Волков.

Данная публикация написана на Хабре с его разрешения.

На данный момент сервис работает не в автоматическом режиме, каждую видеозапись сначала нужно подготовить для обработки вручную оператором сервиса (сейчас это автор в одном лице или новый пользователь, инструкция по работе с сервисом в конце публикации).

rsakpbaljurajefuvisofzuyk8i.png

tobjwcfgqttpubwibnrjcftacec.png

Этапы обработки видеокадров:

— на первом этапе компенсируются оптические искажения от видеокамеры, то есть все прямые линии реального мира должны быть прямыми и на обрабатываемом сервисом видео (коррекция искажений от камеры уже работает в автоматическом режиме в сервисе);

— на втором этапе осуществляется локационная привязка к плоскости дороги, для этого оператору необходимо отметить на кадре прямоугольник как в реальном мире и ввести два (и более) отрезка с измеренными ранее длинами (обычно это: ширина дороги, ширина отдельной полосы между линиями разметки, расстояние между проезжими частями или знаками, колесная база автомобилей);

dfbk6d_d0kny9bcrrteizlb6zjy.png

nbx4ov9cbsabg8gme2yxrepo8_i.png

xsrtupaoqnlm8dcwpl0ymbi2nkg.png

uyde7npko3rmxzggip5yg7dzglk.png

— на третьем этапе оператору сервиса на каждом кадре необходимо установить точку, где находится интересуемый объект (отметить его траекторию движения), а в итоге сервис покажет нам текущую скорость объекта и ее изменение в процессе движения.

utkpwhc4ssd9i9k520ktzwvv_8e.png

jyocbvnl3p5hvv5r6zob3zuiaco.png

4uatgutthy3k02humdk7xkrccik.png

zarhjkpwodswoxtim4nnrc74tpq.png

В плеере сервиса есть инструмент «Линейка», с помощью которого можено измерить расстояния на видео:

2qrbiet7eqx1irqzzbdj286a-bi.png

Точность работы сервиса достаточно сильно зависит от качества и параметров видеозаписи.

l6_drmwsc4kwedrhzzdj5-cpdza.png

Сейчас сервис работает только с видеокадрами, полученными с помощью неподвижных (статичных) видеокамер, база этих записей дополняется и нарабатывается.

В процессе доработки функционала сервиса автором планируется добавить анализ записей, полученных с помощью видеорегистраторов в двигающихся и останавливающихся автомобилях.

Автор сервиса планирует проанализировать большое количество видеозаписей с ДТП с участием пешеходов и проанализировать статистику данных скоростей транспорта в момент столкновений.

7rjj4ygwewm84l9xpqy3n_zbjza.png

ufrvzezefnk4nc4cdwcorayd9ju.png

Вот что еще планирует сделать автор для развития данного сервиса:

— добавить автоматическое слежение за точками;

— добавить геотеги;

— внедрить фильтр Калмана для сглаживания ошибок наблюдения;

— использовать компьютерное зрение;

— добавить функционал вычисления скорости нескольких объектов;

— планируется внедрить для сервиса машинное обучение, чтобы минимизировать работу оператора для подготовки видеозаписи.

qikhmup6wwntngxudette8rkziq.png

Очень надеюсь, что данная публикация заинтересует хабровчан и поможет автору сервиса в его развитии и текущей работе.

Мне удалось связаться с автором этого сервиса Ильей Волковым, пообщаться с ним о функционале сервиса и получить ответы на несколько вопросов по этому проекту специально для Хабра.

Интервью с автором сервиса «Анализ скорости при ДТП по видеозаписи»:

Вопрос: Давно ли возникла идея о реализации такого сервиса?

Ответ Ильи: Месяца четыре назад увидел видео с ДТП и стало интересно, с какой (хотя бы примерно) скоростью двигался один из участников. Интересно стало не только мне — в комментариях к видео было много споров, и назывались самые разные оценки. Тут-то я и подумал, что такой инструмент был бы полезен.


Вопрос: Сколько прошло времени от мысли, что «можно сделать это» до первого рабочего запуска сервиса?

Ответ Ильи: Ну вот четыре месяца и прошло примерно. Но я бы не торопился называть текущую версию рабочей — пока сыровата :)


Вопрос: Какие языки и платформы Вы используются в сервисе и какие планируете использовать далее?

Ответ Ильи: Проект хостится на Firebase, это отличная штука для быстрого старта практически любого проекта. Авторизация, хостинг, база данных, файловое хранилище — всё «из коробки». Удобный API, полная бесплатность на первых порах.

Фронтенд — Vue.js, тоже несложный для освоения с нуля инструмент. Отрисовка на канве с помощью Konva.js, за искажения оптики отвечают шейдеры.

Практически весь код (за исключением шейдеров) написан на JavaScript. Особых претензий к стеку нет, буду продолжать работать с ним.


Вопрос: Когда можно будет обычным пользователям загружать свое видео и работать с сервисом?

Ответ Ильи: В принципе, это можно сделать уже сейчас, я написал инструкцию, как это сделать.


Вопрос: Вы один занимаетесь проектом или есть команда программистов?

Ответ Ильи: Команда пока небольшая — я да мой товарищ, у которого есть компетенции во фронтенд-разработке.


Вопрос: Планируете Вы продолжать развитие сервиса и ждете ли помощи от коллег\форумчан по этому проекту?

Ответ Ильи: Развитие сервиса однозначно планируется, поскольку прототип выглядит очень даже любопытно. Идей по развитию полно, желание также присутствует.
Помощь всегда приветствуется — особенно советы.


Вопрос: Это будет бесплатный сервис или монетизация тоже в планах есть?

Ответ Ильи: Перспективы монетизации пока довольно туманные. Возможно, они прояснятся в дальнейшем.


Вопрос: Появились ли организации или сообщества, которые заинтересовались сервисом? Например, мотоклубы или обучающие вождению школы?

Ответ Ильи: Сообщества мне не писали, но некоторых автоэкспертов проект заинтересовал.


Вопрос: Какая сейчас точность определения скорости с помощью сервиса? Насколько эти данные будут разниться, если нужные параметры введены по измерению рулеткой с реальной дороги или используя геосервисы, в которых ширина проезжей части измерена встроенной линейкой?

Ответ Ильи: На видео очень хорошего качества и без искажений оптики точность неплохая, тесты на открытом датасете показывают погрешность до 3%. Точность уменьшается с ухудшением качества видео и нестабильной частотой кадров.

Насчет измерений рулеткой и с помощью геосервисов — рулетка, конечно же, надёжнее. Данным от геосервиса нельзя слепо верить, но их можно и нужно перепроверять.

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


Вопрос: Будет ли возможность выбирать единицы измерения (км\ч, м\с, миль\час) и сохранять данные скоростной телеметрии в отдельный лог-файл?

Ответ Ильи: Да, благо это не так сложно сделать. Но когда это будет реализовано — не могу сказать.


Вопрос: Видеозаписи в зимние время ведь сложнее будет в Вашем сервисе обрабатывать из-за снежного покрова на дороге?

Ответ Ильи: Да, снег добавляет трудностей — некоторые ориентиры становится не видно, иногда изменяется даже геометрия дороги. Но в принципе, скорость вычисляется и на «снежных» видео.


Вопрос: Планируется в сервисе использовать нейросети?

Ответ Ильи: Это точно не перспектива ближайшего времени, но тема однозначно очень интересная. Было бы круто обучить нейросеть подбирать коэффициенты искажения камеры. Много идей по использованию готовых нейросетей. Но пока и без них много чего делать :)


Вопрос: Сейчас сервис хостится на Firebase, ищите ли вы альтернативу?

Ответ Ильи: Единственное, что не очень нравится в Firebase — это цены. Например, цена 1 ГБ трафика из файлового хранилища составляет около 7 рублей, в то время как у Яндекс.Облака — всего лишь рубль. Пока это не очень большая проблема, но в дальнейшем я буду искать пути для оптимизации. Сейчас же я проектирую архитектуру таким образом, чтобы не сильно привязываться к поставщику услуг.

Большое спасибо Илье за интересные и развернутые ответы!

Автор по возможности добавляет в сервис новые ролики:

oew4lvxzzdc7gsdfhqxq9hfawbu.png

_kejeaixqmznjnok48na-a42y_u.png

q05urldstpbfdrdgabqylet5axk.png

Инструкция по работе с сервисом находится тут.

1. Для создания своего проекта необходимо залогиниться. Пока доступна авторизация через аккаунты Google и Facebook. После авторизации у вас будет доступна кнопка «Создать проект».

eefohborji2katvo1yr3ebz9ajk.jpeg

2. Нажимаем кнопку «Создать проект», появляется страница создания нового проекта, на которой предлагается загрузить видеофайл. Пока максимальный размер видеофайла — 3 мегабайта. Обрезать видео можно с помощью этого видеосервиса.

e6bozuunrocmj0ei5vrqomcgnni.jpeg

3. Загружаем файл, после успешной загрузки автоматически откроется страница проекта.

entsq1mygqxlfw0wajward-tjss.jpeg

4. Для начала убираем искажения оптики камеры: с помощью ползунков k3, k4, Scale регулируем искажения таким образом, чтобы все прямые линии реального мира были прямыми и на картинке.

fffz7etxpszvok9ffzn74yuhi_g.jpeg

5. Перемещаем четырёхугольник так, чтобы он соответствовал прямоугольнику реального мира и указываем 2 расстояния (отрезки не должны быть параллельными).

iyuykmbg_hekpav5_767i0omjbs.jpeg

6. Для поиска расстояний можно воспользоваться Яндекс.Картами.

n9aurr2jqr1qq61r1yrvjlfhykc.jpeg

7. Так как расстояния на Яндекс.Картах могут быть не совсем точными, нам необходимо убедиться в адекватности полученной привязки с помощью линейки. Обычно мы знаем колесные базы автомобилей. Например, у ВАЗ-2114 база составляет 2,46 метра, у нас получается 2,45.

1oeearwoyktukryafhu14cj5nhe.jpeg

8. Длина трамвая получилась около 16 метров, что тоже недалеко от истинной длины.

oqqxhr9wpxej0xotr90ijpz1zyk.jpeg

9. Теперь мы готовы заняться непосредственно вычислением скорости авто. Переходим в режим редактирования точек объекта и отмечаем точку объекта на каждом кадре. Отмечать точки вручную на каждом кадре может быть утомительно, поэтому существует инструмент интерполяции: отмечаем точку на одном кадре, затем отмечаем точку через 5–15 кадров, выделяем промежуток между кадрами на таймлайне и жмём кнопку «I»: Теперь точка между кадрами движется равномерно прямолинейно.

pgpfkri7rcpcox6gifap8kuzi8q.jpeg

10. Таким образом, мы посчитали скорость объекта.

vnjccwwmbc0uuankjpuqj4amhty.jpeg

© Habrahabr.ru