Closed kekonaut closed 4 years ago
Не совсем понятен ваш вопрос.
Хочу проверить работу обученных ocr на фотографиях, которые содержат только номер( обрезанные) Понимаю,что это возможно сделать, но можно ли как-то вытащить из демо только работу ocr на фотографиях, без детектирования объектов на ней. Т.к. насколько я понимаю, сначала в демо детектируются объекты : машины, номера. А потом только применяется ocr спасибо!
Возмите скрипт для тренировки и положите примеры с описанием в папку test. Вместо тренировки загрузите модель
model = ocrTextDetector.load("/var/www/nomeroff-net/NomeroffNet/mcm/models/TextDetector/ru/anpr_ocr_ru_3-cpu.h5")
Потом запустите
ocrTextDetector.test(verbose=True)
Там вам покажет что распознается неправильно.
Спасибо большое за ответ! Да, но тогда у меня выдается та же ошибка, что и при обучении через ipynb AttributeError: 'ru' object has no attribute 'tiger_test' Пыталась исправить это ошибку, скопировав tiger_test из функции prepare в функцию test. Но мне кажется, что этот костыль только провоцирует будущие ошибки( но эта ошибка исчезает) Вероятно, у меня что-то не так импортируется. Думала изначально, что это ошибка импортов, присущая формату ipynb изначально хочется именно проверять фотографию без описания: использовать уже обученную модель, чтобы облегчить разметку новых данных Вероятно, можно так сделать, просто не написав аннотации к этим файлам, тогда в графе True не будет выводиться ничего. Правильно ли понимаю это?
Попробуйте так
from NomeroffNet import TextDetector
import matplotlib.pyplot as plt
#Initialize text detector.
textDetector = TextDetector.get_static_module("ru")()
textDetector.load("latest")
zones=plt.imread('number_plate.jpg')
textArr = textDetector.predict([zones])
#textArr = textPostprocessing(textArr)
print(textArr)
Спасибо!
А возможно ли вырезать номера из картинок, где присутствует только номер на каком-либо фоне, а не машина целиком? Пыталась использовать такие фото для модели. Она не распознает на них номера
Сделайте так
import os
import numpy as np
import sys
import matplotlib.image as mpimg
import cv2
import glob
from datetime import datetime
#change this property
NOMEROFF_NET_DIR = os.path.abspath('../../')
#specify the path to Mask_RCNN if you placed it outside Nomeroff-net project
MASK_RCNN_DIR = os.path.join(NOMEROFF_NET_DIR, 'Mask_RCNN')
MASK_RCNN_LOG_DIR = os.path.join(NOMEROFF_NET_DIR, 'logs')
#sys.path.append(NOMEROFF_NET_DIR)
#Import license plate recognition tools.
from NomeroffNet import filters, RectDetector, TextDetector, OptionsDetector, Detector, textPostprocessing, textPostprocessingAsync
#from OptionsDetector import OptionsDetector
#Initialize npdetector with default configuration file.
nnet = Detector(MASK_RCNN_DIR, MASK_RCNN_LOG_DIR)
nnet.loadModel("latest")
rectDetector = RectDetector()
optionsDetector = OptionsDetector()
optionsDetector.load("latest")
#Initialize text detector.
textDetector = TextDetector.get_static_module("kz")()
textDetector.load("latest")
images = glob.glob('images500/*.jpg')
for img_path in images:
img = cv2.imread(img_path)
#img = [img]
#Detect numberplate
NP = nnet.detect([img])
#Generate image mask.
cv_img_masks = filters.cv_img_mask(NP)
photo_time = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S")
arrPoints = rectDetector.detect(cv_img_masks)
zones = rectDetector.get_cv_zonesBGR(img, arrPoints)
regionIds, stateIds, countLines = optionsDetector.predict(zones)
regionNames = optionsDetector.getRegionLabels(regionIds)
#print("CL: "+str(countLines))
textArr = textDetector.predict(zones, countLines)
textArr = textPostprocessing(textArr, regionNames)
#print(textArr)
print(img_path)
if len(zones)>0:
cv2.imwrite("number_plates/car"+str(photo_time)+'-'+str(textArr[0]+'.jpg'), zones[0])
else:
continue
Если не ошибаюсь номер должен составлять не более 10% изображения, проверьте сколько процентов от изображения составляет номер.
А возможно ли вырезать номера из картинок, где присутствует только номер на каком-либо фоне, а не машина целиком? Пыталась использовать такие фото для модели. Она не распознает на них номера
Мы натренировали Mask RCNN модель под нужды сайта AUTO.RIA.com, наши пользователи не фотографируют крупным планом номер, а, обычно, автомобиль на котором (в том числе) видно номер, поэтому наилучшый выход из ситуации, натренировать свою модель.
Вы можете внимательно изучить мои статьи на хабре и вот этот скрипт, с помощью которого можно создать свою модель, которая сможет искать по вашему датасету.
Для этого нужно разметить хотя бы 300 фото (а лучше около 1000) из вашего датасета, можете дотренировать нашу модель с этими данными или дотренировать coco-датасет (в конфиг в параметр "WEIGHTS" пишем значение "coco"), после этого подключите созданую вами модель и все будет находить.
Добрый день! Хотелось бы проверить ocr на отдельной картинке с номером, однако, она не распознает номер, если вставлять картинку в демо пример. Не очень понимаю, как ее использовать отдельно от модели детектирования машин Не могли бы вы , пожалуйста, описать алгоритм использования отдельно ocr