Pull to refresh
202
0
Олег Черний @apelsyn

AI&ML Teach Lead

Send message
Понятно, было бы интересно увидеть насколько надо исказить фото чтоб наша сеть с этим не справилась :)
nomeroff.net.ua/onlinedemo.html
Mask RCNN довольно неплохо справляется с задачей даже с шумом Detect numberplate with noise. Уверен что UNET-архитектура тоже устойчива к такому искажению.
1. Давайте дальнейшый диалог вести на github (создал issue по распознаванию казахских (kz) номеров), так как мне не удобно каждый раз скролить по этой «простыне тесктов», особенно в мобилке.
Переходим к более структурированному диалогу, всех welcome на github
2. Я вытянул номера из вашего датасета и в скором времени выложу результат. Вы должны меня понять что это мое хобби, которым я занимаюсь, в основном в свободное от работы время, машины с номерами Казахстана не продаются на сайте AUTO.RIA.
3. Дмитрий Пробачай в ближайшее время займется «квадратными» номерами и тогда можно будет задействовать другой Ваш датасет.
Вы можете предварительно удалять номера плохого качества, от них качество может ухудшаться. Предыдущую выборку я «почистил» вручную.
pan_danil, tolegen95 Натренировал и добавил в мастер.
Пример использования в примере:
https://github.com/ria-com/nomeroff-net/blob/master/examples/demo3.ipynb
Пока что точность «не очень» 91% — мало данных, в kz-номерах используется пректически весь англ. алфавит, поэтому для нормального качества обучающую выборку надо увеличить до, хотя бы 10 000, а лучше до 15 000 (как мы сделали для укр. номеров).
pan_danil, tolegen95
Маловато данных, будет работать очень некачественно. «Намайнил» вам номеров, там более 10 000, эту выборку надо очистить от не номеров и неполных номеров, кроме того поправить ошибки в распознавании.
https://nomeroff.net.ua/examples/draft/kz.rar
Когда подготовите эту выборку, я объединю с вашей и тогда получим хорошее качество.
По «квадратным» номерам есть планы, но это будем делать в следуюющих версиях.
Он класифицирован как не номер «xx-unknown», его можно не учитывать в «боевом» режиме. Другими словами мы видим похожую на номер область и понимаем что она не относится к известным нам номерам. Мы анализируем такие области, в чем здесь проблема. Такие области можно не показывать если Вам это «режет глаз»
Отличный результат, вы молодцы! У нас скромнее 0,97 для Украинских номеров и 0,96 для номеров РФ. И еще у нас медленее, все работает на Mask RCNN, в среднем, 0.8 s/фото на GPU.
Наш алгоритм от AUTO.RIA, который называется Nomeroff Net успешно справляется с задачей и правильно читает номер. :)

Можете протестировать online https://nomeroff.net.ua/onlinedemo.html. Код выложен на Github.
image
Accuracy на тестовой выборке, какой процент правильно распознаных номеров?
Закрытый номер порождает недоверие к продавцу и существенно влияет на конверсию просмотров в звонки.
Потенциальный покупатель может подумать что вы «стремный» продавец и вам просто не позвонит.

На нашем сайте AUTO.RIA у нас тоже есть такая функция, но мы ее не рекламируем и не делаем зарисовку очень привлекательной, так как считаем это создает барьер в доверии. А саму функцию ввели чтоб люди не «уродовали» фотографию тряпочками и не лепили квадратики в paint-е.
1. 250ms хорошая скорость, на каком размере фото проводите определение 4-х точек?
2. Определяете ли вы сам номер на фото и какая точность вашего алгоритма?
Посмотрел датасет, есть несколько моментов, которые нужно уладить перед тем как заниматься распознаванием.
1. Размечая данные нужно использовать инструмент «Polygon region shape» а не «Rectangular region shape», часть фото размечена неправильно «Rectangular region shape»
2. С помощью примера пройдитесь по датасету и отметте для себя те фото, где границу номера находит неверно. С помощью VGG Image annotator есть смысл разметить только те фото, которые не определяются нашей моделью корректно. Поблемные можно скопировать в отдельную папку и там розметить. Потом их можно будет добавить к нашим данным и перетренировать, после этого находить будет лучше.
3. Я вижу несколько дизайнов номеров, кроме того есть «квадратные» (с пропорцией 1:2). Такой тип номеров Nomeroff Net пока что распознавать не умеет. Поэтому начать нужно с чего-то одного, например с новых «неквадратных»
image
Для этого с выборки надо убрать все «квадратные» и оставить только с таким дизайном, можно попробовать оставить и с другим дизайном, но не инверсные (где белим по синему или белым по красному)

Жду от вас отфильтрованую выборку для дообучения Mask RCNN (п.1) и очищенную от «квадратных» и инверсных номеров/
Выложите архив с фотографиями на Google disk, например. И вышлите ссылку на этот архив
Мы все сделаем и натренируем, но есть одно условие мы выложим модель в открытый доступ и поставим ваши копирайты.
Этой командой вы минимизировали количество потребляемой видеопамяти, это могло незначительно отразится на производительности, можете поэкспериментровать с этим коэффициентом:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.7
session = tf.Session(config=config)


Ошибку с датасетом пофиксим, спасибо.
Перетренировка классификатора в этом примере
Не забываем поправить перечень классов:
        self.CLASS_REGION = ["xx-unknown", "eu-ua-2015", "eu-ua-2004", "eu-ua-1995", "eu", "xx-transit", "ru", "kz"]
У CDNvideo есть украинское юрлицо, несколько узлов CDN в Киеве, да и цена на порядок ниже указанной.

Если только в Киеве, то это востребовано для международной раздачи трафика, в рамках Украины это не CDN, это просто раздача с Киевского сервера, у Hostpro дороже, но у них сервера по всей Украине: Киев, Львов, Одесса, Харьков, Днепр и это можно уже назвать CDN в рамках Украины.
Менял SGD на Adam и RMSProp, экспериментировал с learning rate, результат похуже, даже так — «стабильно хуже». Если есть спецы, ради спортивного интереса попробуйте получить accuracy выше 97.2% на этом датасете, там есть и тестовая выборка, но ее, по понятным причинам включать в обучение нельзя.
Модель, которая находит границы номеров, пока что перетренировывать нету смысла. она и так будет находить границы номеров
MASK_RCNN_MODEL_PATH = os.path.join(NOMEROFF_NET_DIR, «models/mask_rcnn_numberplate_0700.h5»)

Модель, которая класифицирует тип номера требует перетренировки с добавлением вашего датасета
OPTIONS_MODEL_PATH = os.path.join(NOMEROFF_NET_DIR, «models/numberplate_options_2019_03_05.h5»)

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

Модель OCR, которая счытывает номер вашей страны независима, вам ее просто нужно натренировать.

Information

Rating
Does not participate
Location
Винница, Винницкая обл., Украина
Date of birth
Registered
Activity