Giter VIP home page Giter VIP logo

Comments (45)

dimabendera avatar dimabendera commented on August 29, 2024 1

В последнем релизе была натренирована модель которая работает и с квадратными номерами.
Но, мы читаем номер как 2 линии, так что номер в формате
241VBZ10
будет читаться как
24110VBZ
Детальнее можете посмотреть в обновленном примере:
https://github.com/ria-com/nomeroff-net/blob/master/examples/demo3.ipynb

Подробнее о изменениях:
https://github.com/ria-com/nomeroff-net/blob/master/History.md

Новые натренированные модели можете взять тут:
https://nomeroff.net.ua/models/

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024 1

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024 1

from nomeroff-net.

Tolegen95 avatar Tolegen95 commented on August 29, 2024

Хорошо спасибо вам за помощь @ApelSYN

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Сформировал новый датасет и натренировал модель для GPU, accuracy 94%, это еще не окончательный вариант, возможно еще +1% доберу, для CPU тоже натренирую позже т.к. это занимает много времени.

К фоткам есть следующие замечания -- много машин сфоткано в движении, это размазывает контуры, получается что картинка не четкая. Я постарался убрать сильно смазанные. Думаю что лучше искать фото с авто-сайтов, так как там машину фоткают в статичном состоянии и качество получается получше.

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Сегодня обновил обе модели и для CPU и для GPU, accuracy 95%

from nomeroff-net.

Tolegen95 avatar Tolegen95 commented on August 29, 2024

Отлично, Размечать что-нибудь нужно или подкорректировать?

from nomeroff-net.

Tolegen95 avatar Tolegen95 commented on August 29, 2024

квадратные более 14 000 (2 line KZ)

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

У меня и у Дмитрия небольшой отпуск, мы займемся доработкой nomeroff net для умения работы с квадратными номерами, пока что своими украинскими, когда до ваших дело дойдет прогнозировать не могу следите за апдейтами

from nomeroff-net.

dimabendera avatar dimabendera commented on August 29, 2024

Можете скинуть ссылку квадратные kz номера?

from nomeroff-net.

Tolegen95 avatar Tolegen95 commented on August 29, 2024

Можете скинуть ссылку квадратные kz номера?

квадратные более 14 000 (2 line KZ)

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

from nomeroff-net.

4LlW3R avatar 4LlW3R commented on August 29, 2024

Как можно использовать весы в режиме Real-Time?
Как показалось время detection-a "номерного знака" занимает много времени.

from nomeroff-net.

4LlW3R avatar 4LlW3R commented on August 29, 2024

Спасибо за ответ

from nomeroff-net.

Tolegen95 avatar Tolegen95 commented on August 29, 2024

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

Типы транспортных средств:
1. Легковые 2-осные
2. Автобусы до 16 мест и грузовые автомобили грузоподъемностью от 1 тонна (далее - т) до 2,5 т
2-осные
3. Автобусы до 32 мест и грузовые автомобили грузоподъемностью до 5,5 т 2-осные
4. Автобусы свыше 32 мест и грузовые автомобили грузоподъемностью автопоезда до 10 т 2-
осные
5. Грузовые автомобили грузоподъемностью от 10 т до 15 т 3-осные
6. Грузовые автомобили грузоподъемностью свыше 15 т многоосные, в том числе с прицепами,
седельные тягачи

from nomeroff-net.

GalymzhanAbdimanap avatar GalymzhanAbdimanap commented on August 29, 2024

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

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Пока что наш код умеет только находить квадратные номера, дальнейшее распознавание не реализовано. Веса от однострочных номеров не подойдут (точнее не подойдут если просто подать "квадратное" изображение на вход сети OCR).
Для украинских номеров мы разработали у себя систему, которая умеет это делать, но она использует немного другие технологии и подходы, пока что код выглядит не очень презентабельно, возможно, через некоторое время мы его "причешем" и тоже виложим.

from nomeroff-net.

GalymzhanAbdimanap avatar GalymzhanAbdimanap commented on August 29, 2024

Спасибо за ответ. Не могли бы вы поделиться ранней версией TextDetector.py где она могла загружать веса квадратных номеров и распознавать их. Я скачал веса для квадратных номеров и хотел бы посмотреть. Спасибо

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Спасибо за ответ. Не могли бы вы поделиться ранней версией TextDetector.py

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

from nomeroff-net.

GalymzhanAbdimanap avatar GalymzhanAbdimanap commented on August 29, 2024

Понятно, спасибо за ответ

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Я поясню на примере:
Берем номер:
UA simple numberplate

Определяем возможные зоны с текстом:

составляем хитмап (Heatmap) "потенциальных" участков с текстом
UA simple numberplate

формируем потенциальные границы зон с текстом
numberplate potential text lines

отбрасываем ненужные зоны
numberplate terget text lines

Теперь можно склеить все в одну строку
numberplate terget numberplate line

