SOTA text in the wild
От: Артём Австралия жж
Дата: 23.05.23 05:14
Оценка:
Приглашаю Nuzhny и причастных делиться ссылками subj и впечатлениями об реализации, и о confidence, скорости subj-ав реальной жизни.

Поиск по форуму мне не помог, но кое-что гуглится.
Re: SOTA text in the wild
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 23.05.23 09:34
Оценка: 4 (1)
Здравствуйте, Артём, Вы писали:

Аё>Поиск по форуму мне не помог, но кое-что гуглится.


Я лет 10 не в теме, но коллеги из открытого сейчас хвалят 2 библиотеки: PaddleOCR и mmocr. У каждой свои недостатки, но в целом намного впереди tesseract практически во всех задачах
Re[2]: SOTA text in the wild
От: Артём Австралия жж
Дата: 29.05.23 15:07
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Я лет 10 не в теме, но коллеги из открытого сейчас хвалят 2 библиотеки: PaddleOCR и mmocr. У каждой свои недостатки, но в целом намного впереди tesseract практически во всех задачах


Я попробовал PaddleOCR их демо- загружает картинку на бек Байду и занимает 3 секунды на распознавание. Самое точное, но бывает в 1 номере в коде ошибается.
PaddleJS демо- ну хз, не сказать, что прямо лучше чем Tesseract WASM демо. Та же самая картинка, paddle её не видит совсем, а tesseract видит, но гонит — много ошибок в коде.
У PaddleJS нахождение text box (когда он видит) сделано лучше: по 4 точкам линии. В то время, как тессеракт рисует большие параллелепипеды при наклоне текста.

У встроенной фото софтины Галакси Таб оказывается, тоже есть распознавание. Только нужно кликнуть на один из подсвеченных текст боксов, и оно копирует распознанный текст в буфер обмена. Оно схватило букву от другого слова и ошиблось в 1 номере в коде.


А что интересно есть такое, чтобы зацепить символы по отдельности и самому попытаться склеить их в слова? Как каждым отдельным символом "дотренировывать" CNN, если ошибка и он изменён пользователем?
Отредактировано 29.05.2023 15:17 Артём . Предыдущая версия .
Re[2]: SOTA text in the wild
От: no_ise  
Дата: 30.05.23 23:41
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Артём, Вы писали:


Аё>>Поиск по форуму мне не помог, но кое-что гуглится.


N>Я лет 10 не в теме, но коллеги из открытого сейчас хвалят 2 библиотеки: PaddleOCR и mmocr. У каждой свои недостатки, но в целом намного впереди tesseract практически во всех задачах



MMlab года 4 назад порадовал скоростью появления в коде всего нового из свежих публикаций. И оно и работает быстро. Смотрю они в том же темпе идут.

Tesseract вроде (данные пятилетней давности) считался набором залипух, как-то
вместе свинченных и дающих хороший результат. Но они возможно произвели гранд рефакторинг...
Re[3]: SOTA text in the wild
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 31.05.23 06:21
Оценка: 4 (1)
Здравствуйте, Артём, Вы писали:

Аё>А что интересно есть такое, чтобы зацепить символы по отдельности и самому попытаться склеить их в слова?


Сейчас уже не в курсе, но раньше такой подход был. Потом сверху на него накручивали отдельную нейросеть для исправления ошибок. Сейчас хз, возможно одна всем и занимается.
Распознавание зависит от контекста: можно перепутать цифру ноль и букву "О". Можно перепутать русские и английские символы с одинаковым или схожим написанием. Даже "3" и "9" часто бывают похожи и путаются. Нюансов миллион, ошибок в распознавании символов тоже. Пройти сверху рекуррентной сетью LSTM/Transformer — это классика (была).

Аё>Как каждым отдельным символом "дотренировывать" CNN, если ошибка и он изменён пользователем?


Нет особого смысла, потому что отдельные правки будут составлять слишком маленькую долю в общем большом датасете. Сейчас для этого чаще используют синтетические данные или вообще GANы: нашли, что плохо распознаётся, нагенерировали кучу похожего, переобучили. Сколько генерировать — зависит от размера датасета (и архитектуры сети тоже) и чаще всего просто понемногу докидываются данны — дообучают сеть — смотрят результат. Нет конкретных формул и алгоритмов.
Re[3]: SOTA text in the wild
От: Артём Австралия жж
Дата: 01.06.23 22:42
Оценка:
Здравствуйте, no_ise, Вы писали:

