ria-com / nomeroff-net

Nomeroff Net. Automatic numberplate recognition system.
GNU General Public License v3.0
459 stars 159 forks source link

Вырезание номеров из фото #244

Open SergeKZ opened 2 years ago

SergeKZ commented 2 years ago

Хочу дообучить номера подскажите какой скрипт отвечает за выдерание номеров из картинок? На хабре нашел инструкцию но она устарела =(

ApelSYN commented 2 years ago

Вот тут пример: https://github.com/ria-com/nomeroff-net/blob/master/examples/ju/dataset_tools/auto_number_grab.ipynb

Там предполагается что есть некий csv-файл, в котором указаны имена файлов без расширения и что текст на номере, приблизительно так:

photoId,npText
250031471orig,NEBV043

Но если этой информации нет, можно универсальной моделью попытаться задетектить, тогда этот файл не указываем, вот пример формирования датасета для Молдовы:

auto_number_grab(root_dir, res_dir, image_loader="turbo",
                 replace_template={'moderation': {'isModerated': 1, 'moderatedBy': 'RIA.com'}, 'state_id': 2},
                 #csv_dataset_path=csv_dataset_path, # or None if you don`t have moderated data
                 prisets={
                     "eu": {
                         "for_regions": ["eu"],
                         "model_path": "latest"
                     },
                 },
                 default_label = "eu",
                 quality_profile=[5, 2, 0])

там грамматическая ошибка prisets (правильно presets), но пока что это не пофиксили, поэтому пишем "prisets"

SergeKZ commented 2 years ago

Спасибо буду пробовать, наверно пример с csv подойдет ибо фото вида 777AAA01.jpg придется просто листинг кинуть в csv

SergeKZ commented 2 years ago

Спасибо буду пробовать, наверно пример с csv подойдет ибо фото вида 777AAA01.jpg придется просто листинг кинуть в csv

SergeKZ commented 2 years ago

Вот тут пример: https://github.com/ria-com/nomeroff-net/blob/master/examples/ju/dataset_tools/auto_number_grab.ipynb

Там предполагается что есть некий csv-файл, в котором указаны имена файлов без расширения и что текст на номере, приблизительно так:

photoId,npText
250031471orig,NEBV043

Но если этой информации нет, можно универсальной моделью попытаться задетектить, тогда этот файл не указываем, вот пример формирования датасета для Молдовы:

auto_number_grab(root_dir, res_dir, image_loader="turbo",
                 replace_template={'moderation': {'isModerated': 1, 'moderatedBy': 'RIA.com'}, 'state_id': 2},
                 #csv_dataset_path=csv_dataset_path, # or None if you don`t have moderated data
                 prisets={
                     "eu": {
                         "for_regions": ["eu"],
                         "model_path": "latest"
                     },
                 },
                 default_label = "eu",
                 quality_profile=[5, 2, 0])

там грамматическая ошибка prisets (правильно presets), но пока что это не пофиксили, поэтому пишем "prisets"

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

SergeKZ commented 2 years ago

Еще столкнулся с такой ошибкой, думаю както надо указать юзать чисто СPU ?

` | Name | Type | Params

0 | resnet | Sequential | 2.8 M 1 | linear1 | Linear | 524 K 2 | gru1 | BlockRNN | 139 K 3 | gru2 | BlockRNN | 16.9 K 4 | linear2 | Linear | 1.3 K

3.5 M Trainable params 0 Non-trainable params 3.5 M Total params 13.862 Total estimated model params size (MB) Epoch 0: 0%| | 0/2 [00:00<?, ?it/s]terminate called after throwing an instance of 'c10::HIPError' what(): HIP error: hipErrorNoDevice HIP kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debugging consider passing HIP_LAUNCH_BLOCKING=1. Exception raised from deviceCount at /pytorch/aten/src/ATen/hip/impl/HIPGuardImplMasqueradingAsCUDA.h:102 (most recent call first): frame #0: c10::Error::Error(c10::SourceLocation, std::string) + 0x42 (0x7f1db5346212 in /usr/local/lib/python3.7/site-packages/torch/lib/libc10.so) frame #1: + 0x5618da (0x7f1dcb0a98da in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_hip.so) frame #2: torch::autograd::Engine::start_device_threads() + 0x21a (0x7f1e016353aa in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_cpu.so) frame #3: + 0x1134f (0x7f1e1d9be34f in /lib/x86_64-linux-gnu/libpthread.so.0) frame #4: torch::autograd::Engine::initialize_device_threads_pool() + 0xcd (0x7f1e0163419d in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_cpu.so) frame #5: torch::autograd::Engine::execute_with_graph_task(std::shared_ptr const&, std::shared_ptr, torch::autograd::InputBuffer&&) + 0x28 (0x7f1e0163b058 in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_cpu.so) frame #6: torch::autograd::python::PythonEngine::execute_with_graph_task(std::shared_ptr const&, std::shared_ptr, torch::autograd::InputBuffer&&) + 0x3c (0x7f1e1904ca3c in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_python.so) frame #7: torch::autograd::Engine::execute(std::vector<torch::autograd::Edge, std::allocator > const&, std::vector<at::Tensor, std::allocator > const&, bool, bool, bool, std::vector<torch::autograd::Edge, std::allocator > const&) + 0x900 (0x7f1e01639280 in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_cpu.so) frame #8: torch::autograd::python::PythonEngine::execute(std::vector<torch::autograd::Edge, std::allocator > const&, std::vector<at::Tensor, std::allocator > const&, bool, bool, bool, std::vector<torch::autograd::Edge, std::allocator > const&) + 0x56 (0x7f1e1904c996 in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_python.so) frame #9: THPEngine_run_backward(_object, _object, _object*) + 0x9d4 (0x7f1e1904d4a4 in /usr/local/lib/python3.7/site-packages/torch/lib/libtorch_python.so)

Aborted (core dumped)`