Pull to refresh

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

Reading time6 min
Views38K

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

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

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



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

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

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



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

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

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





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

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

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









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









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



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



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

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

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





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

  • добавить автоматическое слежение за точками;
  • добавить геотеги;
  • внедрить фильтр Калмана для сглаживания ошибок наблюдения;
  • использовать компьютерное зрение;
  • добавить функционал вычисления скорости нескольких объектов;
  • планируется внедрить для сервиса машинное обучение, чтобы минимизировать работу оператора для подготовки видеозаписи.



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

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

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

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

Вопрос: Сколько прошло времени от мысли, что «можно сделать это» до первого рабочего запуска сервиса?
Ответ Ильи: Ну вот четыре месяца и прошло примерно. Но я бы не торопился называть текущую версию рабочей — пока сыровата :)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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







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

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



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



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



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



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



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



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



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



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



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

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+78
Comments89

Articles