Nomeroff Net numberplate detection OCR example


Продолжаем рассказ о том как распознавать номерные знаки для тех кто умеет писать приложение «hello world» на python-е! В этой части научимся тренировать модели, которые ищут регион заданного объекта, а также узнаем как написать простенькую RNN-сеть, которая будет справляться с чтением номера лучше чем некоторые коммерческие аналоги.
В этой части я расскажу как тренировать Nomeroff Net под Ваши данные, как получить высокое качество распознавания, как настроить поддержку GPU и ускорить все на порядок…

Тренируем Mask RCNN находить область с номером


Конечно же, находить можно не только номер, а любой другой объект, потребность в поиске которого у вас возникла. Например можно, по аналогии, поискать кредитную карту и считать ее реквизиты. В общем, нахождение маски, в которую вписан объект на изображении называют задачей «Instance Segmentation» (об этом я уже писал в первой части).

Сейчас мы разберемся как натренировать сеть для решения этой задачи. На самом деле тут программирования мало, все сводится к монотонной, нудной, однообразной разметке данных. Да-да, после того как вы разметите свою первую сотню вы поймете о чем я :)

Итак, алгоритм подготовки данных следующий:


  • Берем изображения размером не менее 300x300, сбрасываем все в одну папку
  • Загружаем инструмент для нанесения разметки VGG Image Annotator (VIA), можно размечать прямо онлайн, на выходе будет директория с фото и сформированный вами json-файл с разметкой. Таких папок нужно две, в одной под названием train поместите основную часть примеров, во вторую val приблизительно 20-30% от числа примеров первой паки (Конечно же, в этих папках не должно быть одинаковых фотографии). Можете посмотреть пример размеченных данных для проекта Nomeroff Net. По количеству — чем больше тем лучше. Некоторые специалисты рекомендуют 5 000 примеров, мы обленились, набрав чуть более 1 000 так как результат нас вполне устроил.

    VGG Image Annotator (VIA) editing example
  • Чтоб приступить к обучению вам нужно загрузить с Github сам проект Nomeroff Net, установить Mask RCNN со всеми зависимостями и можно попробовать запустить скрипт тренировки train/mrcnn.ipynb на наших данных
  • Сразу предупреждаю, это работает не быстро. Если у Вас нет GPU это может занять дни. Чтоб существенно ускорить процесс обучения желательно установить tensorflow с поддержкой GPU.
  • Если тренировка на нашем датасета у вас прошла успешно, теперь можно смело переключатся на свой.
  • Обратите внимание — мы не обучаем все «с нуля», мы дотренировываем модель, обученную на данных COCO dataset, которую Mask RCNN закачает при первом запуске

  • Вы можете дотренировывать не coco, а нашу модель mask_rcnn_numberplate_0700.h5, при этом укажите путь к этой модели в конфигурационном параметре WEIGHTS (по умолчанию «WEIGHTS»: «coco»)
  • Из параметров, которые можно протюнить это: EPOCH, STEPS_PER_EPOCH
  • Результат после каждой эпохи будет сбрасываться в папку ./logs/numberplate<дата запуска>/

Чтоб опробовать натренированную модель в деле, в примерах проекта замените MASK_RCNN_MODEL_PATH на путь к своей модели.

Улучшаем классификатор номерных знаков под свои требования


После того, как области с номерными знаками найдены, нужно попробовать определить какого государства/типа номер мы распознаем. Тут универсализация работает против качества распознавания. Поэтому, в идеале, нужно тренировать классификатор, который не просто определяет какой страны номер, но и разновидность оформления этого номера (расположение символов, варианты символов для заданной разновидности номера).

В нашем проекте мы реализовали поддержку распознавания номеров Украины, РФ и Европейские номера в целом. Качество распознавания европейских номеров немного хуже, так как там номера с разным дизайном и увеличенным количеством встречающихся символов. Возможно, со временем, будут отдельные модули распознавания для «eu-ee», «eu-pl», «eu-nl»,…

Перед классификацией номерного знака его нужно «вырезать» из изображения и нормализировать, другими словами по максимуму убрать все искажения и получить аккуратный прямоугольник, который будет подвергаться дальнейшему анализу. Эта задача оказалась достаточно нетривиальной, мне даже пришлось вспомнить школьную математику и написать специализированную реализацию алгоритма кластеризации k-means :). Модуль, который это все процессит называется RectDetector, вот как выглядят нормализованные номера, которые далее будем классифицировать и распознавать.

Пример нормализации номерных знаков

Чтоб как-то автоматизировать процесс создания датасета для классификации номеров мы разработали небольшую админку на nodejs. С помощью этой админки вы можете разметить надпись на номерном знаке и класс к которому его относить.

Классификаторов может быть несколько. В нашем случае по типу номера и по тому зарисован/закрашен ли он на фото.

Админка для разметки номерных знаков Nomeroff Net

После того как разметили датасет, делим его на тренировочную, валидационную и тестовую выборки. В качестве примера скачайте наш датасет autoriaNumberplateOptionsDataset-2019-03-06.zip, чтоб посмотреть как там все устроено.
Так как выборка уже размечена (отмодерирована), то вам нужно в рандомных json-файлах поменять «isModerated»:1 на «isModerated»:0 и после этого запустить админку.

Тренируем классификатор:


Скрипт тренировки train/options.ipynb поможет получить Вам свой вариант модели. На нашем примере видно что для классификации регионов/типов номерных знаков мы получили точность 98.8%, для классификации «закрашен ли номер?» 99,4% на нашем датасете. Согласитесь, неплохо получилось.

