ChatGPT и распознавание автомобильных номеров: это работает?
Задача: на сайте автобай обнаружить и идентифицировать регистрационный знак и его координаты.
Всем привет!
На первый взгляд задача распознавания знака выглядит простой, но на деле возникает ряд трудностей, о которых расскажу далее.
Для начала спросим у ChatGPT, что он знает про методы распознавание регистрационных знаков на автомобилях.
Чат не врет. Действительно, чтобы найти регистрационный автомобильный номер на фото можно использовать компьютерное зрение и сверточные нейронные сети на массиве данных.
Кроме того он предлагает открытые библиотеки TensorFlow и PyTorch. Также существуют платные решения на основе API от Google и Amazon, могу отметить, что такие системы есть и у VK Cloud и Yandex.
Пробуем узнать у чата про открытые популярные библиотеки.
На слуху популярная библиотека компьютерного зрения OpenCV .
Спросим в лоб: как эта библиотека может помочь нам. Привожу часть ответа:
ChatGPT предлагает пример кода на языке Python, но это не совсем, что нам нужно. Он написал алгоритм поиска цифр на номере, но нам надо не значение номера, а его координаты. Пробуем изменить запрос. Привожу часть ответа:
Выглядит неплохо! На выходе мы имеем точку с координатами угла номера, высоту и его ширину. Вот, что получится:
В идеале, конечно, получить все 4 точки, потому что редко на фотографии номер прямоугольный формы, из-за того, что автомобиль часто сфотографирован под углом. Вот пример:
Я попросил несколько вариантов кода, но все они сводились к обработке фотографии, применении различных фильтров и методов для поиска цифр на номере.
Один из вариантов кода я попробовал на практике. Какие минусы были обнаружены:
1) Необходимость хорошей освещенности на фото: OpenCV работает лучше всего на светлых фотографиях.
2) Размер изображения: для определения номера с помощью OpenCV необходимо, чтобы знак занимал достаточно большую площадь на изображении.
3) Низкая скорость: обработка изображения с помощью OpenCV может занять значительное время, особенно, если изображение большое или нужно обработать несколько фотографий.
4) Слабое распознавания: могут быть случаи, когда система не распознает номер или распознает его неправильно.
5) Код предложенный ChatGPT весьма общий, без поиска сложных вариантов на фото.
В целом для непрофессиональных проектов, где номер хорошо виден и читается, то этот код и библиотека вполне сойдут. Чат написал простой код, который в дальнейшем можно доработать и использовать. Совсем не справился с номерами под большим углом.
Пример такого автомобиля:
В тоже время другой метод не подвел, о нем дальше.
Теперь пройдемся по платным сервисам, которые предлагают решения для распознавания номерных знаков. Предлагаем ChatGPT привести несколько примеров.
Практически все крупные игроки, которые на основе облачных технологий и ИИ предлагают весь пакет компьютерного зрения по распознаванию лиц, различных предметов, в том числе и автомобильных номеров.
OpenALPR считается популярным проектом, предлагают тестовую панель и 50 бесплатных запросов в месяц. Протестировав несколько автомобильных номеров, могу отметить, что он справился на 100%, даже на сложных фотографиях автомобилей. К сожалению, в полной мере опробовать сервис не получилось, карты РФ и РБ он не принимает.
Попробуем обратиться к сайту RapidAPI Hub, который содержат базу тысячи готовых API. Спросим у чата.
Все пять предложенных вариантов были протестированы. Лучшие результаты показал License Plate Recognition. Отлично распознает автомобильные номера и выдает его координаты по 4 точкам, кроме этого хорошо определяет и значение самого номера.
RapidAPI Hub предлагает готовые решения API доступа практически на любом языке программирования, но и ChatGPT отлично с этим справляется. Фрагмент кода:
Необходимо указать свои заголовки, изменить урл и внести небольшие изменения. Фактически код рабочий. После получения координат копируем название сайта на автомобильный номер.
Все эти операции как копирования одного изображения на второе считаются не сложными. ChatGPT без проблем с этим справится, но есть один нюанс. Обратите внимание способ наложения логотипа. На фотографии слева логотип скопирован без учета перспективы (изначально так ChatGPT и предлагает), в то время как на правом – она учтена.
Привожу весь процесс распознавания и наложения логотипа:
1) Поиск региона: определения 4 координат автомобильного знака с помощью License Plate Recognition API.
2) Определения яркости исходного изображения для коррекция ее на логотипе.
3) Создание проекции логотипа по 4 координатам, которые мы нашли ранее.
4) Непосредственно нанесение логотипа на исходного фото.
По итогу:
ChatGPT позволяет получить базовый код из открытых библиотек для определения координат автомобильного номера с хорошей точностью. Но, тем не менее, следует корректировать написанный код и добавлять новые инструкции для повышения распознавания знаков.
В тоже время сторонние сервисы, которые предлагают распознавания знака имеют более продвинутый функционал. Процент распознавания выше ( в районе 94-96%) и они лучше справляются с сложными номерами на фотографиях низкого разрешения.
Ссылки по теме: