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

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

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

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


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

    Если только в Киеве, то это востребовано для международной раздачи трафика, в рамках Украины это не CDN, это просто раздача с Киевского сервера, у Hostpro дороже, но у них сервера по всей Украине: Киев, Львов, Одесса, Харьков, Днепр и это можно уже назвать CDN в рамках Украины.
  • Распознавание номеров. Как мы получили 97% точности для Украинских номеров. Часть 2
    0
    Менял SGD на Adam и RMSProp, экспериментировал с learning rate, результат похуже, даже так — «стабильно хуже». Если есть спецы, ради спортивного интереса попробуйте получить accuracy выше 97.2% на этом датасете, там есть и тестовая выборка, но ее, по понятным причинам включать в обучение нельзя.
  • Распознавание номеров. Как мы получили 97% точности для Украинских номеров. Часть 2
    0
    Модель, которая находит границы номеров, пока что перетренировывать нету смысла. она и так будет находить границы номеров
    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, которая счытывает номер вашей страны независима, вам ее просто нужно натренировать.
  • Распознавание номеров. Как мы получили 97% точности для Украинских номеров. Часть 2
    0
    Вначале, вам нужно сформировать выборку номеров, на которой будете обучать.
    • Берете хотя бы 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 для Вашей страны и тренируем
    • Проверяем точность на тестовой выборке в этом же скрипте, если устраивает записываем натренированную модель, нет тренируем еще раз, также качество можно улучшить если увеличить выборку.


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

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

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

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

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

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

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

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

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

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

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

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