Тренируем свою OCR (распознавалку текста)


Ну вот мы нашли область с номером и нормализировали ее в прямоугольник, который содержит надпись с номером. Как нам прочитать текст? Проще всего прогнать его через FineReader или Tesseract. Качество будет «не очень», но при хорошем разрешении области с номером сможете получить точность на уровне 80%. На самом деле это неплохая точность, но если я Вам скажу что можете получить 97% и при этом потратите значительно меньше компьютерных ресурсов? Звучит неплохо — попробуем. Для этих целей подойдет немного необычная архитектура, в которой используются как сверточные так и рекуррентные слои. Архитектура этой сети выглядит приблизительно так:

image

Реализация взята с сайта https://supervise.ly/, мы ее немного модифицировали для тренировки на реальных фото (на сайте supervisely подан вариант для синтетической выборки)

Теперь начинается самая увлекательная часть, разметить хотя бы 5 000, номеров :). Мы разметили около ~15 000 Украинских, ~6500 Европейских и ~5000 РФ. Это была самая сложна часть разработки. Вы даже не представляете сколько раз я засыпал на стуле у компа модерируя по нескольку часов в день очередную порцию номеров. Но настоящий герой разметки dimabendera — он разметил 2/3 всего контента, (поставьте ему плюс если понимаете как скучно было делать всю эту работу :) )

Можно попробовать этот процесс как-то автоматизировать, например, предварительно распознав каждое изображение Tesseract-ом, а потом уже поправить ошибки с помощью нашей админки.
Обратите внимание: для разметки классификатора и OCR на номере используется одна и та же админка. Одни и те же данные вы сможете загрузить и туда и туда, кроме зарисованных номеров, конечно.
Если вы разметите хотя бы 5000 номеров и сможете обучить свою OCR — смело оформляйте себе премию у начальства, уверен, это испытание не для слабаков!

Приступаем к тренировке


Скрипт train/ocr-ru.ipynb тренирует модель для номеров РФ, там же примеры для Украины и Европы.

Обратите внимание, в настройках тренировки там только одна эпоха (один проход).

Особенностью тренировки такого датасета будет очень разный результат при каждой попытке, перед каждой тренировкой данные перемешиваются в случайном порядке, иногда более удачно для тренировки иногда «не очень». Я вам рекомендую пробовать хотя бы 5 раз, при этом контролировать точность на тестовых данных. При разных попытках запуска у нас точность могла «прыгать» от 87% до 97%.

Несколько рекомендаций:

  • Не нужно инициализировать все по-новой просто перезапускаем строку model = ocrTextDetector.train(mode=MODE) пока не получим ожидаемый результат
  • Одна из причин плохой точности недостаточное количество данных. Если не устраивает — размечаем еще и еще, в какой-то момент качество расти перестает, для каждого датасета по-разному, можно ориентироваться на цифру 10 000 размеченных примеров
  • Тренировка будет проходить быстрее, если у вас установлен драйвер CuDNN от NVIDIA, поменяйте значение MODE = «gpu» в сценарии обучения и вместо слоя GRU подключится CuDNNGRU, что приведет к трехкратному ускорению.

Немного о настройке tensorflow для GPU NVIDIA


Если вы счастливый обладатель GPU от NVIDIA, то вы можете в разы все ускорить: и тренировку моделей и инференс (режим распознавания) номеров. Проблема заключается в том чтоб корректно все установить и скомпилировать.

Мы на своих серверах ML используем Fedora Linux (так сложилось исторически).

Приблизительная последовательность действий для тех кто использует эту OS следующая:

  • Ставим драйвер GPU для вашей версии OS, вот тут для Fedora
  • Подключаем репозиторий NVIDIA и ставим оттуда набор пакетов CUDA, вот тут для CentOS/Fedora
  • Ставим bazel, и собираем tensorflow из исходников по этой доке
  • Так же желательно установить старую версию компилятора gcc, который называется cuda-gcc, у меня все нормально собиралось на cuda-gcc 6.4. При настройке сборки указывайте путь именно к cuda-gcc

Если собрать tensorflow с поддержкой gpu не получится, можно запустить все через docker, при этом кроме docker-а нужно доустановить пакет nvidia-docker2. Внутри docker-контейнера можно запустить jupyter notebook, и далее запускать все там.

jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root

Полезные ссылки



Также хочу поблагодарить хабраюзеров 2expres, glassofkvass за предоставленные фото с номерами и dimabendera за то что написал большую часть кода и разметил большую часть данных проекта Nomeroff Net.