Инструмент которым мы пользуемся для детекции текстовых зон называется CRAFT. Это не очень оптимальный способ решения поставленой задачи, CRAFT достаточно "тяжелый" фреймворк, возможно в будущем нам прийдется использовать что-то "полегче". Когда у нас будет более-мение стабильное и универсальное решение, которое можно применить к любым типам квадратных номеров мы его выложим в открытый доступ.

from nomeroff-net.

GalymzhanAbdimanap avatar GalymzhanAbdimanap commented on August 29, 2024

очень благодарен, что уделили время.

from nomeroff-net.

usenaz avatar usenaz commented on August 29, 2024

Добрый день! Спасибо за проделанную работу, ApelSYN. Не могли бы дать *.pbtxt файлов для соответствующих обученных весов. Заранее спасибо!

from nomeroff-net.

dimabendera avatar dimabendera commented on August 29, 2024

Здраствуйте, мы не сохраняли модели в формате *.pbtxt.
Однако вы можете сделать это самостоятельно.
Для этого посмотрите на этот скрипт.

from nomeroff-net.

usenaz avatar usenaz commented on August 29, 2024

Здраствуйте, мы не сохраняли модели в формате *.pbtxt.
Однако вы можете сделать это самостоятельно.
Для этого посмотрите на этот скрипт.

