Как использовать нейросеть для контроля допуска на территорию
Предположим, у вас есть задача – настроить систему автоматического допуска транспортных средств на территорию. Принцип работы следующий: как только автомобиль подъезжает к шлагбауму, считывается его госномер и, если он есть в базе данных, шлагбаум открывается.
Поскольку мы делали этот проект для себя, готовые системы покупать не стали. Во-первых, так мы смогли протестировать технологии для последующего применения в работе в коммерческих проектах. Например, нейронную сеть YOLOv5 использовали для обозначения области захвата, автомобиля и номера, определения его выезда или въезда, а Pytesseract – для перевода изображения в текст и последующей работы с ним. Во-вторых, это позволило нам автоматизировать процесс допуска автомобилей на парковку компании, а также избежать расходов на обслуживание системы.
Рассказываем, как можно решить задачу по контролю доступа с помощью нейросетей.
Этап 1 – детекция объекта внутри области захвата
На первом этапе необходимо детектировать приезжающий и уезжающий автомобиль: по фотографии с камеры система должна определить местоположение объекта. Для решения задачи использовали нейронную сеть, например, YOLOv5. Причем важно различать, транспортное средство приезжает или уезжает. Камера следит за его движением и в случае, если автомобиль уезжает, передается сигнал на открытие шлагбаума. В противном случае переходим ко второму этапу.
Этап 2 – определение госномера транспортного средства
На этом шаге мы локализируем госномер подъезжающего автомобиля. Вот здесь можно почитать, как мы создавали модель распознавания в Catalyst. Но это немного другая история. Вернемся к нейросетям.
Фотографии собираем непосредственно с камеры. Дальше идет обучение той же нейронной сети YOLOv5 на основе полученных данных и для каждого транспортного средства детектируется bounding box (прямоугольник, ограничивающий номер).
Но автомобиль может быть расположен под углом к камере, а граница номера – параллелограммом. Это не очень удобно для дальнейшего распознавания текста. С помощью инструментов OpenCV можно выделить границы параллелограмма и провести аффинное преобразование, которое переводит его в прямоугольник.
После того как номер обнаружен, переходим к третьему этапу.
Этап 3 – работа с распознанным номером, обеспечение допуска автомобиля на территории
Далее переводим картинку в текст. Для этого можно использовать Pytesseract – нейронную сеть, которая решает задачу оптического распознавания символов. Она принимает на вход картинку, а на выходе выдает изображенный на ней текст в виде строки. В нашем случае мы разбиваем госномер на 4 части – первая буква, три цифры, следующие две буквы и регион. Это необходимо для более точного распознавания. Во-первых, относительные размеры букв и цифр номера отличаются от обычного текста. Во-вторых, так мы можем указать сети, какой тип символа нужно распознавать – буквы или цифры.
Если номер есть в базе, шлагбаум открывается и автомобиль заезжает на территорию.
Вот так, в 3 этапа, можно настроить автоматический доступ транспортных средств на территорию.
Весь процесс работы компьютерного зрения – от получения фотографии с камеры до распознавания номера – занимает порядка 1 секунды без использования графических ускорителей.
Какие задачи решают с помощью нейросетей
Этот метод можно также использовать для решения широкого круга задач, в частности:
- детекции объектов: например, контролировать соблюдение сотрудниками техники безопасности;
- измерения объектов, их присутствия в определенной области, например, для подсчета посетителей;
- оцифровки документов, перевода картинки в текст, создания электронного каталога;
- анализа данных по фотографиям товара и пр;
- обработки речи, применению голосовых команд и даже распознаванию настроения человека по отправленному тексту и т.п.
Здесь можете посмотреть, как мы используем Data Science для решения задач клиентов.