распознавание рукописного текста. Connectionist Temporal Classification(ctc)
Скачать 12.17 Kb.
|
Распознавание рукописного текста (англ. Handwritten Text Recognition, HTR) - это автоматический способ расшифровки записей с помощью компьютера. Распространённая задача, которая во многих сферах облегчила бы работу человеку. (пример слайд 2)Рассматриваемая реализация задачи распознавания рукописного текста основана на библиотеке tensorFlow и обучена на датасете IAM. (слайд 3)Датасет IAM довольно обширный и специально создан для такого типа задач, конкретные цифры на слайде. На деле, у обучения на этом датасете есть некоторые проблемы, если изображение низкоконтрастное, линии слова тонкие или много места вокруг слова, то модель может плохо отработать.(слайд 4) Поэтому изображения нужно предварительно обработать. Обрабатываем средствами библиотеки OpenCv. (слайд 5) SimpleHTR модель непосредственно сама модель состоит из 5 свёрточных слоёв, 2 рекурентных , и Connectionist Temporal Classification(CTC) слоя для вывода. Мы также можем рассматривать NN более формально как функцию (см. Уравнение 1), которая отображает изображение (или матрицу) M размера W × H в последовательность символов (c1, c2,…) с длиной между 0 и L. Как видите, текст распознается на уровне символов, поэтому слова или тексты, не содержащиеся в обучающих данных, также могут быть распознаны (если отдельные символы правильно классифицированы). Операции свёрточные слои: входное изображение подается в слои CNN. Эти слои обучены извлекать из изображения соответствующие элементы. Каждый слой состоит из трех операций. Во-первых, операция свертки, которая применяет к входу ядро фильтра размером 5 × 5 в первых двух слоях и 3 × 3 в последних трех слоях. Затем применяется нелинейная функция RELU(это функция активации выпрямителя) . Наконец, слой объединения суммирует области изображения и выводит уменьшенную версию входных данных. рекурентные: последовательность функций содержит 256 функций на временной шаг, RNN распространяет соответствующую информацию через эту последовательность. Используется популярная реализация RNN с длительной краткосрочной памятью (LSTM), поскольку она способна распространять информацию на большие расстояния и обеспечивает более надежные обучающие характеристики, чем обычные RNN. Выходная последовательность RNN отображается в матрицу размером 32 × 80. Набор данных IAM состоит из 79 различных символов, кроме того, для операции CTC необходим один дополнительный символ (пустая метка CTC), поэтому имеется 80 записей для каждого из 32 временных шагов. Вывод RNN содержит вероятности для каждого символа в последовательности. Для прогнозирования конечного текста реализуются алгоритмы декодирования в выход RNN. Connectionist Temporal Classification: CTC отвечает за декодирование вероятностей в окончательный текст. во время обучения NN, CTC получает выходную матрицу RNN и основной текст истинности, и он вычисляет значение потерь. При выводе CTC предоставляется только матрица, и он декодирует ее в окончательный текст. Данные На входе: изображение размером 128 × 32 в оттенках серого. Обычно изображения из набора данных не имеют точно такого размера, поэтому мы изменяем его размер (без искажения) до тех пор, пока он не станет шириной 128 или высотой 32. Далее, мы нормализуем оттенки серого изображения, что упрощает задачу для NN. Увеличение данных можно легко получить, скопировав изображение в случайные позиции вместо выравнивания по левому краю или произвольно изменив размер изображения. (слайд 6)Выходные данные RNN: Можно видеть, что в большинстве случаев символы предсказываются точно в том положении, в котором они появляются на изображении (например, сравните положение «i» на изображении и на графике). Не выравнивается только последний символ «е». Но это нормально, поскольку операция CTC не требует сегментации и не заботится об абсолютных позициях. Из самого нижнего графика, показывающего оценки для символов «l», «i», «t», «e» и пустой метки CTC, текст можно легко декодировать: мы просто берем наиболее вероятный символ из каждого это формирует так называемый лучший путь, затем мы отбрасываем повторяющиеся символы и, наконец, все пробелы: «l --- ii - tt - l-… -e» → «l --- i - tt- -l-… -e »→« маленький ». Примеры слайд 7-8 + показать работу на рандомном слове Если нужно повысить точность распознавания, то можно: разнообразить данные искажениями Добавить больше слоев CNN Заменить LSTM на 2D-LSTM если распознанного слова нет в словаре, ищите наиболее похожее Слайд 9 Изначально я хотел приспособить эту модель для кириллицы, но найти большой датасет для этого задача не простая. Впрочем, я нашёл некоторые результаты на эту тему(показать результаты) |