Хабрахабр

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть