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

AI&ML Teach Lead

Send message
Вначале, вам нужно сформировать выборку номеров, на которой будете обучать.
  • Берете хотя бы 1000 фото авто с номерами вашей страны
  • Берете за основу вот этот скрипт, и выдергиваете ним сами номера, вот фрагмент как нужно модифицировать код:
            # cut zones
            zones = await rectDetector.get_cv_zonesBGR_async(img, arrPoints)
            toShowZones = await rectDetector.get_cv_zonesRGB_async(img, arrPoints)
            num = 0
            for zone, points in zip(toShowZones, arrPoints):
                plt.axis("off")
                mpimg.imsave("{}-{}.png".format(fname,num), zone)
                num = num + 1
                plt.imshow(zone)
                plt.show()
    

  • Потом размечаем, полученные номера с помощью нашей админки, класификатору в перпечень добавляете «kz» (к конфиге)
    region_id: ["xx-unknown", "eu-ua-2015", "eu-ua-2004", "eu-ua-1995", "eu", "xx-transit","ru","kz"]
    ,
  • Перетринировуем модель классификатора типов номеров, чтоб он начал различать номера вашей страны
  • По аналогии создаем файл OCR для Вашей страны и тренируем
  • Проверяем точность на тестовой выборке в этом же скрипте, если устраивает записываем натренированную модель, нет тренируем еще раз, также качество можно улучшить если увеличить выборку.


Если не разберетесь можете выслать нам исходный датасет с фотографиями авто, мы можем помочь, но при условии что мы выложим результат в открытый доступ для всех.
Рад за команду nginx. Уверен, ни за что переживать не стоит — Сысоев и Ко не дадут запроприетарить то что развивалось с открытой лицензией. А если будут «гонения», то произойдет тоже что с mysql — Монти сделал форк и успешно развивает MariaDB, не давая расслабится Oracle :)
Я подумал, что замеры провести можно. Например, взять фото из папки test, русских или украинских номеров (на них не проводилась тренировка модели) и прогнать через наш модуль, через api openaslr и получить результат. Ну потом сравнить. Думаю, для интереса мы как-то найдем для этого время. :)
Да и там опечатка не 3% а 3 градуса (в градусах мне привычнее).
Трудно сделать корректное сравнение, так как они проганяют бенчмарки на американских номерах, opensource-версию скорее всего не развивают в угоду комерческой версии, которая работает хорошо.
Мы пробовали пользоваться opensource-версией, она не собралась ни на одном из наших linux-ов, в docker-е запустилась, но качество распознавания было очень низким, поэтому и пришлось писать свое.
Единстввенный плюс — она работает быстее.
Чтоб вы правильно понимали мой выбор еще полгода назад, я вообще не понимал как решаются задачи компьютерного зрения. Следуя мисии нашей компании, которая звучит так «мы строим проверенный интернет», у нас возникла потребность в системе разпознавания номерных знаков с валедацией по базе МВД, которая должна справляться с нагрузкой 200 000/день. Мне задача показалась очень интересной, адекватного опенсурс-решения с требуемой точностью я не нашел, вот мы с Дмитрием написали то что есть. Все работает на одном сервере с 2 видеоплатами (для моей компании это не дорого). 2 месяца назад там вместо нынешней OCR вообще использовался tesseract :), так что вы видите решение уже после первой оптимизации.

Mask RCNN я выбрал потому что для новичков в компьютерном зрении он очень прост и понятен. Уверен, что решить задачу можно с потреблением меньшего количества ресурсов, но ведь это и не последний релиз нашего модуля.

Я использую approxPolyDP, но для получения не 4 а большего числа граней, так как при апроксимации в 4 вершины вы получите очень неточный результат. Потом применяю k-means и получаю 4-х угольник, который нельзя назвать параллелограммом, т.к. там допускается наличие перспективного искажения, оно задается настройками. Мы допускаем вариативность до 3% между противоположными гранями (по умолчанию), этот параметр можно протюнить («под себя»). Т.е. если разница получается больше, мы «подравниваем» наш 4-х угольник.
Может быть я недостаточно описал проблему, сейчас поясню.

Дело вот в чем, на первом этапе с помощью Mask RCNN мы получаем области с потенциальными номерами, они бинарные в виде маски.

Потом алгоритмами opencv мы преобразуем каждую из областей в выпуклый многоугольник, который можно попытаться апроксимировать до 4 опрных точек, желательно, соблюдая при этом максимально приближенную к очертанию номера форму.

Многоуголник может сотоять из разного размера линий и их угла наклона, с помощью k-means я разбиваю эти линии на 2 группы таким образом чтоб далее можно было сгрубировать эти линии в 4 грани многоугольника с номером. Использования стандартного k-means было невозможно, т.к. подсчет distance по классическому алгоритму будет считать неправильно угол между двумя прямыми.

Например угол между линиями 180 градусов и 0 градусов равен 0, или угол между 175 и 3 = 8, между 95 и 120 равен 25. Также по другому нужно просчитывать центроиды кластеров для таких distance.

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

Если говорить про IT-сферу то причина есть — это налоги, в Украине на упрощенке IT-шник платит 5% с оборота + грубо 35$/месяц в персионный форд (есть еще военный сбор 1.5%) и все, раз в квартал в электронной форме здает отчет. В Европе это 35-40% + дороже проживание. Конечно, с судами и силовыми органами в Украине все печально их никто не риформировал, тут риски есть, но к IT-шнику тяжелее «присосаться» чем к обычному бизнесу. Так что в IT-сфере массовой эмиграции в Украине не наблюдается, наоборот, отрасль развимвается, я знаю людей которые вернулись со штатов во Львов и рабоатаю там в оутсорсинговой компании.
В Украине есть еще одно обстоятельство, которое, возможно, косвенно влияет на размер растаможки — у нас президент совладелец корпорации Богдан, которая производит (в том числе) легковые авто :).
После выборов, может все изменится, т.к. есть люди, которые смотрят прогрессивно на ставки растаможки.
С электрокарами вопрос уже решен на 4 года, у нас електрический iPace на 20% дешевле чем в Росии.
Я надеюсь, что все же количество авто на еврономерах уменьшится, т.к. налоги нужно платить.
«Евробляхи» уже законодательно урегулировали. На европейских номерах ездить не выгодно, грозит большой штраф. Они все постепенно переходят на украинские номера.
Это была самоирония (я там смайлик поставил). Вы все правильно пишите — мы делали не оптимально, но быстро. Кроме того, благодаря тому что мы сами размечали, мы создали неплохую админку, которую допиливали в процессе разметки. Вначале файлы раскладывались по папкам и редактировались json-описания вручную.
Мы сейчас добавляем поддержку номеров РФ с качеством распознавания 96%, уже все работает. Причешем, закомитим и опишем все во 2 части в ближайшие несколько дней.
Спасибо. Чтобы сильно помогло, нужно около 10 000 распознаных номеров. Мы уже натренировали базу украинских номеров и получили очень высокую точность. Скоро напишем вторую часть статьи, где расскажем как тренировать модели под свои нужды.
Немного потестировал онлайн вашу программу. Сразу скажу у меня есть база только российских номеров. Цель тестирования: определить качество выделения номерной пластины.
Довольно часто происходит определение не только номерной пластины, но и номера:

В нашей обучающей в выборке нету ни одного номера РФ. Добавте размеченные данные в выборку, перетренируйте модель и результат будет лучше. Артифакты будет находить всегда, потому что есть много визуально похожих на номер частей изображения. Но их можно отфильтровать, если очень хорошо детектить текст внутри границы номера. Мы над этим работаем, уже получили отличные результаты для украинских номеров. Другими словами мы заменили tesseract на свою обученную нейронку. Об этом напишем в следующей статье.

P.S. Я так же занимаюсь определением номеров. У меня есть база более 7 000 рос номеров. Давайте меняться. Интересуют рос, укр, еврономера.

Мы выложили датасеты в открытый доступ, так что Вам взамен ничего присылать ненужно. Если хотите приблизить хорошое распознавание номеров РФ нашим алгоритмом пришлите свою базу.
Мы работаем над заменой tresseract, но это не очень тривиальная задача, поэтому запасайтесь терпением и попкорном, мы приступили к разработке. Все что очень нужно это фотки с номерами РФ, как, собствненно, фото с номерами и др. стран. У кого есть — поделитесь.
Ставте 3.4, там ошибки не будет. В понедельник пофиксим для 4.0.0.
Попробуйте еще раз, на демо-сайте не такое уж крутое железо.
По статистике просмотров, объявления с замазанными номерами смотрят на 43% меньше а звонят по них еще меньше. Для покупателя вы попадаете в одну категорию с мошенниками, которые обычно замазывают номера. Так что не рекомендую так делать. Это вызывает недоверие на начальном этапе и вы просто можете не получить покупателя, которому вы изначально подозрительны.

Information

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