Comments (15)
Добрый день, в Detector.py в конфигурациях есть строка "IMAGE_MAX_DIM": 1024. Это качество фото, которое принимает нейронка, можете по тестировать уменьшив ее.
from nomeroff-net.
Добрый день, в Detector.py в конфигурациях есть строка "IMAGE_MAX_DIM": 1024. Это качество фото, которое принимает нейронка, можете по тестировать уменьшив ее.
Спасибо, протестирую
from nomeroff-net.
Мы используем те же модели, которые выложены открытый доступ на сайте. Возможно у вас неправильно происходит классификация номера и определяется что он не "ru", вы не перетренировывали Options под свои нужды?
from nomeroff-net.
Мы используем те же модели, которые выложены открытый доступ на сайте. Возможно у вас неправильно происходит классификация номера и определяется что он не "ru", вы не перетренировывали Options под свои нужды?
Какой dataset лучше взять, чтобы натренировать по текущему коду?
import os
import sys
import warnings
warnings.filterwarnings('ignore')
# change this property
NOMEROFF_NET_DIR = os.path.abspath('../../')
DATASET_NAME = "options"
VERSION = "2019_11_25"
LOG_DIR = os.path.join(NOMEROFF_NET_DIR, "logs/")
PATH_TO_DATASET = os.path.join(NOMEROFF_NET_DIR, "datasets/", DATASET_NAME)
RESULT_PATH = os.path.join(NOMEROFF_NET_DIR, "models/", 'numberplate_{}_{}.h5'.format(DATASET_NAME, VERSION))
FROZEN_MODEL_PATH = os.path.join(NOMEROFF_NET_DIR, "models/", 'numberplate_{}_{}.pb'.format(DATASET_NAME, VERSION))
sys.path.append(NOMEROFF_NET_DIR)
from NomeroffNet import OptionsDetector
from NomeroffNet.Base import convert_keras_to_freeze_pb
class MyNumberClassificator(OptionsDetector):
def __init__(self):
OptionsDetector.__init__(self)
# outputs 1
self.CLASS_STATE = ["BACKGROUND", "FILLED", "NOT_FILLED"]
# outputs 2
self.CLASS_REGION = ["ru"]
self.EPOCHS = 2
self.BATCH_SIZE = 10
self.HEIGHT = 64
self.WEIGHT = 295
# initialize region detector.
numberClassificator = MyNumberClassificator()
numberClassificator.prepare(PATH_TO_DATASET)
# train
model = numberClassificator.train(LOG_DIR, cnn="simple")
numberClassificator.test()
numberClassificator.save(RESULT_PATH)
from nomeroff-net.
запустил скрипт в options для картинок
for file in `ls *.png`; do
Orientation=`exiftool -Orientation -n ${file} | awk '{print $3}'`;
if [[ $Orientation -gt 1 ]]
then
echo "Fixing '${file}' - $Orientation "
exiftool -Orientation=1 -n ${file}
fi
done
from nomeroff-net.
Скачал датасет https://nomeroff.net.ua/datasets/autoriaNumberplateOptions3Dataset-2019-10-04.zip
поправил скриптом (#61 (comment)), ничего не выявилось.
Получаю ошибку
Ошибка IndexError: index 6 is out of bounds for axis 1 with size 2
Код options.py
import os
import sys
import warnings
warnings.filterwarnings('ignore')
# change this property
NOMEROFF_NET_DIR = os.path.abspath('../../')
DATASET_NAME = "options"
VERSION = "2019_11_25"
LOG_DIR = os.path.join(NOMEROFF_NET_DIR, "logs/")
PATH_TO_DATASET = os.path.join(NOMEROFF_NET_DIR, "datasets/", DATASET_NAME)
RESULT_PATH = os.path.join(NOMEROFF_NET_DIR, "models/", 'numberplate_{}_{}.h5'.format(DATASET_NAME, VERSION))
FROZEN_MODEL_PATH = os.path.join(NOMEROFF_NET_DIR, "models/", 'numberplate_{}_{}.pb'.format(DATASET_NAME, VERSION))
sys.path.append(NOMEROFF_NET_DIR)
from NomeroffNet import OptionsDetector
from NomeroffNet.Base import convert_keras_to_freeze_pb
class MyNumberClassificator(OptionsDetector):
def __init__(self):
OptionsDetector.__init__(self)
# outputs 1
self.CLASS_STATE = ["BACKGROUND", "FILLED", "NOT_FILLED"]
# outputs 2
self.CLASS_REGION = ["xx-unknown", "ru"]
self.EPOCHS = 2
self.BATCH_SIZE = 10
self.HEIGHT = 64
self.WEIGHT = 295
# initialize region detector.
numberClassificator = MyNumberClassificator()
numberClassificator.prepare(PATH_TO_DATASET)
# train
model = numberClassificator.train(LOG_DIR, cnn="simple")
numberClassificator.test()
numberClassificator.save(RESULT_PATH)
#model = numberClassificator.load(RESULT_PATH)
import keras
keras.backend.clear_session()
model = numberClassificator.load(RESULT_PATH)
convert_keras_to_freeze_pb(numberClassificator.MODEL, FROZEN_MODEL_PATH)
from nomeroff-net.
Вы не поняли как это работает. Датасет прийдется пофиксить.
- В вашем датасете не должно быть картинок не с "ru" номерами.
- Индекс "ru" номеров уже будет иметь индекс 1, так как вы все другое удалили, в нашем примере у него индекс другой. Это надо самостоятельно пофиксить в json-файлах.
from nomeroff-net.
Спасибо! Все погрохал, индексы поменял, натренировал!
from nomeroff-net.
Явно указывал в options.py self.CLASS_REGION = ["xx-unknown", "ru"]
Почему-то у меня на этой картинке определяется другой регион - "eu-ua-2015"
from nomeroff-net.
Ваша демка детектит ['ru']
from nomeroff-net.
Фиксить список надо не только в обучающей выборке но и в коде распознавания NomeroffNet/OptionsDetector.py
from nomeroff-net.
Фиксить список надо не только в обучающей выборке но и в коде распознавания NomeroffNet/OptionsDetector.py
Оставил нужные регионы, натренировал. Теперь вообще не определяет "eu-ua-2015", "xx-unknown", "ru". Возвращает пустой массив...
from nomeroff-net.
Модель "Options" возвращает не один а несколько масивов значений, которые классифицирет модель после детекции зон.
Возьмем этот пример examples/demo3.ipynb, вот в этой части:
regionIds, stateIds, countLines = optionsDetector.predict(zones)
Если на входе есть зоны, то на выходе будет столько же елементов в списках
regionIds, stateIds, countLines
Если зоны есть а списки пустые, значит вы что-то сделали неправильно, ищите ошибку.
from nomeroff-net.
Модель "Options" возвращает не один а несколько масивов значений, которые классифицирет модель после детекции зон.
Возьмем этот пример examples/demo3.ipynb, вот в этой части:regionIds, stateIds, countLines = optionsDetector.predict(zones)Если на входе есть зоны, то на выходе будет столько же елементов в списках
regionIds, stateIds, countLinesЕсли зоны есть а списки пустые, значит вы что-то сделали неправильно, ищите ошибку.
Получается плохо натренилась модель mask_rcnn_numberplate_0100.h5 ?
from nomeroff-net.
Все, нашел ошибку у себя, извиняюсь, все ок - отрабатывает и возвращает ['ru']
from nomeroff-net.
Related Issues (20)
- Вырезание номеров из фото HOT 5
- Dataset for Detection + OCR pipeline and comparison with Nomeroff-Net HOT 2
- ModuleNotFoundError: No module named 'modelhub_client' HOT 6
- Failed to run get-started-demo.py in docker container HOT 3
- обучать пользовательский набор данных HOT 7
- I have error about checkpoint HOT 5
- KeyError: 'pytorch-lightning_version' HOT 3
- How to train OCR model? HOT 3
- ImportError: cannot import name 'efficientnet_v2_s' from 'torchvision.models' HOT 1
- when change name of folder nomer_net code not work HOT 5
- Size of docker image HOT 1
- Multiline example doesn't return correct recognitions
- draw rectangle bbox on plate HOT 4
- Некорректное распознавание российских номер с регионом 799, 977 HOT 1
- Некорректное распознавание номеров в 3 строки
- Ошибка при установке пакета в req.txt HOT 1
- Columns and DataType Not Explicitly Set on line 157 of datasets_tools.py
- Error in nomeroff-net setup command: 'install_requires' HOT 1
- Label 'md' not in dict_keys && Label changed on default 'eu_ua_2015'
- Realtime Video performance / Benchmrk
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nomeroff-net.