Огромное спасибо, за ответы! Но конвертированный *.pbtxt файл не идет!
Выдает следующую ошибку:
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(4.1.1) Error: Assertion failed (const_layers.insert(std::make_pair(name, li)).second) in cv::dnn::dnn4_v20190621::`anonymous-namespace'::addConstNodes, file

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

Можете скинуть ссылку квадратные kz номера?

квадратные более 14 000 (2 line KZ)

Здравствуйте! не могли бы поделится снова датасетом2 line KZ?

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Под руками нет, я не помню как назывался файл, мы не занимались двухлинейными номерами для KZ спроси у владельца файла @Tolegen95 .

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

@ApelSYN да думал что коментированием его сообщения сработает) @Tolegen95 можете снова зашейрить файл?

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

@ApelSYN извините, а не подскажите в чем может быть проблема, RectDetector переворачивает рисунок квадратного номера не в ту сторону когда скармливаю ему свои номера, но при этом норм действует с номером из примера 3.

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

@cruigo93 высылайте примеры.

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

Screenshot from 2020-01-31 17-52-44
Screenshot from 2020-01-31 17-52-25

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Думаю ошибка где-то в RectDetect, пришлите оригиналы на почту [email protected], у вас фото "поджатые", можно попробовать что-то с этим сделать.

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

@ApelSYN написал вам на почту

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

@cruigo93 Хочу обратить ваше внимание что номера в несколько строк для казахских номеров не читаются, даже если ориентация определена правильно.
Я немного подпатчил NomeroffNet/RectDetector.py и поместил его в новую ветку. С ним будет все работать, но теперь правильность определения точек ложится на ваш код, в examples/demo3.ipynb добавляем следующий кусок

import operator

def fix_rect(arrPoints):
    newArrPoints = arrPoints[0].tolist()
    (minXidx, minPoint) = min(enumerate(newArrPoints), key=operator.itemgetter(1))
    res = newArrPoints[minXidx:4]+newArrPoints[0:minXidx]
    dx1 = res[1][0]-res[0][0]
    dx3 = res[3][0]-res[0][0]
    if (dx1>dx3):
        return np.array([[res[3]]+res[0:3]])
    else:
        return np.array([res])

и последнюю секцию из примера переписываем вот так

# Walking through the ./examples/images/ directory and checking each of the images for license plates.
rootDir = 'images2/'

max_img_w = 1600
for dirName, subdirList, fileList in os.walk(rootDir):
    for fname in fileList:
        img_path = os.path.join(dirName, fname)
        print(img_path)
        img = mpimg.imread(img_path)
        plt.axis("off")
        plt.imshow(img)
        plt.show()
         
        # corect size for better speed
        img_w = img.shape[1]
        img_h = img.shape[0]
        img_w_r = 1
        img_h_r = 1
        if img_w > max_img_w:
            resized_img = cv2.resize(img, (max_img_w, int(max_img_w/img_w*img_h)))
            img_w_r = img_w/max_img_w
            img_h_r = img_h/(max_img_w/img_w*img_h)
        else:
            resized_img = img

        NP = nnet.detect([resized_img]) 
        
        # Generate image mask.
        cv_img_masks = await filters.cv_img_mask_async(NP)
            
        # Detect points.
        arrPoints = await rectDetector.detectAsync(cv_img_masks, outboundHeightOffset=0, fixGeometry=True, fixRectangleAngle=10)
        arrPoints = fix_rect(arrPoints)
        print(arrPoints)
        arrPoints[..., 1:2] = arrPoints[..., 1:2]*img_h_r
        arrPoints[..., 0:1] = arrPoints[..., 0:1]*img_w_r
        
        # cut zones
        zones = await rectDetector.get_cv_zonesBGR_async(img, arrPoints, auto_width_height=False)
        toShowZones = await rectDetector.get_cv_zonesRGB_async(img, arrPoints, auto_width_height=False)
        for zone, points in zip(toShowZones, arrPoints):
            plt.axis("off")
            plt.imshow(zone)
            plt.show()
    
        # find standart
        regionIds, stateIds, countLines = optionsDetector.predict(zones)
        regionNames = optionsDetector.getRegionLabels(regionIds)
        print(regionNames)
        print(countLines)

        # find text with postprocessing by standart  
        textArr = textDetector.predict(zones, regionNames, countLines)
        textArr = await textPostprocessingAsync(textArr, regionNames)
        print(textArr)

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

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

@ApelSYN спасибо, recognition сейчас думаем обучать, у нас сцена ограничена, думаю будет лучше под нее переобучиться. Еще раз спасибо за либу!

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

не подскажите, пытаюсь дообучить модель на своих данных, загружаю latest модель, но выпадаю в такую ошибку, не могу понять что да как.
Unknown entry in loss dictionary: "ctc". Only expected the following keys: ['softmax_kz_box']

from nomeroff-net.

dimabendera avatar dimabendera commented on August 29, 2024

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

спасибо

from nomeroff-net.

cruigo93 avatar cruigo93 commented on August 29, 2024

теперь без ошибок, но после запуска
model = ocrTextDetector.train(mode=MODE, load = True, model_path = '../models/anpr_ocr_kz_4-gpu.h5')
просто выдает summary, и дальше обучение не происходит, попробовал убрать в train проверку load в конце, другая ошибка
No data provided for "softmax_kz". Need data for each key in: ['softmax_kz']

from nomeroff-net.

dimabendera avatar dimabendera commented on August 29, 2024

from nomeroff-net.

ReactionOx1d avatar ReactionOx1d commented on August 29, 2024

Здравствуйте. Хочу поблагодарить Вас за проделанную работу и задать один вопрос. При попытке тренировки(запуска вашего скрипта) OCR на номерах РФ столкнулся с такой проблемой:
image
Не знаете, в чем может быть проблема?

from nomeroff-net.

dimabendera avatar dimabendera commented on August 29, 2024

Похоже на то, что вы не выполнили функцию prepare, в которой инициализируются генераторы по вашему датасету или указали неверный путь к датасету

ocrTextDetector = ru()
ocrTextDetector.prepare(PATH_TO_DATASET)

Датасет должен выглядеть следующим образом:

PATH_TO_DATASET:
   train:
      ann:
         1.json
         2.json
         ...
      img:
         1.png
         2.png
         ...
   val:
      ann:
         1.json
         2.json
         ...
      img:
         1.png
         2.png
         ...
   test:
      ann:
         1.json
         2.json
         ...
      img:
         1.png
         2.png
         ...

from nomeroff-net.

Akram89 avatar Akram89 commented on August 29, 2024

Доброго часу доби @ApelSYN. перш за все дякую вам за виконану роботу.
Все круто працює, але я зіткнувся з одним нюансом.
У 2018 році поліція Казахстану додала в асортимент автомобільних номерних знаків чотири нові літери: I, J, Q і G. У 2020 році зображення цих чотирьох букв змінили. На даний момент виявив проблему з розпізнаванням літери "I", вона змінилася на - 𝐈. тобто. з'явилися рисочки зверху та знизу. та розпізнається як буква "T". На жаль, у мене немає датасету з новими зразками номерів. Чи можливо вирішити цю проблему без датасету?
Дякую!

from nomeroff-net.

ApelSYN avatar ApelSYN commented on August 29, 2024

Доброго часу доби @ApelSYN. перш за все дякую вам за виконану роботу. Все круто працює, але я зіткнувся з одним нюансом. У 2018 році поліція Казахстану додала в асортимент автомобільних номерних знаків чотири нові літери: I, J, Q і G. У 2020 році зображення цих чотирьох букв змінили. На даний момент виявив проблему з розпізнаванням літери "I", вона змінилася на - 𝐈. тобто. з'явилися рисочки зверху та знизу. та розпізнається як буква "T". На жаль, у мене немає датасету з новими зразками номерів. Чи можливо вирішити цю проблему без датасету? Дякую!

Це не проста задача, можна спробувати згенерувати синтетичний датасет з використагням вказаних літер і додати його до основного датасету та перетренувати модель. Звичайно, краще використовувати реальні фото номерів. Ми запишемо собі в таски покращення датасету, але коли на це зможемо виділити час поки сказати не можу. Щоб прискорити процес вишліть приклади фото з неправильним розпізнаванням на email: [email protected]

from nomeroff-net.

Akram89 avatar Akram89 commented on August 29, 2024

@ApelSYN Спасибі за відповідь. Надіслав приклади на пошту.

from nomeroff-net.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.