Пять идей для решения задач распознавания рукописного текста с использованием современных моделей и техник аугментации.
Key Takeaways
- Совместное обучение моделей сегментации и распознавания улучшает качество распознавания.
- Разметка по словам оптимальна для баланса качества и удобства разметчиков.
- CTC loss — эффективный метод для работы с переменной длиной текста и вычисления вероятностей.
- Аугментации существенно повышают устойчивость моделей к разным почеркам и стилям.
- Модели, подобные CLIP, могут расширить возможности распознавания рукописного текста.
What the video covers
- Распознавание текста делится на две части: сегментация слов/строк и транскрибирование текста.
- Проблема независимого обучения моделей сегментации и распознавания приводит к снижению качества при их объединении.
- Оптимальная разметка текста — по словам (4-7 символов), что улучшает качество и упрощает разметку.
- Использование CTC loss позволяет эффективно обучать модели распознавания текста с переменной длиной строк.
- Аугментации данных помогают моделям лучше справляться с разнообразием почерков и стилями написания.
- Пример аугментации — симуляция зачеркивания, основанная на особенностях рукописей Петра Первого.
- Пятая идея — применение модели CLIP для улучшения распознавания и анализа рукописного текста.
- Объединение моделей сегментации и распознавания в единую архитектуру повышает качество распознавания.
- Важность качественной разметки и её влияние на итоговую точность моделей.
- Использование сверточных сетей для извлечения признаков из изображений текста перед распознаванием.
Chapters
- 00:00Введение и обзор задач распознавания текста
- 01:30Первая идея: объединение моделей сегментации и распознавания
- 02:50Вторая идея: оптимальная разметка текста по словам
- 04:15Третья идея: использование CTC loss для распознавания текста
- 06:49Подробности работы CTC и динамическое программирование
- 09:17Пример аугментации: симуляция зачеркивания в рукописях
- 11:48Пятая идея: применение модели CLIP для улучшения распознавания
- 14:23Заключение и приглашение к участию в хакатоне
Full Transcript — Download SRT & Markdown
Speaker A
[музыка] Всем привет, с вами Мария, канал о каждом искусственном интеллекте. Если вы пропустили наш полезнейший ролик с лайфхаками для участников по ходовке, найдете вот здесь. А сейчас нашёл чудес лишь единицы, расскажет наикрутейшие идеи для решения задач распознавания текста.
Speaker A
Поехали. Я расскажу вам пять идей, как можно распознавать текст. Первая идея такая: оказывается, распознавание страницы — целая страница состоит из двух частей. Первая часть — это детектирование или сегментация каждого слова или строки. Вторая часть — это непосредственно распознавание того, что написано в этой строке или в слове, по-другому называется транскрибирование.
Speaker A
В качестве первой модели, то есть модели для сегментации, часто используют такие классические модели, как DeBERTa или Mask R-CNN. В качестве модели транскрибирования используются в основном архитектуры CTC, RNN плюс витязь и LSTM. Каждую из архитектур мы, естественно, поговорим подробнее.
Speaker A
Проблема такого подхода заключается в том, что часто первая и вторая часть, то есть первая нейросеть и вторая, обучаются совершенно независимо. Из-за этого могут возникать проблемы при их совмещении. Например, тоже случай из практики: первую модель удается натренировать на почти стопроцентное качество, условно говоря 98 процентов, вторую модель тоже на такое же хорошее качество — 96-98 процентов, но при совмещении качество сильно деградирует, и получается всего 50 процентов. Каждый второй символ распознается по факту неправильно.
Speaker A
Что с этим делать? Хороший вопрос. И в принципе специалист в области Data Science, в области глубокого обучения скажет, что возможным решением проблемы станет объединение двух этих моделей в одну и обучение общей архитектуры совместно. И в принципе он будет прав. Такие исследования мы ведем, и собственно делать из двух этих пайплайнов с двух моделей одну большую — это моя первая идея, потому что действительно получается добиться лучшего качества.
Speaker A
Вторая идея. Ну, все вы прекрасно знаете, что от того, как мы собираем разметку, будет зависеть качество наших моделей. И в случае рукописного текста и вообще любого текста разметка играет особо важную роль. Так можно размечать текст на странице по буквам, по словам или по целым предложениям, по целым строкам. И вопрос: что же лучше?
Speaker A
Разметка по буквам гораздо труднее для разметчиков, но это в принципе очевидно. Разметка по строкам и даже целым предложениям — самое простое для разметчиков. И вот вопрос: оправдали ли модели, которые обучены на разметке по буквам, будут ли они лучшими по качеству? Оказывается, нет.
Speaker A
Проблемы тут кроются в том, что, как я говорил в первой идее, если модели детекции и распознавания обучены независимо, а так всегда и происходит практически всегда, то количество боксов, которые нужно разметить на странице, напрямую влияет на количество ошибок на этой странице.
Speaker A
Поэтому есть некий оптимум буквенной длины, которую нужно размечать. И на самом деле современные эмпирические исследования показывают, что разметка, устроенная по словам, а это примерно кортежи по 4-7 символов в среднем, оптимальна и с точки зрения разметчиков, и с точки зрения качества полученной модели. Финальный, собственно, вторая идея в том, что оказывается, разметку лучше делать по словам.
Speaker A
Третья идея касается такого супер крутого подхода, и на самом деле очень крутого, помогающего распознавать целые слова штуки, как CTC loss. Но для того, чтобы рассказать о ней подробнее, нужно для начала разобраться с тем, как вообще работает распознавание, какие архитектуры используются.
Speaker A
Но самая популярная архитектура для распознавания текста, когда есть какое-то слово, оно никак не выделено по буквам, просто есть слово, и вопрос, как на этом обучить модель, чтобы затем эти же слова или предложения целиком распознавать. Есть такая архитектура, называется CTC. Название говорит само за себя, как это всегда бывает: CTC — Connectionist Temporal Classification.
Speaker A
Сначала, то есть у нас на вход приходит картинка, картинка с, например, словом Denis, например, размер 128 на 1024, такая вытянутая, 3 канала. И мы обычно с помощью сверточной сети, например AlexNet или подобной, начинаем извлекать из нее признаки, которые помогут затем нам восстановить последовательность букв, а потом собственно сформировать слово Denis, то есть текстовую строку Denis.
Speaker A
После свертки, после сверточного блока, выходит матрица, у которой одна размерность — размерность по оси X, можно так сказать, это условно говоря размер максимально возможного слова, если мы распознаем по словам, или максимально возможной строки, если мы распознаем по целым строкам.
Speaker A
Но вот, например, вот тут вы видите пример архитектуры, которая была использована нами при распознавании текстов Петра Первого. Тогда мы распознавали по целым строкам, не по словам, потому что часто у Петра Первого слова не отделены друг от друга пробелами, поэтому там не было другого выхода, как взять целые строки. И там была длина 255 — вот какая-то эмпирическая величина с запасом, что вот больше 255 и предложений для, не предложений, строк у Петра Первого не было на странице.
Speaker A
Размерность по оси Y — это просто размер, может быть 1 до 512, можно взять меньше, больше, это тоже некая эмпирическая величина, с этим можно играться. После этого мы понимаем уже, что у нас по оси X дана некая временная размерность, что ли, или буквенная размерность, вот как человек пишет. И нам осталось что сделать? Эти признаки преобразовать в вероятности, что на конкретных местах стоят конкретные буквы.
Speaker A
То есть матрица размера, например, 61 на 255. 61 тут — это величина словаря, в котором писал Петр Первый. И соответственно, если бы мы так и оставили, это было бы что-то непонятно, то есть 255 символов в строке, у нас разные длины по факту, какие-то могут быть 10 символов, какие-то — 110 символов, если это полная строка. Как тут быть?
Speaker A
CTC приходит на помощь. Он вводит дополнительный blank символ. В подробности я углубляться не буду, вот тут есть ссылка, вы можете почитать подробнее, который как раз позволяет в каком-то смысле работать с произвольной длиной строки. Это первое. А во-вторых, и самое, наверное, главное, что он позволяет вычислить вероятность не каждого конкретного символа, а вероятность того, что целая фраза является транскрибацией конкретного изображения.
Speaker A
Понимаете? Да, что по-нормальному это вычислить нереально, потому что, предположим, возьмём слово. Вот есть слово Denis, и на каждом месте может быть одна из 33 букв, правда ведь? То есть всего комбинаций различных слов 33 в степени 5, если 5 букв, но это какое-то огромное число, это все перебирать невозможно.
Speaker A
Так вот, CTC посредством динамического программирования позволяет вычислить вероятность, что слово Denis, строка Denis — это наиболее вероятная транскрибация слова на той вот картинке Denis, ну и даже целых предложений. И поэтому он крутой, он позволяет делать это за линейное время, по сути, не экспоненциальное, как я сейчас сказал, а за линейное. За это его и любят, за это его используют очень часто в моделях распознавания текста.
Speaker A
Итак, моя третья идея — использовать CTC loss в моделях распознавания.
Speaker A
Четвёртая идея касается аугментаций. Часто модели, которые обучены на каком-то ограниченном датасете, а так она всегда есть, потому что мы не можем собрать датасет почти никогда, который собрал бы все возможные варианты написания всеми возможными почерками, даже большинством возможных почерков. И поэтому модели, часто обученные только на этих сетах, они часто на новых почерках, на новых стилях ломаются, не могут распознавать.
Speaker A
Ну, приходят на помощь, как и всегда в моделях компьютерного зрения, NLP моделях, аугментации. Тут надо сказать, что их бесчисленное множество. Я расскажу о двух, которые придумала моя команда.
Speaker A
Первая касалась аугментации — это по сути симуляция зачеркивания. Откуда она возникла? Ну, по сути ребята смотрели на датасет рукописи Петра Первого и видели, что Пётр Первый был импульсивным человеком, и он часто любил что-то написать, зачеркнуть, переписать полностью, ну и так дальше. То есть условно 30 процентов его рукописи — это просто перечеркнутые непонятные фразы. Ну и тут родилась идея, что если...
Speaker A
каждом месте может быть одна из 33 букв правда ведь то есть всего комбинаций различных слов 3 в степени 5 если 5 букв но это какое-то огромное число это все перебирать невозможно так вот сети сил ос посредством динамического программирования позволяет вычислить
Speaker A
вероятность что слово denis строка denis это наиболее вероятная транскрибация слова в тот а вот картинки denis ну и даже целых предложений и поэтому он крутой он позволяет от делать за линейное время по сути не из экспоненциальная как я сейчас сказал а
Speaker A
за линейное за это его и любят за это его используют очень часто в моделях распознавания текста и так моя третья идея использовать сидиси лосс моделях распознавания четвёртая идея касается аугментаций часто модели которые обученые на каком-то ограничено над с
Speaker A
эти а так она всегда есть потому что мы не мы не можем собрать datasette почти никогда не можем который собрал бы все возможные варианты написания всеми возможными почерками даже большинством возможных почерков и поэтому модели часто обученные только на
Speaker A
этих сетах они часто на новых почерк на новых стилях ломаются есть не могут распознавать ну приходят на помощь как и всегда в моделях компьютерного зрения нлп моделях аугментации тут надо сказать что их бесчисленное множество я расскажу о двух которые придумали придумала моя
Speaker A
команда первая касалась 1 аугментация это по сути симуляция зачеркивания откуда она возникла ну по сути ребята смотрели на datasette рукописи петра 1 и видели что петр первый был импульсивным человеком и он часто любил что-то написать зачеркнуть переписать полностью
Speaker A
ну и так дальше то есть условно 30 процентов его рукописи это просто перечеркнутой непонятные фразы ну и тут родилась идея что если мы будем делать больше перечёркивая ней но так чтобы человек еще мог распознать что за этим перечёркивая находится и соответственно
Speaker A
учить модель распознавать что что за перечёркивая вот оказалось что его надо то сети петра 1 и на других даты сетах даже на тех на которых не было перечеркивать ней этот метод дал реальный boost в качестве на пару процентов например корректор рейд это
Speaker A
условно говоря метрика которая считает процент правильным распознанных символов но если быть более точным там конечно использовать состояние левенштейн а между спрогнозированной строкой и настоящий поделенное на длину настоящий строки но по сути можно считать как процент правильно распознанных символах
Speaker A
так вот этот процент растет на 5 и даже более пунктов то есть процентов об этом тоже вот можно почитать в нашей статье ссылку вы увидите сейчас на экране 2 аргумента ция алгоритм генерации новых текстов и почерков назвали мы вас
Speaker A
так микс сети силос помимо того что он умеет считать полную вероятность строки он умеет он супер вайс что называется разделять строку на символа неявно и вот этим разделением явным на символы можно воспользоваться без ручной разметки и то есть выделять символы которые
Speaker A
на тест на train выборки у нас есть а затем из этих символов конкатенировать и собирать новые слова под любую вашу фразу вот кстати вы тут можете попробовать как эта модель реально работает собственно вот такая штука такая модель stick mix это тоже можно
Speaker A
назвать методом аргументация она дала тоже большой прирост в качестве то же еще на пару процентных пунктов и так моя четвертая мысль и четвёртая идея обязательно на самом деле всегда использовать аргументация при обучении моделей это позволит вашим моделям не
Speaker A
деградировать на новых данных 5 идея интересная на мой взгляд самое интересное из этих потому что эти первые четыре идеи были некими стандартными идеями а 5 может показаться нестандартной касается на одной модели о которой я уже говорил которая называется клип или
Speaker A
нашей модели которые мы обучали совместно с ребятами сбер девайсов модель друг lip для русского языка в чем ее суть судья в том что она умеет для произвольной картинки для произвольного текста оценивать их семантическую близость то есть понимать насколько картинка близко
Speaker A
к тексту но и наоборот по сути то что мы делаем не явно когда нас просят оценить насколько текст соответствует картинке но и наоборот причем текст на естественном языке обязательно вот получается такие модели обучать и где они могут быть полезны но они могут
Speaker A
быть полезны презираешь от классификация как устроена обычная классификация у вас есть тысячи классов бы специфическую нейронную сеть обучаете классифицировать каждый из этих классов больше ничего она делать не умеет то есть она умеет вот по любой картинки говорить там есть
Speaker A
человек-слон собака и так далее вот из тысячи классов или нет модель же клип или ru клип она умеет говорить о картинке и делать выводы о картинке по-любому списку вот этих текстовых описаний то есть чтобы вы не сказали найдется для картинки ближайшие
Speaker A
текстовое описание которое и опишет скорее всего так вот эту модель можно на самом деле использовать для улучшения качества работы модели распознавания рукописного текста почему ну потому что вот ее можно встроить вот этот процесс то есть помимо сети сил ос и бинарный как раз энтропия
Speaker A
можно добавлять лосс назовем его клип скоро ли клип лосс который будет оценивать каждое каждую итерацию градиентного спуска оценивать насколько картинка которую вы подаете на вход близко к тому что вы сейчас расшифровали ну то есть и добавлять ее помимо сити
Speaker A
силоса бинарной красота пия будет просто + клип лосс который позволит а он позволит быстрее обучиться б он позволит как и аугментации выучить более робастные представления то есть более устойчивые что позволит вашим алгоритмом кушать новые стиля новые документы и не
Speaker A
ломаться на них как это делают обычные модели распознавания обученные на каком-то маленьком над с этим 5 идея использовать клип по крайней мере промывать прокачиваете свои навыки участвуете в соревнованиях академии искусственного интеллекта и приходите ко мне в команду если ты еще не зарегистрировался на наш
Speaker A
хакатон первая ссылка в описании за всеми нашими соревнований можно следить групп в контакт с am.ru плодом самые актуальные новости но я с вами прощаюсь подписывайтесь на канал оставляйте комментарии ставьте лайки пока [музыка]
Topics:распознавание текстарукописный текстмашинное обучениеглубокое обучениеCTC lossаугментациисегментация текстамодели CLIPразметка текстанейросети











![КРАСОТА ТРЕБУЕТ ЖЕРТВ [Топ Сикрет] — Transcript](https://i.ytimg.com/vi/U1g3PAjx9Mk/maxresdefault.jpg)