Распознавание номеров. Практическое пособие. Часть 1

    Пример распознавания номерных знаков

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

    И в один прекрасный день МВД Украины открыло доступ к реестру транспортных средств. Теперь по номерному знаку стало возможным проверять некоторую информацию про автомобиль (марку, модель, год выпуска, цвет и т.д. )! Скучная рутина линейного программирования померкла перед новой свехзадачей — считывать номера по всей базе фото и валидировать эти данные с теми, что указывал пользователь. Сами знаете как это бывает «глаза загорелись» — вызов принят, все остальные задачи на время стали скучны и монотонны… Мы принялись за работу и получили неплохие результаты, чем, собственно и решили поделиться с сообществом.
    Для справки: на сайт AUTO.RIA.com, в день добавляется около 100 000 фото.
    Датасаентисты давно уже знают и умеют решать подобные задачи, поэтому мы с dimabendera написали эту статью именно для программистов. Если вы не боитесь словосочетания «сверточные сети» и умеете писать «Hello World» на питоне — милости просим под кат…

    Кто еще распознает


    Год назад я изучил этот рынок и оказалось, что работать с номерами стран exUSSR умеет не так уж много сервисов и ПО. Ниже представлен список компаний с которыми мы работали:

    • Automatic License Plate Recognition

      Есть opensource и коммерческая версия. Opensource-версия показала очень низкий процент распознавания, кроме того, она требовала специфические зависимости для своей сборки и работы (особенно нам не приглянулась). Коммерческая версия, вернее коммерческий сервис работает хорошо. Умеет работать с русскими и украинскими номерами. Цены умеренные — 49$/50K распознаваний в месяц. Онлайн демка OpenALPR
    • Recognitor

      Этим сервисом мы пользовались около года. Качество хорошее. Зону с номером находит очень хорошо. Сервис не умеет работать с украинскими и европейскими номерами. Стоит отметить хорошую работу с некачественными снимками (в снегу, фото небольшого разрешения, ...). Цена на сервис тоже приемлемая, но за малые объемы берутся неохотно.

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

    Какие инструменты нужны для распознавания номеров


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

    Computer vision task classification

    Я не буду сейчас писать много теории о том как работает сверточная сеть, этой информации достаточно в сети и докладов на youtube.

    Из современных архитектур сверточных серей для задач сегментации часто используют: U-Net или Mask R-CNN. Мы выбрали Mask R-CNN.
    Второй инструмент, который нам понадобится — это библиотека по распознаванию текстов, которая бы могла работать с разными языками и которую можно легко настраивать под специфику текстов, которые мы будем распознавать. Тут выбор не так уж велик, самой продвинутой является tesseract от Google.

    Так же есть ряд менее «глобальных» инструментов, с помощью которых нам нужно будет нормализовать область с номерным знаком (привести его в такой вид, при котором распознавание текста будет возможным). Обычно для таких преобразований используют opencv.

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

    image

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

    Nomeroff Net


    Из названия статьи понятно, что мы все реализовали и назвали проект Nomeroff Net. Сейчас часть кода этого проекта уже работает в production на сайте AUTO.RIA.com. Конечно, до коммерческих аналогов еще далеко, все работает неплохо только для украинских номеров. Кроме того, приемлемая скорость работы достигается только при поддержке GPU у модуля tensorflow! Без GPU тоже можно пробовать, но не на Raspberry Pi :).
    Все материалы для нашего проекта: размеченные датасеты и натренированные модели, мы выложили в открытый доступ с разрешения RIA.com под лицензией Creative Commons CC BY 4.0

    Что нам понадобится


    • Python3
    • opencv-python не ниже версии 3.4
    • свежие Mask RCNN, tesseract
    • через менеджер пакетов pip3 нужно будет установить несколько модулей на python3, они будут перечислены в отдельном файле requirements.txt

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

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

    Nomeroff Net «Hello world»


    Давайте уже что-то попробуем распознать. Клонируем с github-а репозиторий с кодом. Качаем в папку models, натренированные модели для поиска и классификации номеров, немного подправим под себя переменные с расположением папок.

    UPD: Этот код является устаревшим, он будет работать только в ветке 0.1.0, свежие примеры смотрите здесь:
    Все, можно распознавать:
    import os
    import sys
    import json
    import matplotlib.image as mpimg
    
    # change this property
    NOMEROFF_NET_DIR = "/var/www/nomeroff-net/"
    MASK_RCNN_DIR = "/var/www/Mask_RCNN/"
    
    MASK_RCNN_LOG_DIR = os.path.join(NOMEROFF_NET_DIR, "logs/")
    MASK_RCNN_MODEL_PATH = os.path.join(NOMEROFF_NET_DIR, "models/mask_rcnn_numberplate_0700.h5")
    REGION_MODEL_PATH = os.path.join(NOMEROFF_NET_DIR, "models/imagenet_vgg16_np_region_2019_1_18.h5")
    
    sys.path.append(NOMEROFF_NET_DIR)
    
    # Import license plate recognition tools.
    from NomeroffNet import  filters, RectDetector, TextDetector, RegionDetector, Detector, textPostprocessing
    
    # Initialize npdetector with default configuration file.
    nnet = Detector(MASK_RCNN_DIR, MASK_RCNN_LOG_DIR)
    # Load weights in keras format.
    nnet.loadModel(MASK_RCNN_MODEL_PATH)
    
    # Initialize rect detector with default configuration file.
    rectDetector = RectDetector()
    
    # Initialize text detector.
    textDetector = TextDetector()
    
    # Initialize numberplate region detector.
    regionDetector = RegionDetector()
    regionDetector.load(REGION_MODEL_PATH)
    
    img_path = './examples/images/example1.jpeg'
    img = mpimg.imread(img_path)
    NP = nnet.detect([img])
    
    # Generate image mask.
    cv_img_masks = filters.cv_img_mask(NP)
    
    for img_mask in cv_img_masks:
        # Detect points.
        points = rectDetector.detect(img_mask, fixRectangleAngle=1, outboundWidthOffset=3)
    
        # Split on zones
        zone = rectDetector.get_cv_zones(img, points)
    
        # find standart
        regionId = regionDetector.predict(zone)
        regionName = regionDetector.getLabels(regionId)
    
        # find text with postprocessing by numberplate region detector
        text = textDetector.detect(zone)
        text = textPostprocessing(text, regionName)
        print('Detected numberplate: "%s" in region [%s]'%(text,regionName))
        # Detected numberplate: "AC4921CB" in region [eu-ua-2015]
    

    Онлайн демка


    Набросали простенькую демку для тех кому не хочется все это ставить и запускать у себя :). Будьте снисходительны и терпеливы к скорости работы скрипта.

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

    Что дальше


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

    Известные проблемы


    • У проекта нет документации, только базовые примеры кода.
    • В качестве модуля распознавания выбран универсальная OCR tesseract и она может прочитать многое, но ошибок делает много. В случае распознавания украинских номеров, там написана специализированная система коррекции, которая пока что компенсирует часть ошибок, но есть предчувствие что тут можно сделать значительно лучше.
    • «Квадратные» номера (номерные знаки с пропорцией 1:2) встречаются достаточно редко и мы с ними только начали разбираться, так что с ними погрешность будет больше.
    • Иногда вместо номерного знака наша модель находит дорожные знаки с названием населенного пункта, приборную доску внутри салона и др. артефакты.
    • При плохом качестве номера или малом разрешении, не совсем точно определяется регион из 4 точек

    Анонс


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

    Несколько примеров в Jupyter Notebook:



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


    Share post

    Comments 55

      +6
      Ради интереса потестил на фотке, где номер расположен сильно под углом и глазами читается с усилием. Распознала вполне нормально. Молодцы!
      Давно искал что-нибудь подобное, вот и пригодится мне, наверное, ваша библиотечка 8)
        0
        Справедливости ради надо сказать, что основную часть по «выравниванию» текста для дальнейшего распознавания делает алгоритм перспективной трансформации из библиотеки openCV, но в тоже время достаточно нелинейной является задача определения «опорных» точек, которые подаются на вход этому алгоритму. Вот тут пришлось вспомнить многое из школьного курса геометрии :)
        0
        Было время, сам делал распознавание номерных знаков.
        Печаль моя не имела границ т.к. мои входные данные были в разы хуже чем для коммерческих аналогов. Так и не удалось добиться стабильных результатов.
        Не могли бы вы указать приблизительные требования для входной картинки (Размеры номерного знака, допустимые углы отклонения)
        PS: + за решенную задачу :)
          0
          Ограничения, конечно есть:
          • Разрешение фото должно быть не меньше 300x300
          • Максимальное разрешение ограничено производительностью вашего компа, если использовать GPU Nvidia, то при разрешении FullHD будет распознавать около 500ms/фото, если на обычном CPU, то это будет уже 5 сек на фото.
          • Большой плюс если размер найденного номерного знака на фото по вертикали имеет 64 и более точек
          • Границы номера будут находиться даже при сильном повороте или даже на перевернутой фотографии, а вот распознаваться они будут только если можно сказать что номер в большей читается слева направо чем сверху вниз или снизу вверх. Эту проблему тоже можно решить, если будет смысл на это тратить процессорное время. Другими словами углы наклона ограничены читаемостью номера.
          • Естественно, размытая или зашумленная фото будет распознаваться плохо.
            0
            С детекцией рамки проблем нет. Проблемы начинаются при распознавании текста.
            Вот пример номерного знака image
            На сколько вероятно правильное распознавание?

              0
              Точное распознавание такого знака требует:
              • После нормализации, зная структуру номера разбить на зоны, в которых 1 позиция 1 символ, вам следует искать предполагаемый центр каждого символа.
              • Далее вырезаем предполагаемый участок с символом и классифицируем его согласно возможных вариантов, которые там могут встречаться. Тут следует не сильно боятся зацепить часть рядом стоящего символа, хорошо натренированный классификатор это не остановит :)
              • Ну и в конце постобработка, по вероятности сочетания тех или иных символов в номерных знаках РФ. Вероятность комбинаций можно получить проанализировав базу с реестром номерных знаков. Украинские данные открыты с 2013 года — там уже более 9 млн записей, достаточно точно можно прогнозировать вероятность сочетания той или иной комбинации букв/кодов
          0
          Молодцы, что довели решение до конца!
          Можете дать совет, куда копать? Есть задача распознавать печатные цифры на произвольно (но без экстрима) изогнутом и повернутом листе бумаги. Шрифт один, букв нет, исходное соотношение сторон листа известно. Соответственно, вход может содержать довольно большие куски фона для листа, т.к. вырезается из исходного изображения лист вместе с фоном. Для простоты примем, что заломов нет. Вроде бы и простая задача, но сколько не мучил ssd сеть — точность находится на крайне низком уровне.
          Какой понадобится объем обучающей выборки для каждого из 10 классов? Какую архитектуру лучше выбрать?
            +1
            Идеальное решение это:
            1. Нормализовать изображение
            2. Отделить каждое слово
            3. Разбить слово по буквам(подойдёт RNN сеть)
            4. Непосредственно распознать(обычный классификатор)

            Так же рекомендую посмотреть на EAST.


            По поводу выборки, изначально хватит и минимальной — по 50-100 изображений каждого класса, что бы проверить работоспособность выбранного решения, но стоит помнить, что в датасете MNIST, например, 60000 изображений для обучения и 10000 изображений для тестирования. В наших задачах, мы использовали веса предварительно обученных нейронных сетей, а так же делали случайные преобразования над имеющимися входными данными для увлечения датасета.

              0
              Спасибо. Большую часть пунктов выполнял, но выборки, очевидно, не хватило.
            0
            Какой получился процент найденных и правильно распознанных номеров? С ianpr не сравнивали? У них есть поддержка украинских номеров и тестовая версия.
              –1
              Качество распознавание украинских номеров на уровне 80%, но поскольку к одному объявлению загружают несколько фото с номерами, то итоговое качество выше 90%.

              Номера РФ не пробовали распознавать, т.к. у нас на сайте они не встречаются. Думаю что без доработки процент будет низкий так как мы отключили распознавание кириллицы (в украинских номерах все сочетания букв подобраны так чтоб соответствовать варианту из латиницы). Может кому то будет интересно — допилит, так как особой проблемы с нахождением границ номера РФ нету.

              С ianpr не сравнивали, но вот OpenALPR работает хорошо (в том числе и с номерами РФ).
                0
                А находит он все 100% номеров? В OpenCV есть готовый натренированный каскад Хаара для поиска российских номеров, но он иногда ошибается — не находит номер или находит не номер.
                ps Кириллицы в российских номерах тоже давно нет.
                  0
                  Ну прям 100% не будет, конечно. Нейронка ищет что-то похожее на номера, мы тренировали на базе 1 125 фото, а рекомендуют 5 000, так что потенциально точность можно улучшить. Кроме того, в нашей выборке не было номеров РФ :). Размечать выборку это очень монотонная и неинтересная работа, поэтому мы ограничились минимумом, с которым у нас все заработало довольно неплохо для украинских номеров.
                  +1
                  (в украинских номерах все сочетания букв подобраны так чтоб соответствовать варианту из латиницы)

                  Как ни странно, но в России тоже =)
                    0
                    Но не всё еще сняли старые. У некоторых есть еще времен СССР.
                      +2
                      Это в пределах погрешности. Последний раз видел живьем на дороге номер СССР лет 8 назад.
                      +1
                      Это очень-очень спорное решение, на мой взгляд. В Болгарии та же самая ерунда. В Украине и Беларуси хотя бы есть буква I среди набора букв, так как она есть и в национальных алфавитах. А в Казахстане сразу же стали использовать для номерных знаков полноценный латинский алфавит.

                      chris.community/russian-car-licence-plates-time-to-change

                      Кстати, в Украине классный дизайн-код номерных знаков стандарта 2015 года!
                        0
                        Это очень-очень спорное решение, на мой взгляд.

                        в ГОСТ Р 50577-93 (и в новом Р 50577-2018) звучит это так:


                        3.7 На регистрационных знаках типов 1-22 могут применяться следующие буквы: А, В, Е, К, М, Н, О, Р, С, Т, X, У. На регистрационных знаках типа 9, 10 может применяться также буква D.

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

                          0
                          А почему бы не добавить S, F, Q, Z, W, N, V, J, G, F, D, U, R, I?
                            0

                            Потому что у них нет визуальных аналогов в национальном алфавите

                              0
                              Зачем?
                                +1
                                Потому что русскому человеку гораздо проще запомнить и продиктовать номер, представляющий собой сочетание русских букв. И важно это не только для передачи номеров по радиоканалу в работе ГИБДД и подобных служб (их-то еще можно научить фонетическому алфавиту и обязать его использовать), но и, например, при опросе свидетелей ДТП.
                              +1
                              Кстати, в Украине классный дизайн-код номерных знаков стандарта 2015 года!
                              Что именно классно?
                                0
                                Статья какая-то ни о чём, если честно. В чём именно плюс использования полной латиницы? С учётом возможного количества кодов регионов до 999, текущая концепция позволяет выдать более полутора миллиардов знаков. Да, использование полного алфавита позволило бы регионам ограничиться меньшим количеством кодов регионов, но латиница, имхо, более костыль. У нас всё же есть официальный язык, а это позволяет увязать его с международными стандартами.
                              +2
                              в украинских номерах все сочетания букв подобраны так чтоб соответствовать варианту из латиницы


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

                              На голландском номере распозналась полная чушь, к сожалению.


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

                                0
                                Границы определило правильно и класcифицировало номер правильно [eu], значит плохо отработал tesseract. Думаю для данного типа номеров нужно применять другой модуль для распознавания, либо писать собственную реализацию.
                                  0
                                  На российских номерах тоже белиберда распознается, хотя сам контур номера определяет очень близко даже под большими углами.
                                    0
                                    Мы работаем над заменой tresseract, но это не очень тривиальная задача, поэтому запасайтесь терпением и попкорном, мы приступили к разработке. Все что очень нужно это фотки с номерами РФ, как, собствненно, фото с номерами и др. стран. У кого есть — поделитесь.
                                0
                                Спасибо за статью! Шикарный материал для ознакомления с возможностями Mask R-CNN. Поправьте, пожалуйста, ссылку на файл requirements.txt, указанную в статье — сейчас там 404.

                                Вопрос: есть ли возможность в Вашем решении дообучать модели, «докидывая» новые фото, но не стартуя обучения с нуля?

                                P.S. Очень интересно почитать продолжение статьи о разметке и подготовке материала)
                                  0
                                  Спасибо за статью! Шикарный материал для ознакомления с возможностями Mask R-CNN. Поправьте, пожалуйста, ссылку на файл requirements.txt, указанную в статье — сейчас там 404.

                                  Спасибо что написали — пофиксим, когда я сформировал этот файл у себя на компе туда повписывало все модули, которые у меня установлены, а их очень много. Тогда я решил в docer-е поставить все по минимому чтоб все заработало, но закрутился и забыл. Сегодня сделаем, проапдейтим и выложим.
                                  Вопрос: есть ли возможность в Вашем решении дообучать модели, «докидывая» новые фото, но не стартуя обучения с нуля?

                                  Если речь идет о самом нахождении границ номера с помощью Mask R-CNN, там только дообучать. Мы и сами дообучали модель из coco dataset.
                                  Если речь идет о классификаторе, с помощью которого получать тип номера, то там дообучать можно, но по времени и качеству это не сильно будет отличаться от «обучения с нуля»
                                    0
                                    Если речь идет о классификаторе, с помощью которого получать тип номера, то там дообучать можно, но по времени и качеству это не сильно будет отличаться от «обучения с нуля»

                                    Да, вопрос был по классификатору. Спасибо за ответ!
                                  +2
                                  Наверное от тессеракта лучше отказаться и делать ocr на нейронной сети (пример)image
                                  Обучена на синтетическом датасете.
                                    0
                                    Да, конечно, просто мы до этого этапа еще не дошли, т.к. для наших задач получили приемлемую точность.
                                    0
                                    Добрый день!
                                    Я прочитал вы верно определяете 80 % номеров. Какая вероятность нахождения таблички номера? Есть ли лже срабатывания (т.е. найти номер там где его нет)?
                                      0
                                      После того как найден регион происходит его классификация нейронной сетью. Точность классификатора 96%.
                                      Другими словами Mask R-CNN находит номера и др артефакты, потом классификатор c точностью 96% отбраковывает не номера и поэтому вероятность что в профильтрованых результатах остались артефакты 4%. (В примере выше если regionId == 0 зона с регионом уже отбракована, ее можно распознать для интереса, а можно и отбросить)
                                      Сам классификатор легко и относительно недолго тренируется. Об этом расказывать долговато, поэтому оставил для будущих статей.
                                      Конечно все расчитывалось по нашей обучающей выборке, где нету номеров РФ, так что для того чтоб наверняка померять точность для вашего случая, нужно разметить примеры номеров РФ и добавить их общую обучающую выборку и дотренировать модель, потом в классификатор добавить еще один выход (назовем его 'ru') и повторно натренировать классификатор, тогда точность можно померять на заданной тестовой выборке.
                                      0
                                      Моя параноидальная привычка замазывать номера на всех фотках своего авто приобретатет новый смысл! :)
                                        +2
                                        По статистике просмотров, объявления с замазанными номерами смотрят на 43% меньше а звонят по них еще меньше. Для покупателя вы попадаете в одну категорию с мошенниками, которые обычно замазывают номера. Так что не рекомендую так делать. Это вызывает недоверие на начальном этапе и вы просто можете не получить покупателя, которому вы изначально подозрительны.
                                          0
                                          Я понимаю, что вы правы (спасибо за пояснение / обмен опытом), но мне не нравится, что по номеру любой Вася может получить личные данные владельца авто. Это неправильно, эта информация не должна быть публичной и легкодоступной, уж точно не автоматически доступной онлайн.
                                            +1
                                            что-то вы поздно спохватились про "по номеру". (вкратце — вам поищут недвижимость, юрлиц и физлиц-предпринимателей и многое другое, к чему вы знаете номер)
                                            Вот, теперь можно и по фото авто.
                                        0
                                        демостраничка — не работает :(
                                        Аплоад картинки не проходит
                                          0
                                          Попробуйте еще раз, на демо-сайте не такое уж крутое железо.
                                          0
                                          Есть продукт которий ошыбается минимально. Поддержка многих стран и втом числе росии.
                                            0
                                            В примере Demo0 и других возникает такая ошибка:
                                            error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\imgproc\src\shapedescr.cpp:237: error: (-215:Assertion failed) count >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::arcLength'
                                            Куда копать? В Puthon пока не очень силен…
                                              0
                                              Ставте 3.4, там ошибки не будет. В понедельник пофиксим для 4.0.0.
                                                +1
                                                Это была проблема на нашей стороне. В OpenCV 4.x функция findContours возвращает 2 объекта, в отличии от соответствующей функции в OpenCV 3.x.
                                                Баг был пофикшен. Теперь будем следить что бы NomeroffNet поддерживал и 4 версию.
                                                +1
                                                За датасеты отдельное спасибо.
                                                  0
                                                  Немного потестировал онлайн вашу программу. Сразу скажу у меня есть база только российских номеров. Цель тестирования: определить качество выделения номерной пластины.
                                                  Довольно часто происходит определение не только номерной пластины, но и номера:
                                                  image
                                                  Как на мой взгляд, самая большая проблема в вашем решении — это лже срабатывания. Знаю обидеть художника может каждый, моя цель не в этом. Ниже примеры, вначале исходное сходное после результат обработки.
                                                  Дорожная разметка, как номерная пластина:
                                                  image

                                                  image
                                                  Дорожный знак, как номерная пластина:
                                                  image

                                                  image

                                                  image

                                                  image
                                                  Малая часть номерной пластины выделена:
                                                  image

                                                  image

                                                  P.S. Я так же занимаюсь определением номеров. У меня есть база более 7 000 рос номеров. Давайте меняться. Интересуют рос, укр, еврономера.
                                                    0
                                                    Немного потестировал онлайн вашу программу. Сразу скажу у меня есть база только российских номеров. Цель тестирования: определить качество выделения номерной пластины.
                                                    Довольно часто происходит определение не только номерной пластины, но и номера:

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

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

                                                    Мы выложили датасеты в открытый доступ, так что Вам взамен ничего присылать ненужно. Если хотите приблизить хорошое распознавание номеров РФ нашим алгоритмом пришлите свою базу.
                                                    0
                                                    Добрый день! Когда выйдет 2 часть? Спасибо!
                                                      0
                                                      Мы сейчас добавляем поддержку номеров РФ с качеством распознавания 96%, уже все работает. Причешем, закомитим и опишем все во 2 части в ближайшие несколько дней.
                                                        0
                                                        Спасибо Олег!

                                                    Only users with full accounts can post comments. Log in, please.