Подготовка данных датасета CROHME 2019 для обучения нейронной сети
- Авторы: Исмагулов М.Е.1
-
Учреждения:
- Югорский государственный университет
- Выпуск: Том 20, № 3 (2024)
- Страницы: 51-56
- Раздел: МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
- Статья опубликована: 08.11.2024
- URL: https://vestnikugrasu.org/byusu/article/view/639971
- DOI: https://doi.org/10.18822/byusu20240351-56
- ID: 639971
Цитировать
Полный текст
Аннотация
Предмет исследования: в данной статье рассматривается процесс подготовки данных для обучения нейросетевых моделей, решающих задачу распознавания сложных рукописных математических выражений и их преобразования в системы компьютерной вёрстки, такие как LaTeX или MathML. В качестве исследуемого объекта используется датасет CROHME 2019, содержащий изображения рукописных математических выражений и их текстовые аннотации в формате LaTeX.
Цель исследования: разработка и описание процесса подготовки данных, который обеспечит корректное обучение модели и минимизирует ошибки в числовых метках и преобразованиях. В рамках исследования подробно рассматриваются следующие этапы: загрузка и предобработка изображений, парсинг LaTeX-аннотаций, связывание изображений с соответствующими аннотациями, нормализация значений пикселей, создание и проверка словаря токенайзера, а также подготовка самого токенайзера.
Методы включают анализ и обработку данных с использованием специализированных инструментов для работы с изображениями и текстовыми аннотациями.
Основным результатом работы является формирование датасета, готового к использованию в процессе обучения нейросетевой модели. Подготовленный датасет обеспечивает точное соответствие между изображениями и аннотациями, а также корректное преобразование математических выражений в LaTeX-код.
Ключевые слова
Полный текст
ВВЕДЕНИЕ
Датасет CROHME – результат многолетних наработок для одноименного конкурса. Название представляет собой аббревиатуру Competition on Recognition of Handwritten Mathematical Expressions – «соревнование по распознаванию рукописных математических выражений». Датасет содержит 22 024 тренировочных изображения и 5 255 тестовых, столько же в датасете представлено аннотаций в формате InkML. InkML – это формат файла, основанный на XML, содержит информацию о LaTeX-аннотациях, трассеры движения пера для онлайн-распознавания математических выражений. Также в датасете присутствуют файлы формата SymLG в таком же количестве, представляющие собой файлы, описывающие каждый знак в формуле, его положение и отношение между знаками.
В качестве основы были взяты данные датасета CROHME за 2019 год, поскольку эти данные стандартизированы по размеру, а именно 1010 на 1010 пикселей. Данные по остальным годам необходимо дополнительно обрабатывать, обрезать по содержимому или приводить все к одному размеру. Данные за 2019 год представлены в количестве 10 979 тренировочных и 1 199 тестовых. Условно подготовку датасета CROHME можно разделить на следующие этапы:
- Загрузка и препроцессинг изображений.
- Парсинг аннотаций из файлов InkML и объединение загруженных данных в пары (изображение, аннотация).
- Объединение данных в массивы NumPy и масштабирование диапазона пикселей из [0; 255] до [0; 1].
- Создание словаря токенайзера, а также настройка самого токенайзера и проверка корректности работы токенайзера методом обратной токенизации.
- Сравнение оригинальных аннотированных формул и обратно токенизированных для проверки полноты словаря и оценка полноты датасета по словарю.
Подробно каждый из пунктов рассмотрен в тексте статьи.
РЕЗУЛЬТАТЫ И ОБСУЖДЕНИЕ
Целью данной работы является разработка и реализация процесса подготовки данных для обучения нейросетевой модели, способной распознавать сложные рукописные математические выражения и преобразовывать их в формат LaTeX. Основные задачи включают предобработку изображений, корректное связывание изображений с аннотациями, нормализацию данных, создание и верификацию словаря токенайзера, а также подготовку токенайзера для дальнейшего использования в процессе обучения модели.
Загрузка и препроцессинг изображений
Препроцессинг (предобработка) изображений – это этап обработки данных, направленный на подготовку изображений к дальнейшему анализу и использованию в алгоритмах машинного обучения. Целью препроцессинга является улучшение качества изображений и приведение их к форме, которая наиболее подходит для последующего анализа и распознавания [1]. Может включать в себя следующие этапы:
- Нормализация яркости и контрастности и бинаризация.
- Удаление шумов и артефактов на изображениях.
- Утолщение контуров изображения.
- Изменение размера изображения.
- Ротация и выравнивание.
- Аугментация данных.
В случае обработки изображений датасета CROHME 2019 была задействована OpenCV [9] – библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом. В качестве средств предобработки были задействованы следующие функции:
- Размытие по Гауссу – является распространенным методом обработки изображений, который используется для уменьшения шума и деталей в изображении. Оно осуществляется путем применения гауссовского фильтра, который является сверткой изображения, основанной на функции Гаусса [5, 6]:
где x, y – координаты пикселей изображения; σ – стандартное отклонение.
Процесс гауссового размытия заключается в том, что каждому пикселю изображения присваивается взвешенное среднее значение его собственных значений и значений соседних пикселей. Веса задаются гауссовой функцией, которая придает больший вес пикселям, расположенным ближе к рассматриваемому пикселю, и меньший вес тем, что дальше. Это приводит к сглаживанию изображения и уменьшению шума, сохраняя при этом основные структуры и формы [2]. В библиотеке OpenCV гауссово размытие вызывается с помощью следующей команды: cv2.GaussianBlur.
- Также для обработки изображения была задействована функция адаптивной бинаризации [3] – cv2.adaptiveThreshold. Эта функция позволяет преобразовать изображение в черно-белое, используя локальные области для вычисления пороговых значений, что делает ее полезной для изображений с неравномерным освещением или тенями. В качестве адаптивного метода было использовано cv2.ADAPTIVE_ THRESH_GAUSSIAN_C: Взвешенное среднее значение соседних пикселей с использованием гауссова окна. Тип бинаризации cv2.THRESH_BINARY: если значение пикселя больше порогового, присваивается maxValue, иначе 0.
- Последним этапом будет изменение размера изображения с 1010 х 1010 пикселей до 256 х 256 пикселей, если изображения не уменьшить, то на этапе создания массива NumPy возникает ошибка «MemoryError», поскольку массив, состоящий из 10 тысяч изображений 1010 на 1010 пикселей, будет иметь высокие требования к объему оперативной памяти вычислительного устройства из-за чрезмерного объема данных.
Парсинг аннотаций LaTeX из файлов InkML
InkML – называемое пространство имен стандарта XML-файлов имеет расширение файла InkML, содержит в себе информацию об аннотациях двух форматов компьютерной верстки, а именно LaTeX и MathML, а также координаты трассировки пера по планшету или другому захватывающему устройству.
Файл содержит в себе следующие составляющие:
- Открывающий тег c ссылкой на xmlns (XML namespaces) <ink></ink>.
- Тег <traceFormat></traceFormat> содержит в себе описание 2 каналов X и Y, type="decimal" говорит нам о том, что координаты записаны в десятичных числах.
- Первый тег аннотации с типом, равным truth (истина), содержит в себе LaTeX-аннотацию.
- Тег <annotation type="UI">2012 _IVC_CROHME_F01_E000</annotation> содержит в себе информацию об уникальном идентификаторе отдельного InkML с указанием года создания, типа информации, конкурса и порядковых номеров в каталоге.
- Аннотация с типом copyright описывает правообладателя, в данном случае это университет Нанта во Франции.
- Следующая аннотация описывает автора данного файла.
- Тег <annotationXML> </annotationXML> описывает истинное значение InkML-файла в формате компьютерной верстки MathML.
- Тег <trace></trace> описывает координаты трассера электронного пера, например графического планшета, через пробел записывается координата X и Y, а через запятую – отдельные точки, с помощью id-номера создается ссылка внутри файла на знак, описываемый трассировкой в теге traceGroup, внутри которого находится другой тег traceView с атрибутом traceDataRef=”0”. С помощью этой конструкции мы объединяем описание конкретного знака компьютерной верстки с трассировкой, в нашей задаче трассировка напрямую не используется, поскольку на вход нейронной сети подается изображение, а не координаты точек, однако с помощью утилиты CROHMELib трассеры могут быть преобразованы в растровые изображения.
- Тег <traceGroup></traceGroup> содержит в себе информацию об отдельных знаках, которые составляют целую формулу, внутри тега есть информация в формате LaTeX и MathML с атрибутом truth, а также ссылку на трассер.
В нашей задаче для создания пар [изображение; аннотация] из InkML-файла достаточно парсить LaTeX-аннотации с атрибутом truth; затем, чтобы объединить их, создадим функцию на скриптовом языке программирования Python, в скрипте в качестве ключа будет использовано имя файла изображения и InkML, поскольку имена совпадают, далее выведем первые 5 пар, пример пары показан на рисунке 1.
Рисунок 1. Пример готовой пары [изображение; аннотация]
На данном рисунке мы можем наблюдать сверху формулу, полученную с помощью LaTeX, и изображение, оси координат демонстрируют размер изображения в пикселях, в данном случае 256 на 256 пикселей, видна также работа функции гауссова размытия.
Объединение данных в массив NumPy и масштабирование диапазона пикселей
NumPy – это библиотека Python для работы с большими и многомерными массивами, большинство методов и функций библиотеки написано на Fortran и Си, что позволяет с большой ресурсной эффективностью и скоростью обрабатывать большие данные.
Объединение данных таким образом является классическим для машинного обучения. Напоминаем, что в датасете присутствует около 11 тысяч тренировочных и почти 1200 тестовых изображений, столько же InkML-аннотаций, что по умолчанию подразумевает использование NumPy-массивов. Иначе создать такой массив методами языка Python будет очень ресурсозатратно и медленно.
В свою очередь масштабирование диапазона пикселей – это процесс обработки данных изображения со стандартного диапазона [0; 255], где 0 – это черный цвет, а 255 – белый, до [0; 1] соответственно. Данный шаг способствует стабилизации работы алгоритмов машинного обучения и относится к методам оптимизации, подобный шаг положительно сказывается на скорости и стабильности процесса обучения, нормализация данных подобным образом положительно сказывается на проблеме «исчезающих» и «взрывающихся» градиентов, уменьшает разброс данных и гармонизирует их, что хорошо для алгоритма градиентного спуска.
Можно выделить 3 метода масштабирования диапазона float16, float32 и float64, где float говорит нам о том, что это числа с плавающей точкой, 16, 32, 64 – это разрядность в битах.
В нашей работе задействован метод float32. Этот выбор был сделан руководствуясь принципом «золотой середины».
Поскольку float16 хоть и очень быстро работает, в современных вычислениях он применяется редко из-за потерь большого количества информации, а float64 в разы увеличивает требования по ресурсам памяти компьютера.
Создание словаря токенайзера и настройка токенайзера
Процесс создания словаря токенайзера и его токенизация – это важнейшая часть настройки датасета для обучения модели, поскольку задача связана с преобразованием двумерного изображения с математической формулой в одномерную LaTeX-последовательность, именно для последней и необходимо создание токенайзера. Создание токенайзера условно можно поделить на 2 этапа: первый этап представляет собой создание массива со всеми элементами синтаксиса LaTeX-кода. В него входят:
- Цифры от 0 до 9.
- Латинский алфавит в нижнем регистре.
- Латинский алфавит в верхнем регистре.
- Греческий алфавит в нижнем регистре.
- Уникальные буквы греческого алфавита в верхнем регистре (поскольку часть из букв присутствует в латинском алфавите, то, например, альфа и бета в верхнем регистре эквивалентны А и B в латинском).
- Уникальные знаки синтаксиса LaTeX, например: знаки доллара, прямой слеш, обратный слеш, квадратные и фигурные скобки, операторы сравнения и логические операторы.
- Операторы, представляющие собой целое слово синтаксиса LaTeX.
Второй этап представляет собой создание словаря, состоящего из двух компонент [ключ (в качестве ключа выступают элементы массива, созданного в предыдущем шаге); числовое значение]. Итоговый вид словаря будет таким:
В качестве алгоритма токенизации был выбран алгоритм из библиотеки Tensorflow Keras и настроен таким образом, чтобы работать с готовым словарем, поскольку по умолчанию этот токенайзер работает только с текстом. Для настройки токенайзера на словарь LaTeX-выражения используется функция “re.findall” из библиотеки Regex (сокр. от Regular Expressions), которая работает с регулярными выражениями, описываемыми в словаре LaTeX-синтаксиса. Функция проверяет аннотации из файла InkML со значениями в словаре и разбивает формулу на отдельные составляющие и каждому из них присваивает номер. Например, формула:
$y = Ax + A^2$
токенизируется в:
['$', 'y', '=', 'A', 'x', '+', 'A', '^', '2', '$'].
Затем кодируется в числовые метки:
[40, 101, 5, 103, 100, 29, 103, 21, 69, 40].
Последние два этапа настройки токенайзера – это One-Hot Encoding и приведение последовательностей к одинаковой длине. Первое используется для выравнивания категорий, чтобы избежать случаев создания так называемых «ложных приоритетов», когда модель часто встречает объекты определенного класса. One-Hot Encoding выравнивает процесс обучения. Приведение последовательностей к одинаковой длине необходимо для повышения эффективности обучения, поскольку, например, RNN-нейросети лучше работают с последовательностями одинаковой (предсказуемой) длины [4]. В нашей работе это достигается путем выбора максимальной длины исходя из самой длинной формулы плюс два знака. Далее, если длина остальных формул не достигает максимальной длины, остальная часть вектора заполняется нулями.
К примеру, у нас есть три вектор-строки разной длины:
В данном случае максимальная размерность вектор-строки будет 6 + 2, если обратить внимание на вторую вектор-строку, приведя к одинаковой длине, получим:
Теперь размерность каждой вектор-строки равна 8.
Для проверки корректности работы токенайзера необходимо произвести обратную токенизацию – это метод, при котором закодированные последовательности чисел в каждой вектор-строке с помощью словаря преобразуются обратно в формулы, полученные от обратной токенизации. Данные можно использовать для оценки полноты словаря и датасета.
Проверка полноты словаря и датасета
Для проверки полноты словаря был создан скрипт, который построчно проверяет оригинальные аннотированные формулы и формулы, которые были получены методом обратной токенизации. Они должны совпадать. Если словарь неполный, то в обратно токенизированной формуле будет отсутствовать необходимый оператор, в таком случае оригинал формулы и обратно токенизированная формула записываются в текстовый файл для сравнения. Затем, проанализировав, можно дополнить словарь отсутствующим оператором.
Также необходимо произвести проверку тех меток, что будут поданы на вход нейронной сети. Если какая-либо метка есть в словаре, но отсутствует в аннотациях датасета, она игнорируется. Так, проверив полноту датасета CROHME 2019, было выяснено, что из 283 меток, которые есть в словаре, 154 из них отсутствуют в датасете, и только 129 присутствуют. Большая часть LaTeX-операторов в датасете не представлена.
ЗАКЛЮЧЕНИЕ И ВЫВОДЫ
По результатам проверки полноты датасета было выявлено, что из 283 значений словаря LaTeX в датасете представлено 129, 154 было утеряно. Это позволяет сделать вывод о том, что обучение нейронной сети по распознаванию рукописных математических выражений только на данных за 2019 год нецелесообразно, поскольку обучение на неполных данных может привести к ситуации, когда сеть будет некорректно распознавать отдельные математические выражения.
Рекомендуется дополнить данные за 2019 год датасетами CROHME за другие годы, доработать скрипт препроцессинга изображений, поскольку данные предыдущих годов имеют существенные различия в размерах изображений, например в данных за 2013 год все изображения имеют разный размер и разрешение.
Также следует отойти от концепции заранее разделенных данных на тестовые и тренировочные, смешать их и с помощью скрипта случайным образом разделить в соотношении 80 % тренировочные данные и 20 % тестовые и рассмотреть возможность аугментации данных.
В таком случае объем данных датасета составит 27 279 экземпляров изображений и столько же аннотаций в формате InkML.
Об авторах
Милан Ерикович Исмагулов
Югорский государственный университет
Автор, ответственный за переписку.
Email: m_ismagulov@ugrasu.ru
аспирант 2 года обучения
Россия, Ханты-МансийскСписок литературы
- Гонсалес, Р. Ц. Цифровая обработка изображений / Р. Ц. Гонсалес, Р. Е. Вудс. – 3-е издание. – Москва : Техносфера, 2012. – 1072 с. – Текст : непосредственный.
- Рашка, С. Python и машинное обучение / С. Рашка, В. Миржалили. – 3-е издание. – Бирмингем : Packt Publishing, 2019. – 770 с. – Текст : непосредственный.
- Сзелиски, Р. Компьютерное зрение: алгоритмы и приложения / Р. Сзелиски. – Москва : Вильямс, 2011. – 1104 с. – Текст : непосредственный.
- Гудфеллоу, И. Глубокое обучение : перевод с английского / И. Гудфеллоу, Й. Бенжио, А. Курвилль. – Москва : ДМК Пресс, 2018. – 732 с.
- Бишоп, К. М. Распознавание образов и машинное обучение : перевод с английского / К. М. Бишоп. – Москва : Вильямс, 2007. – 736 с. – Текст : непосредственный.
- Сонка, М. Обработка изображений, анализ и машинное зрение : перевод с английского / М. Сонка, В. Главач, Р. Бойл. – Москва : Вильямс, 2004. – 770 с. – Текст : непосредственный.
- Черемисин, Д. Г. Использование нейронных сетей в задачах распознавания математических выражений / Д. Г. Черемисин, В. Р. Мкртчян. – Текст : непосредственный // Международный научный журнал «Символ науки». – 2022. – № 12 (2). – С. 34–36.
- Карахтанов, А. А. Использование нейронных сетей для распознавания математических выражений / А. А. Карахтанов. – Текст : непосредственный // Математическое и компьютерное моделирование в экономике, страховании и управлении рисками. – № 5. –2020. – С. 86–89.
- Шолле, Ф. Глубокое обучение с использованием Python / Ф. Шолле. – 2-е издание. – Шелтер-Айленд : Manning Publications, 2021. – 544 с. – Текст : непосредственный.
- Комплексная платформа для машинного обучения. – Текст : элкутронный // TensorFlow. – URL: https://www.tensorflow.org/ (дата обращения: 11.06.2024).
- OpenCV modules // OpenCV. – URL: https://docs.opencv.org/4.10.0/ (date of application: 11.06.2024).
