
Распознавание номеров автомобилей
Модуль распознавания номеров автомобилей, разработанный Viinex, — это готовый набор инструментов для использования в программном обеспечении автоматизации автомобильных парковок, контрольно-пропускных пунктов и систем взвешивания транспортных средств.
Модуль работает как внешний процесс и выполняет следующие функции:
- подключает камеры видеонаблюдения по Onvif и RTSP;
- декомпрессирует видеопотоки для использования модулем видеоаналитики;
- распознает номера автомобилей и выдает готовый результат в формате JSON:
- номер автомобиля;
- timestamp для кадра, на котором выдан результат с лучшим распознаванием;
- координаты номера автомобиля на изображении;
- confidence – собственная уверенность распознавателя в выданном результате.
- обеспечивает хранение видео и получение видео и/или кадров по timestamp момента распознавания автомобильного номера.
Viinex поддерживает два метода работы для двух возможных сценариев использования в интегрирующем программном обеспечении: распознавание номеров автомобилей в видеопотоке и распознавание номеров автомобилей по кадрам (JPEG).
Подробнее в презентации.
Распознавание номеров автомобилей в видеопотоке
Это типовой сценарий для точек контроля проезда движущегося транспорта, когда алгоритм видеоаналитики анализирует все кадры в видеопотоке, т.к. во время движения автомобиля геометрия символов номера на изображении, фиксируемом видеокамерой, может изменяться. Режим работы алгоритма распознавания номеров автомобилей может быть управляемым или в автоматическом режиме.
Управляемый режим распознавания номеров автомобилей (HTTP запрос)
В этом случае интегрирующее приложение может запускать и останавливать алгоритм распознавания, когда автомобиль находится перед камерой (например, при получении информации от петли или иных датчиков и детекторов, по нажатию кнопки и т.д.).
При управлении распознаванием по команде взаимодействие с алгоритмами в Viinex осуществляется по протоколу HTTP, который, по существу, используется как транспортный протокол для удаленных вызовов процедур. Это позволяет запускать несколько задач на распознавание одновременно, по разным изображениям, — без необходимости сериализовать вызовы или соблюдать другие предосторожности, которые обычно требуются для многопоточного использования библиотек распознавания.
Пример запроса для распознавания номеров автомобилей в видеопотоке:
GET http://servername:port/v1/svc/alprCamN
При этом можно заранее указать параметры времени распознавания в конфигурации: preprocess и postprocess (например, за полсекунды до и через полсекунды после получения этой команды).
Автоматический режим распознавания номеров автомобилей (WebSocket)
Алгоритм распознавания в видеопотоке также может работать в полностью автоматическом режиме (freeflow) – когда нет возможности использовать дополнительную информацию о наличии автомобиля перед камерой и управлять распознаванием через HTTP-запросы. В этом случае получение результатов распознавания возможно с помощью сервиса оповещений через интерфейс WebSocket. Также использование подписки на WebSocket подходит, когда результаты необходимо получать сразу нескольким клиентам интегрирующего приложения, а не только клиенту, управляющему распознаванием и отправляющему HTTP-запрос.
Полностью автоматический режим работы обеспечивает результаты лучше, чем при использовании метода распознавания только по кадру (о котором сказано ниже), просто за счет большего количества данных для распознавания и возможности анализа результатов по кадрам, содержащим один и тот же автомобильный номер.
В полностью автоматическом режиме работа осуществляется по большому количеству видеоданных и алгоритм анализирует все передаваемые ему изображения для поиска номера автомобиля на каждом кадре, и если трафик проезда транспорта в точке контроля невысок, то большую часть времени анализируются видеоданные, на которых вообще нет автомобилей.
Для оптимизации эффективности использования аппаратных мощностей в Viinex существует стандартная возможность заранее указать ROI (область интереса на изображении) для анализа только части кадра. Кроме того, можно указать параметры детализации данных видеопотока – нужно ли анализировать все кадры или только ключевые; можно ли их пропускать; можно ли прекратить анализ, если результат сразу выдан с необходимым параметром confidence. Такие настройки позволяют значительно сэкономить на аппаратных ресурсах, особенно там, где транспорт движется не быстро, например, на парковках или КПП. Таким образом можно распределить аппаратные ресурсы для обработки большего количества видеопотоков.
Распознавание номеров автомобилей по кадрам
Метод распознавания по кадрам предпочтителен при работе с неподвижными транспортными средствами – например, остановившимися перед шлагбаумом в поле зрения камеры или стоящими на статических автомобильных весах, т.е. когда остановка занимает секунду и более.
В этом случае на получаемых кадрах не происходит значительных изменений изображения автомобильного номера. Соответственно, гипотезы, выдаваемые алгоритмом распознавания по каждому такому кадру, будут одинаковы. Это обусловлено тем, что кадры будут отличаться друг от друга только шумами, которые не оказывают существенного влияния на качество распознавания. В то же время, наиболее важный фактор, влияющий на качество распознавания — геометрия пластины и символов номера автомобиля — будет оставаться неизменным на каждом кадре, пока автомобиль не начнет двигаться. Поэтому в анализе последовательности изображений просто нет необходимости.
Таким образом, если необходимо распознавание номерного знака транспортного средства, стоящего на весах или перед КПП (т.е. в тех случаях, когда заранее известно место остановки автомобиля и есть внешний сигнал о наличии автомобиля в этом месте), метода статического распознавания будет достаточно.
Например, можно подать на вход движка распознавания номеров произвольное изображение, используя утилиту CURL для формирования HTTP POST запросов к Viinex (изображение подается в теле HTTP-запроса, и результат распознанного номера возвращается в виде JSON-структуры в теле HTTP-ответа на этот запрос, тот же самый список данных, что и при распознавании по видеопотоку).
Пример запроса распознавания номеров автомобилей по кадрам:
POST http://servername:port/v1/svc/alprN
При работе в режиме распознавания кадров отсутствует ограничение, связанное с количеством видеокамер – поскольку распознавание осуществляется именно по кадрам – делает этот метод экономически эффективным при применении на пунктах взвешивания и точках контроля, где автомобили останавливаются в зоне действия камеры. Минимальна загрузка аппаратных ресурсов, т.к. такой метод позволяет обрабатывать видеоданные только в том случае, если на них есть автомобильный номер. Это предоставляет возможность развертывания Viinex на той же самой аппаратной платформе, на которой развернуто ПО автоматизации без необходимости выделения отдельных аппаратных ресурсов. Кроме того, этот метод отличается простотой использования и полным отсутствием необходимости каких-либо настроек алгоритма распознавания. Анализ изображения осуществляется по всему кадру целиком, т.к. нет жестких временных ограничений на выдачу результата распознавания, как в методе распознавания по видеопотоку, когда через доли секунды уже передается следующий кадр для обработки.