Комментарии (64)


  1. Kwent
    07.03.2019 18:19
    +2

    При разных попытках запуска у нас точность могла «прыгать» от 87% до 97%.

    Дело не только в данных, но и в вашем процессе обучения — высокий статичный lr, SGD. Попробуйте поменять SGD на Adam или RMSProp и меняйте (в общем случае уменьшайте, но есть и извращения вроде циклических изменений) learning rate, например, как здесь

    Также есть замечательная штука кросс-валидация, которая позволяет получать более стабильный результат от запуска к запуску (по сути это усреднение результатов n запусков с разными наборами train и val)


    1. apelsyn Автор
      07.03.2019 18:45

      Спасибо, попробуем.


  1. eugene_bb
    07.03.2019 19:21

    Пора изменить формат номерного знака (а лучше всех дорожных знаков) чтобы приспособить его к автоматическому распознаванию и добавить ECC символы для коррекции ошибок.

    А то вместо решения проблемы ищутся пути как приделать костыли.


    1. Neusser
      08.03.2019 12:10

      В Германии был разработан и с 2000 года используется (а также в некоторых других странах) шрифт FE, специально для номерных знаков, чтобы номер было легко автоматически распознавать и очень сложно изменить.

      Заголовок спойлера
      image

      Пример из статьи: сочетание PBF переделано в R3E. Ниже — как R3E должно выглядеть на самом деле.
      image


      1. Wolframium13
        09.03.2019 11:42

        Ну из-за позиции это и теряет смысл. В и 3 не могут пересечься.


  1. Zifix
    07.03.2019 21:16
    +3

    Вы много пишете о героической разметке номеров разработчиками, но доблести в этом подходе нет никакой.

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


    1. apelsyn Автор
      07.03.2019 21:59
      -1

      Это была самоирония (я там смайлик поставил). Вы все правильно пишите — мы делали не оптимально, но быстро. Кроме того, благодаря тому что мы сами размечали, мы создали неплохую админку, которую допиливали в процессе разметки. Вначале файлы раскладывались по папкам и редактировались json-описания вручную.


  1. deepform
    07.03.2019 23:49

    А как же "евробляхи"?)


    1. apelsyn Автор
      08.03.2019 00:07
      -2

      «Евробляхи» уже законодательно урегулировали. На европейских номерах ездить не выгодно, грозит большой штраф. Они все постепенно переходят на украинские номера.


    1. vlreshet
      08.03.2019 13:54
      -2

      Прикрыли лавочку. На дорогах стало сильно меньше евроблях.


      1. vlreshet
        08.03.2019 15:01

        Интересно, за что меня минуснули. Лично знаю троих людей которые покупали евробляхи, ходили на разные митинги типа «евросила», но в итоге вот недавно растаможили их, ибо прижали.


  1. Drebin893
    07.03.2019 23:51
    +3

    Все-таки здорово, что в Украине можно столь часто встретить автомобили с европейскими номерами. Приезжие из Европы туристы — это очень и очень хорошо. Но особенно приятно, что многие из данных автомобилей принадлежат самим украинцам.

    По сравнению с Россией, Украина — просто отдельный удивительный мир.
    Снимаю шляпу и очень-очень уважаю.

    И в особенности уважаю решение разрешить безвизовый въезд граждан ЕС в Украину (на тот момент еще односторонний).


    1. radonit
      08.03.2019 09:38
      -1

      Вы видимо не совсем в курсе почему там можно встретить автомобили с европейскими номерами. Кстати как тут выше написали их скоро будет много меньше.

      Но особенно приятно что многие из данных автомобилей принадлежат украинцам
      — вот это вы сейчас серьёзно? Совсем не понимаете зачем так делают, почему это очень плохо и с какой целью борются?
      По сравнению с Россией Украина почти ничем и не отличается, вот их децентрализация пожалуй действительно может принести плоды, поживём увидим какие.


      1. Drebin893
        08.03.2019 11:48
        -1

        1. Есть много украинцев, которые смогли получить гражданства Польши, Румынии, Венгрии и некоторых других европейских стран. Они имеют возможность приобретать автомобили в Европейском Союзе, проживать там и приезжать в Украину на автотранспорте с европейскими номерными знаками.

        2. Есть много украинцев, которые задействуют серые схемы с целью ввоза в Украину и последующей эксплуатации транспортного средства на европейских номерах.

        Целей использования украинцами автомобилей на европейских номерах две:

        — Не платить таможенные пошлины
        — Имиджевый статус

        Если вторая причина лежит исключительно в категории вкусов (все же, «понты» это спорный плюс), то первую стоит рассмотреть подробнее.

        Оставшиеся в Украине автопроизводства всеми силами лоббируют снижение параллельного импорта и удержания таможенных пошлин на ввоз авто. Еще бы. Кто будет покупать «отечественного производителя» известного качества, если в ту же цену (и даже дешевле) будет возможность купить импортное авто с минимальным пробегом? Официально функционирующие в Украине представительства мировых автобрендов тоже не заинтересованы в параллельном импорте.

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

        В России гайки закручены уже давно и никакого возмущения в публичном пространстве не было (в России публично возмущаться запрещено). Эксплуатация транспортных средств на иностранных номерных знаках была свернута еще в начале нулевых, а в дальнейшем ограничили самостоятельный ввоз ТС путем высоких пошлин и смежных платежей. Сделали невыгодным импорт авто из Японии, хотя весь Дальний восток жил исключительно праворульными автомобилями. Издевательства вводятся каждый год, например, недавно ввели обязательное оснащение ввозимых авто системой ЭРА-ГЛОНАСС.

        Ну и напоследок скажу про автомобили приезжих. В России среди иностранных автомобилей я видел разве что авто на беларуских, киргизских и казахстанских номерах (ну и на номерах недо-государств «ДНР», «ЛНР», «Абхазии» и «Южной Осетии»). В Украине — на польских, немецких, венгерских, румынских, чешских, и других европейских.

        Кроме того, в Россию просто так не получится ввезти авто с иностранной регистраций и разобрать на автозапчасти (заработав тем самым на ценовой разнице). В Украину — можно, существуют отработанные схемы. Следовательно, в Украине даже в этом гораздо больше возможностей для заработка средств.


        1. radonit
          08.03.2019 21:52
          -2

          П.1 ничтожество и полностью эквивалентен России, так что им можно пренебречь и в дальнейшем не рассматривать.
          П.2 основной, именно о нём и речь
          В России закрутить гайки в этом направлении настолько давно, что в то время можно было всё, это привело к появлению автомобилях кластеров в Калуге и Питере, с тысячами рабочих мест, про Ваз даже не говорю.
          На Украине фактически не осталось гражданских автопроизводств, за в коме и давно, цель в другом, чтоб автокомпании перенесли хотя б отвёрточную сборку на Украину тем самым создав рабочие места.
          Кстати во многих европейских странах пошлины так же высоки, хотя там нет своих автопроизводств.

          Борьба с иностранными номерами лежит ещё в одной плоскости — автофиксация штрафов, поэтому государство такие номера не любит.

          В России массово видел эстонские и латвийские номера, да и в России где? В Екатеринбург вы и этого не увидите, в Карелии наоборот, Украине достаточно компактна по площади и сильно ближе к восточной Европе, потому там и много таких номеров, заметьте не Италии, Испании, Франции или Финляндии, а именно государств соседей, с чего б это?

          Последний абзац явный и неприкрытый уход от налогов, подождите немного и на Украине с этим разберутся


          1. Drebin893
            08.03.2019 23:09

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

            А могли быть вместо производственных гигантов тысячи малых фирм, занимающихся перегоном авто из Европы. Это, внезапно, тоже рабочие места.

            Борьба с иностранными номерами лежит ещё в одной плоскости — автофиксация штрафов, поэтому государство такие номера не любит.

            Как на счет того, чтобы научить камеры распознавать европейские номера?

            В России массово видел эстонские и латвийские номера, да и в России где? В Екатеринбург вы и этого не увидите, в Карелии наоборот, Украине достаточно компактна по площади и сильно ближе к восточной Европе, потому там и много таких номеров, заметьте не Италии, Испании, Франции или Финляндии, а именно государств соседей, с чего б это?

            В Петербурге и в Карелии автомобилей на финских номерах жалкая горстка, в отличие от Львова, где можно видеть польские буквально в каждом потоке. В Калининградской области вообще не видел ни одной машины на иностранных номерах. В Псковской области видел парочку на эстонских.

            Последний абзац явный и неприкрытый уход от налогов, подождите немного и на Украине с этим разберутся

            Уходить от данных налогов не потребуется, если их не будет.

            П.1 ничтожество и полностью эквивалентен России, так что им можно пренебречь и в дальнейшем не рассматривать.

            Вот тут вы ошибаетесь. В Западной Украине у многих польские, румынские и венгерские паспорта.


            1. Wolframium13
              09.03.2019 11:49

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


    1. alex_fort
      08.03.2019 12:12
      -1

      А я заметил, что вы возникаете в топиках на любую тему, и начинаете вести тупую агитацию за эмиграцию, хотя это неактуально уже лет 30. Вам за это платят? Судя по моментальной поддержке — да. Вы же даже имя сменили — с какой целью болтаетесь здесь?


      1. alex_fort
        08.03.2019 12:26
        -2

        А, я просто не знал про этого персонажа.


      1. xfaetas
        08.03.2019 12:30
        +2

        это неактуально уже лет 30

        Хорошая шутка, особенно на фоне полусотни тысяч людей, сваливших из РФ только в Европу только за 2018й год.


        1. alex_fort
          08.03.2019 12:36
          -2

          Ну, я и сказал, что агитировать за это просто глупо — люди валят с конца 80-х.


      1. Drebin893
        08.03.2019 14:46
        +1

        вести тупую агитацию за эмиграцию

        Читайте мои публикации внимательнее.
        Ни разу не агитировал уезжать из Украины.


        1. alex_fort
          08.03.2019 22:07

          А причем тут вообще Украина? Я ее не упоминал.


          1. Drebin893
            08.03.2019 23:11

            Так и я не агитировал.


    1. iDm1
      08.03.2019 14:37
      +1

      Вам нравятся в чистом виде номера? Ведь доступность автомобилей для населения в России объективно не то чтобы прям на много, но выше. Какое-то время был даже большой поток перепродажи авто из Краснодарского края в Украину через Крым, Лавочку прикрыли, но раскупали авто по российским ценам весьма охотно. Странным такой отдельный удивительный мир не находите?


      1. Drebin893
        08.03.2019 14:48
        +1

        Что в Украине, что в России, проблема с доступностью автомобилей одна: наличие таможенных пошлин. В обоих случаях это «налог на иностранное».


        1. iDm1
          08.03.2019 14:59
          +2

          Разумеется, таможенные пошлины являются мерой по поддержке собственной экономики. Если их одну за одной отменять, то положительный эффект для населения будет кратковременным, те же автомобили по началу станут доступнее, но и рабочих мест в стране станет меньше. Трудовая миграция станет не одним из возможных вариантов улучшения благосостояния, а единственным путём выживания. Эмиграционный поток вырастет ещё на порядок, мы уже можем наблюдать этот эффект.


          1. Drebin893
            08.03.2019 15:12
            +1

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

            Искусственно раздувать рабочие места — это тупиковый путь. В России и Украине до сих пор в городах ходят автобусы с кондукторами, только потому, что это рабочие места. В России запутанная донельзя система управления бизнесом (НИГДЕ не видел такого в Европе, и, по отзывам, в Украине все сильно проще), из-за которой предприниматели вынуждены нанимать юристов и бухгалтеров. Толпы юристов и бухгалтеров — вновь искусственно созданные рабочие места. И таких примеров масса. Миллионы людей занимаются пустой и неэффективной работой.

            Эмиграционный поток вырастет ещё на порядок, мы уже можем наблюдать этот эффект.

            Эмиграционный поток не должен быть потоком с билетом в один конец. По моим наблюдениям, из Украины люди уезжают поработать на несколько месяцев, или на несколько лет. Заработав состоятельные деньги, они обосновываются в Украине, занимаются строительством и т.п. Большой плюс, если человек проработал 5-7 лет в стране, в которой возможно получить гражданство (в Польше — вполне реально).

            Трудовая миграция станет не одним из возможных вариантов улучшения благосостояния, а единственным путём выживания.

            Человек, проживший, проучившийся, поработавший долго в Европе и вернувшийся в родную страну — уже совсем другой человек. И ментально, и культурно. Считаю, что такие люди очень выгодны любой стране бывшего СССР. Невыгодны только диктатурам.


            1. iDm1
              08.03.2019 15:20
              +1

              Искусственно раздувать рабочие места — это тупиковый путь
              Только вот именно этот «тупиковый» путь сделал успешными крупнейшие экономики мира. Речь ведь не только в юристах и бухгалтерах. Если к примеру та же Шкода открывает завод по производству автомобилей в Украине, тем самым избавляясь от таможенных пошлин и обеспечивая рабочими местами, в том числе и высококвалифицированными, украинцев. А не выманивает их средства, а затем и их самих за границу.


              1. Drebin893
                08.03.2019 15:22

                Думаю, многие предпочли бы массовую выдачу рабочих виз на аналогичный завод в Чехии.


                1. iDm1
                  08.03.2019 15:38
                  +1

                  Люди? Вполне себе предпочли бы. То же касается и любой другой промышленности и сельского хозяйства, с таким подходом в конечном итоге все с радостью уедут. А кто останется? Что вообще останется? Вы серьезно считаете, что это верный путь?


                  1. Drebin893
                    08.03.2019 15:53
                    +1

                    Уехавшие однажды люди вернутся с хорошими финансами. Украина — не то государство, из которого люди уезжают, сжигая за собой мосты. Многие из вернувшихся будут обладателем европейского гражданства.

                    Главное: они вернутся носителями принципиально новой культуры и уникального жизненного опыта. Это происходит уже сегодня.


                    1. iDm1
                      08.03.2019 16:03

                      Украина — не то государство, из которого люди уезжают, сжигая за собой мосты.
                      Вы в этом уверены? Почему же тогда украинские диаспоры за границей столь многочисленны? В интервью с ними на вопрос о том, когда они вернутся на родину все как один отвечают «может быть когда-нибудь в лучшие времена», т.е. мы понимаем, что никогда.
                      Давайте просто рассуждать логично. Вы можете придумать причину по которой они должны возвращаться и покидать насиженное место в более развитой стране, которая обеспечила их всем необходимым? Ради чего? Чтобы снова столкнуться со всем тем, от чего они когда-то успешно сбежали? Где тут логика?


                      1. apelsyn Автор
                        08.03.2019 16:56

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

                        Если говорить про IT-сферу то причина есть — это налоги, в Украине на упрощенке IT-шник платит 5% с оборота + грубо 35$/месяц в персионный форд (есть еще военный сбор 1.5%) и все, раз в квартал в электронной форме здает отчет. В Европе это 35-40% + дороже проживание. Конечно, с судами и силовыми органами в Украине все печально их никто не риформировал, тут риски есть, но к IT-шнику тяжелее «присосаться» чем к обычному бизнесу. Так что в IT-сфере массовой эмиграции в Украине не наблюдается, наоборот, отрасль развимвается, я знаю людей которые вернулись со штатов во Львов и рабоатаю там в оутсорсинговой компании.


                        1. iDm1
                          08.03.2019 17:10

                          Продолжаем рассуждать логично. В случае IT сферы люди зачастую вообще не выезжают из Украины, это им и не нужно, они просто работают удаленно. Проживание в Украине с их зарплатами от зарубежных заказчиков — предложение от которого трудно отказаться. Только налоги они тоже платят не в Украине, а в основном на Кипре или каком-нибудь Гибралтаре. В этом легко убедиться, посмотрев их реквизиты и примеры договоров. Т.е. по сути представители IT в Украине являются не резидентами Украины, а лишь проживающими на ее территории. Траты на питание и проживание у них минимальны относительно их заработка, а остальные свои потребности они удовлетворяют зарубежными товарами (электроника, бытовая техника и даже медицина).
                          В текущем виде Украина неплоха для условного IT специалиста, работающего через интернет, но вот он не приносит Украине при этом вообще ничего.


                          1. Drebin893
                            08.03.2019 23:37
                            +1

                            В текущем виде Украина неплоха для условного IT специалиста, работающего через интернет, но вот он не приносит Украине при этом вообще ничего.

                            Совсем-совсем ничего:

                            1. Оплата товаров, продуктов и услуг, в стоимость которых заложен украинский НДС
                            2. Оплата ЖКХ и других регулярных услуг в Украине (электричества, интернета, мобильной связи и т.д.)

                            И кто вам сказал, что электронику и бытовую технику они покупают вне границ Украины? (бытовую технику!!! я понимаю смартфон, но кто холодильник из Польши повезет?) Тоже, разумеется, покупают большую часть всего в Украине, доплачивая украинский НДС и оставляя средства в экономике страны.

                            Они зарабатывают деньги за рубежом и тратят их в Украине. В то время как другие зарабатывают в Украине и выводят все за рубеж. Прямо совсем бесполезные люди удаленщики, не правда ли?


                            1. iDm1
                              08.03.2019 23:53

                              1. Оплата товаров, в которых заложен украинский НДС
                              2. Оплата ЖКХ и других регулярных услуг в Украине (интернета)
                              Так суть в том, что в той же мере, сколько любые другие граждане Украины. Т.е. их большие заработки ничего существенного дополнительно экономике не приносят.
                              И кто вам сказал, что электронику и бытовую технику они покупают вне границ Украины?
                              Мы ведь на IT ресурсе, так? Можем судить по себе? Вполне! Все, что можно дешево и практично заказать из-за границы — заказывается там. Разумеется холодильник проще купить в местном магазине бытовой техники. Но смартфоны, комплектующие ПК, лампы, светильники, звуковые колонки умные и не очень, и все такое прочее заказывается через интернет или привозится самостоятельно при посещении зарубежных стран и зачастую не облагается НДС. Но определенную часть средств налог государству все равно позволяет собрать.
                              А ведь НДС — это такая же мера защиты экономики, как таможенные пошлины на авто. А в данной ситуации буквально последний её оплот. Уже становится страшно его снижать, не так ли?
                              Они зарабатывают деньги за рубежом и тратят их в Украине.
                              По факту получается в своей стране тратят мало, не многим больше среднего… А вот к примеру отпуске, не редко в другой стране — другое дело. Они не бесполезные, но они не приносят ничего существенного сверх остального населения и драйвером экономики в таком случае стать не могут. Им самим хорошо, а стране: что они в IT, что на рынке торгуют — одно и то же.


            1. iDm1
              08.03.2019 15:56

              Эмиграционный поток не должен быть потоком с билетом в один конец. По моим наблюдениям, из Украины люди уезжают поработать на несколько месяцев, или на несколько лет. Заработав состоятельные деньги, они обосновываются в Украине, занимаются строительством и т.п. Большой плюс, если человек проработал 5-7 лет в стране, в которой возможно получить гражданство (в Польше — вполне реально).
              Наблюдение — это одно, а вот косвенные признаки говорят об обратном, многие люди не возвращаются, таких все больше. Вы, возможно, слышали о приблизительных оценках населения по потреблению хлеба или количеству отходов жизнедеятельности? Они дают неутешительные цифры. Но точно на этот вопрос нам даст ответ перепись населения, предлагаю подождать её и убедиться где правда.


          1. xfaetas
            09.03.2019 11:48

            Обратная сторона медали развития промышленности путём обкладывания пошлинами — убогий выбор автомобилей на внутреннем рынке, поскольку заходят только самые мейнстримовые производители со своими самыми мейнстримовыми моделями, а менее мейнстримовые вроде Seat или Alfa-Romeo из того же ценового диапазона, не видя смысла вкладываться в постройку завода, не могут конкурировать и не заходят вообще. Зато сразу понятно, холоп едет (если на недоиномарке местной сборки) или барин (если на немце или американце).

            Кстати за последние пару лет ВВП в Украине вырос, несмотря на отмену пошлин на авто и «развал» автомобильной промышленности — в отличие от… Просто люди начинают заниматься тем, что более актуально и в чём можно конкурировать — например, IT. Оттока населения в последнее время тоже не наблюдается: net migration на 1000 человек — в районе 0.


            1. iDm1
              09.03.2019 12:44

              Обратная сторона медали развития промышленности путём обкладывания пошлинами — убогий выбор автомобилей на внутреннем рынке...
              За экзотические марки автомобилей переплачивать вполне разумно. Это же выбор роскоши или средства передвижения. К тому же, если бы, к примеру, в России было бы достаточно почитателей Alfa-Romeo, способных ко всему прочему ее приобрести, то завод бы построили из чисто экономических соображений, рынок-то большой. Так же страны для этого объединяются в экономические союзы, в рамках которых имеют особые правила торговли между собой на взаимовыгодных условиях. Как, например ЕАЭС и ЕС. Последний союз для новых членов выгодных условий принципиально на данный момент не предлагает, но ничего не мешает этого добиваться, а не соглашаться на что угодно, либо вступать в другие экономические союзы, либо даже создавать новые, более подходящие.

              Кстати за последние пару лет ВВП в Украине вырос, несмотря на отмену пошлин на авто и «развал» автомобильной промышленности — в отличие от…
              Ну вы же понимаете, что из той позиции, где ВВП оказался за последние 5 лет, путь в принципе есть только вверх. В связи с чем не знаю к чему люди используют данный аргумент.
              Оттока населения в последнее время тоже не наблюдается: net migration на 1000 человек — в районе 0.
              Эти данные не о чем не говорят. Если отслеживание миграции в какой-либо стране не входит в текущие задачи ЦРУ, то данные для отчетности они вносят из любых других источников на их усмотрение и велика вероятность, что этим источникам был «Держстат», которой, мы понимаем, в угоду кому рисует цифры. Как я уже предлагал, надо дождаться переписи — она всё покажет. Сейчас точных данных по Украине в принципе нет и утверждения на эту тему беспочвенны.


              1. xfaetas
                09.03.2019 13:32

                За экзотические марки автомобилей переплачивать вполне разумно

                Экзотические они только в странах-любителях высоких пошлин, в других странах
                это обычные автомобили. Пошлины искусственно ограничивают выбор и повышают цены, в том числе цену владения.


                из той позиции, где ВВП оказался за последние 5 лет, путь в принципе есть только вверх

                Есть десятки стран с в разы более низким ВВП.


                которой, мы понимаем, в угоду кому рисует цифры

                Какие есть основания не доверять Укрстату? Оценка количества населения Украины Укрстатом на миллион меньше, чем ЦРУ, кстати. Можно также проверить по другим источникам.


                надо дождаться переписи

                Перепись населения ждать не обязательно, поскольку данных по смертности/рождаемости, въездам/выездам и т.д. ежегодно собирается и так достаточно.


                1. iDm1
                  09.03.2019 14:12

                  Экзотические они только в странах-любителях высоких пошлин, в других странах это обычные автомобили.
                  В каких других? Членах единых экономических союзов? Знаете страны с сильной экономикой и беспошлинным ввозом товаров для всех желающих? Я повторяю, низкие пошлины — это предмет двухсторонних договоренностей или договоренностей в рамках экономических союзов, а не «все везите к нам, что хотите».
                  Есть десятки стран с в разы более низким ВВП.
                  В Европе? И им тоже даёт кредиты МВФ? А уровень коррупции в них не выше украинского?
                  Какие есть основания не доверять Укрстату?
                  Огромный антирейтинг находящихся у руководства страны людей и высочайший уровень коррупции. Мы же понимаем, что антирейтинг не на пустом месте основан.
                  Перепись населения ждать не обязательно...
                  Достоверных демографических данных по Украине в принципе не существует, а перепись их даст.


                  1. xfaetas
                    09.03.2019 14:43

                    Высокие пошлины в целом признак слаборазвитых экономик. Является ли это последствиями неспособности договориться с другими странами или чего-то ещё — уже другой вопрос.


                    им тоже даёт кредиты МВФ

                    Кредиты дают тем, кто способен расти.


                    антирейтинг находящихся у руководства страны людей

                    Это довольно эфемерное понятие — у Трампа тоже антирейтинг, но рост ВВП за прошлый год — самый высокий с 2008 года, а у Ына или Туркмен-баши рейтинг, наоборот, пробивает потолок, но реальные результаты — не очень.


                    Достоверных демографических данных по Украине в принципе не существует

                    С таким подходом можно и результаты переписи под сомнение поставить: они ведь тоже обрабатываются Укрстатом. На самом деле существенные расхождения можно отловить путём сравнения данных с, к примеру, европейскими: например так недавно обнаружили, что Росстат показал в 5 раз меньше выехавших из России в Европу, чем Евростат.


                    1. iDm1
                      09.03.2019 15:13

                      Высокие пошлины в целом признак слаборазвитых экономик.
                      Тут есть корреляция, высокие пошлины на определенные категории товаров есть везде, ими закрывают проблемные места в балансе торговли. Больше проблемных мест — больше высоких пошлин. Слабая экономика не является следствием пошлин, а их причиной, ответом на проблемы. По этому их бездумное снижение или отмена могут привести лишь к краху.
                      Это довольно эфемерное понятие — у Трампа тоже антирейтинг.
                      У Трампа в основном искусственный антирейтинг, вызванный ведущейся против него пропагандой и политической борьбой элит внутри США. В Украине антирейтинг власти естественный, вызванный объективными причинами.
                      С таким подходом можно и результаты переписи под сомнение поставить: они ведь тоже обрабатываются Укрстатом
                      Под сомнение стоит ставить абсолютно всё и везде, но в любом случае перепись даёт существенно более близкую к реальности картину. Тем более велика вероятность, что проводить ее будут при руководстве уже нынешних оппозиционных сил, которым очевидно будет нужна реальная картина происходящего для демонстрации проблем из-за ошибок их предшественников.


        1. vlreshet
          08.03.2019 15:00
          +3

          С одной поправочкой. В России есть АвтоВАЗ, и, чисто теоретически, можно предположить что налоги на растаможку это поддержка отечественного производителя. А вот какого хрена такие налоги у нас в Украине — здравого объяснения нет. Был АвтоЗАЗ, и тот загнулся


          1. iDm1
            08.03.2019 15:06

            А вот какого хрена такие налоги у нас в Украине

            Чтобы стимулировать автопроизводителей открывать заводы непосредственно в стране, создавая рабочие места, а не выжимать из нее все средства и вслед за ними само её население. Иметь своего автопроизводителя хорошо, но можно заставить работать на экономику своей страны также и чужих.


            1. Drebin893
              08.03.2019 15:18
              +2

              А самих людей спросили, что они больше хотят?

              Есть представительство автоконцернов, лоббирующих свои интересы.
              Есть представительство «отечественных» автоконцернов, лоббирущих свои.

              Где представительство (объединение, выражающее свою политическую волю) жителей страны, которые, между прочим, как потребители, тоже имеют право высказать свое мнение?

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


              1. TheShock
                08.03.2019 15:36
                -1

                Вообще смогли добиться довольно лояльного закона, многие сейчас совершают паломничество в Европу за машинами.


              1. apelsyn Автор
                08.03.2019 15:45
                +1

                В Украине есть еще одно обстоятельство, которое, возможно, косвенно влияет на размер растаможки — у нас президент совладелец корпорации Богдан, которая производит (в том числе) легковые авто :).
                После выборов, может все изменится, т.к. есть люди, которые смотрят прогрессивно на ставки растаможки.
                С электрокарами вопрос уже решен на 4 года, у нас електрический iPace на 20% дешевле чем в Росии.
                Я надеюсь, что все же количество авто на еврономерах уменьшится, т.к. налоги нужно платить.


              1. iDm1
                08.03.2019 15:49

                А самих людей спросили, что они больше хотят?
                А как сформулировать вопрос? Вообще все люди хотят по 10 миллиардов долларов, виллу на берегу моря и бесплатное питание до конца жизни по достижению совершеннолетия. И может быть их потребности были бы даже рады удовлетворить, но это нереально.
                Где представительство (объединение, выражающее свою политическую волю) жителей страны, которые, между прочим, как потребители, тоже имеют право высказать свое мнение?
                Руководство страны. Люди высказали свое мнение, отдали свой голос на выборах и их интересы теперь представляют депутаты той же Верховной Рады (или подставьте соответствующий орган любой другой страны).

                К чести Украине, мне попадалась информация о массовых митингах и забастовках владельцев автомобилей на европейских номерах.
                Увы, всё лишь потому, что это затрагивает интересы бизнеса с миллиардными оборотами и его представители организуют данные протесты, а так же лоббируют интересы в самом руководстве страны. Люди тут не при чем и к протестам вообще весьма не склонны, рост тарифов ЖКХ в 11 (!!!) раз никакого протеста не вызывает, хотя бьёт объективно больнее и по большему количеству людей, нежели «евробляхи».


              1. 200sx_Pilot
                09.03.2019 00:08

                Да постоянно спрашивают.
                На выборах в местные рады, на выборах в Верховную Раду, на встречах с избирателями, ща вот на выборах Президента спросят у людей, чего люди хотят…
                И люди отвечают на вопрос…


  1. saloid
    08.03.2019 10:20

    Что бы получить точность около 50% при распознавании украинских номеров, достаточно взять систему распознавания номеров с ЕС.


  1. masai
    08.03.2019 18:29

    А зачем вам понадобился k-means? Использовали вместо non-max suppression для разделения результатов?


    1. apelsyn Автор
      09.03.2019 00:56
      +1

      Может быть я недостаточно описал проблему, сейчас поясню.

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

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

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

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

      Над этим пришлось покреативить и создать свою разновидность k-means а остальная часть алгоритма классическая.


      1. masai
        09.03.2019 03:59

        А, понятно. Т.е. вы аппроксимировали контур маски сегментации параллелограммом, как я понимаю? В общем, логично. Автомобили в упор не фотографируют, чтобы там появлялась перспектива. Это же делает approxPolyDP из OpenCV, или он плохо работает на номерах?


        1. apelsyn Автор
          09.03.2019 12:49
          +1

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


          1. masai
            09.03.2019 14:59

            Интересное решение. Спасибо за подробный ответ! Я просто в голове прикинул, как бы я решал, но, очевидно, что в таких задачах много подводных камней и пока не поэкспериментируешь с реальными изображениями, не поймёшь, какое решение лучше.


            1. apelsyn Автор
              10.03.2019 13:56

              Да и там опечатка не 3% а 3 градуса (в градусах мне привычнее).


  1. masai
    09.03.2019 03:58

    Вообще, вам идеально подошла бы сетка вроде MTCNN (не обязательно именно эта архитектура, просто детектор совмещённый с регрессией лэндмарков). Она бы и номера детектила, и 4 угла выдавала бы для каждого. Mask RCNN, по-моему, — оверкилл в этой задаче.


    1. apelsyn Автор
      09.03.2019 13:16
      +1

      Чтоб вы правильно понимали мой выбор еще полгода назад, я вообще не понимал как решаются задачи компьютерного зрения. Следуя мисии нашей компании, которая звучит так «мы строим проверенный интернет», у нас возникла потребность в системе разпознавания номерных знаков с валедацией по базе МВД, которая должна справляться с нагрузкой 200 000/день. Мне задача показалась очень интересной, адекватного опенсурс-решения с требуемой точностью я не нашел, вот мы с Дмитрием написали то что есть. Все работает на одном сервере с 2 видеоплатами (для моей компании это не дорого). 2 месяца назад там вместо нынешней OCR вообще использовался tesseract :), так что вы видите решение уже после первой оптимизации.

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


      1. masai
        09.03.2019 15:00

        Не сочтите за критику. Мне просто любопытно. :) Вы на самом деле молодцы, что создали рабочее решение.


  1. Fox8
    10.03.2019 13:23

    Интересно мнение авторов по поводу OpenALPR в сравнении


    1. apelsyn Автор
      10.03.2019 13:38

      Трудно сделать корректное сравнение, так как они проганяют бенчмарки на американских номерах, opensource-версию скорее всего не развивают в угоду комерческой версии, которая работает хорошо.
      Мы пробовали пользоваться opensource-версией, она не собралась ни на одном из наших linux-ов, в docker-е запустилась, но качество распознавания было очень низким, поэтому и пришлось писать свое.
      Единстввенный плюс — она работает быстее.


    1. apelsyn Автор
      10.03.2019 14:01

      Я подумал, что замеры провести можно. Например, взять фото из папки test, русских или украинских номеров (на них не проводилась тренировка модели) и прогнать через наш модуль, через api openaslr и получить результат. Ну потом сравнить. Думаю, для интереса мы как-то найдем для этого время. :)