_>MMlab года 4 назад порадовал скоростью появления в коде всего нового из свежих публикаций. И оно и работает быстро. Смотрю они в том же темпе идут.


На его странице в гитхаб описание- работает поверх PyTorch. Я не могу запихать питорч с питоном и всеми его пакетами в html responsive аппликуху wasm. Мне нужна C++я часть ядра, без питоновского клея. Модели на 150мб тоже слишком тяжелы для Галакси Таб.

_>Tesseract вроде (данные пятилетней давности) считался набором залипух, как-то

_>вместе свинченных и дающих хороший результат. Но они возможно произвели гранд рефакторинг...
Они сидят на зарплате Гугла и прикрутили LTSM, а неравнодушные прикрутили его сборку в wasm. Которая демку реально можно открыть на девайсе и потрогать.
Re[4]: SOTA text in the wild
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.06.23 03:32
Оценка: 1 (1)
Здравствуйте, Артём, Вы писали:

Аё>На его странице в гитхаб описание- работает поверх PyTorch. Я не могу запихать питорч с питоном и всеми его пакетами в html responsive аппликуху wasm. Мне нужна C++я часть ядра, без питоновского клея. Модели на 150мб тоже слишком тяжелы для Галакси Таб.


PyTorch — это средство для обучения нейросетей, его не надо никуда засовывать. Для инференса пишут другой код под конкретное железо. Под мобилки, скорее всего, надо будет ещё сделать квантизацию в int8 для скорости.
Никогда не занимался ни мобилками, ни wasm'ом, поэтому подсказать не смогу. Для Nvidia обычно конвертируют в onnx, а потом в TensorRT. Для эппловских девайсов — в coreml. Для Андроида — tflite. Для Интела — OpenVINO. И т.д. Не надо среду разработки нейросетей куда-то нести.
Re[5]: SOTA text in the wild
От: Артём Австралия жж
Дата: 02.06.23 06:49
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Для инференса пишут другой код под конкретное железо. Под мобилки, скорее всего, надо будет ещё сделать квантизацию в int8 для скорости.

N>Никогда не занимался ни мобилками, ни wasm'ом, поэтому подсказать не смогу. Для Nvidia обычно конвертируют в onnx, а потом в TensorRT. Для эппловских девайсов — в coreml. Для Андроида — tflite. Для Интела — OpenVINO. И т.д. Не надо среду разработки нейросетей куда-то нести.

Мне tflite подойдёт- tf.js есть. А где почитать по шагам для чайника, что вот берём эту готовую модель из MMlab, запускаем такие команды в консольке, и получаем готовую к употреблению tflite модель?
Re[2]: SOTA text in the wild
От: Артём Австралия жж
Дата: 08.06.23 10:01
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>PaddleOCR и mmocr.


Короче, прикрутил как-то PaddleJS, и скормил ему (paddlejs-core) картинку, а он мне вернул громадный массив чиселок. Вполне достаточно шустро вернул. Но. Дальше этот массив попалает в некий DBPostprocess- и оттуда уже получаются прямоугольники детектирлванного текста.
Этот DBPostprocess- походу писал какой-то школьник, который сортирует пузырьком. Жесть какая тормозная функция. Буду завтра думать, что с ней м почему она такая тормозная.
Re[3]: SOTA text in the wild
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 08.06.23 10:54
Оценка:
Здравствуйте, Артём, Вы писали:

Аё>Этот DBPostprocess- походу писал какой-то школьник, который сортирует пузырьком. Жесть какая тормозная функция. Буду завтра думать, что с ней м почему она такая тормозная.


Бывает. Иногда и переписывая код с С++ на нормальный С++ получается в несколько раз ускорить
Re[4]: Webgl context is lost
От: Артём Австралия жж
Дата: 09.06.23 09:47
Оценка:
Здравствуйте, Nuzhny, Вы писали:

Я был неправ- затуп возникает не в функции на js, а на первом шаге — прогон модели. Подмерзает на пару секунд не только страница с прилагой, но и ютуб в другом окне хрома- на десктопе линуксе. Звук не прерывается.

В остальном более-менее текстбоксы рисуются.

Попробовал запустить на целевом девайсе- на андроиде. Оно тужится загрузить несколько секунд, и кидает исключение "Webgl context is lost".

Попробовал paddlejs-backend-wasm- на десктопе WASM выкинул OOM. Хотя RAM в ноуте предостаточно.

Моделька для paddle весит 3.5м примерно и демка с baidu с ней тоже в андрлиде-хроме сваливается.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.