В статье рассмотрена возможность применения машинного обучения при классификации блоков страниц, в рамках курсового проекта по дисциплине «Machine Learning», научный руководитель – д.ф.-м.н., профессор Воронова Л.И..
На данный момент задача сегментации документа является весьма актуальной. В первую очередь это необходимо для распознавания текста на изображениях. Сначала необходимо провести сегментацию документа, после чего применять алгоритмы распознавания[1] текста только в блоках с текстом.
Сегментация документа — это процесс определения и выделения блоков в документе. Существует достаточно много методов для реализации сегментации[2]. При реализации сегментации в данном случае в качестве инструмента машинного обучения использовалась нейронная сеть написанная на языке программирования Python[3], а также использованы библиотеки numpy[4], sys, matplotlib.pyplot[5]. Задача состоит в том, чтобы классифицировать все блоки макета страницы документа, обнаруженные в процессе сегментации.
В качестве данных для анализа используется набор данных Page Blocks Classification Data Set[6]. Содержимое файла представлено на рисунке 1.
Рисунок 1 - Структура файла "Data"
Файл содержит 5473 примера, которые взяты из 54 различных документов. Выделяется пять классов: текст(1), горизонтальная линия(2), изображение(3), вертикальная линия(4) и график(5). Признаки: Высота блока, длина блока, площадь блока, эксцентриситет блока, процент черных пикселей внутри блока, процент черных пикселей после применения алгоритма сглаживания длины пробега, среднее число переходов между белым и черным, общее количество черных пикселей в исходном растровом изображении блока, общее количество черных пикселей в растровом изображении блока после RLSA, количество бело-черных переходов в исходном растровом изображении блока.
Изначальный набор данных был разделен на два: обучающий, состоящий из 4509 примеров и тестовый, состоящий из 964 примеров. Для чтения и обработки данных обучающего набора был реализован алгоритм, программный код которого изображен на рисунке 2. Для чтения и обработки тестового набора используется аналогичный программный код.
Рисунок 2 - программный код для чтения и обработки данных
В НС реализован метод прямого распространения для генерации предсказаний, метод обратного распространения ошибки[7] для изменения весов, а также используется сигмоидальная функция активации. Программный код метода обратного распространения ошибки изображение на рисунке 3.
Рисунок 3 - Программный код метода обратного распространения ошибки
Ошибка вычисляется как , где y – полученное предсказание НС, Y – ожидаемый результат, n – количество примеров.
Точность вычисляется как , где True – правильные предсказания.
В ходе выбора архитектуры разрабатываемой НС использовались следующие варианты:
Входной слой из 10 нейронов, 1 скрытый слой из 3 нейронов и выходной слой из 5 нейронов.
Входной слой из 10 нейронов, 1 скрытый слой из 7 нейронов и выходной слой из 5 нейронов.
Входной слой из 10 нейронов, 1 скрытый слой из 15 нейронов и выходной слой из 5 нейронов.
Входной слой из 10 нейронов, 2 скрытых слоя по 10 и 10 нейронов соответственно и выходной слой из 5 нейронов.
Входной слой из 10 нейронов, 2 скрытых слоя по 8 и 6 нейронов соответственно и выходной слой из 5 нейронов.
Входной слой из 10 нейронов, 2 скрытых слоя по 30 и 60 нейронов соответственно и выходной слой из 5 нейронов.
Модель нейронной сети показана на рисунке 4.
Рисунок 4 - архитектура нейронной сети[8]
Результаты работы нейронной сети с разными архитектурами и коэффициентами обучения показана в таблице 1.
Таблица 1 - Результаты работы нейронной сети
Архитектура 10-3-5, epoch = 250 |
|||
A |
0.08 |
0.008 |
0.003 |
% обуч |
89.4 |
91.3 |
91.2 |
% тест |
85.4 |
87.6 |
87.4 |
Ошибка |
0.033 |
0.026 |
0.032 |
Архитектура 10-7-5, epoch = 250 |
|||
A |
0.08 |
0.008 |
0.003 |
% обуч |
92.6 |
92.8 |
92.2 |
% тест |
90.1 |
90.2 |
89.7 |
Ошибка |
0.027 |
0.024 |
0.02 |
Архитектура 10-15-5, epoch = 150 |
|||
A |
0.08 |
0.008 |
0.003 |
% обуч |
92.1 |
94.5 |
94.0 |
% тест |
88.5 |
90.8 |
91.3 |
Ошибка |
0.025 |
0.018 |
0.021 |
Архитектура 10-10-10-5, epoch = 150 |
|||
A |
0.08 |
0.008 |
0.003 |
% обуч |
90.4 |
92.6 |
90.4 |
% тест |
86.7 |
90.1 |
86.7 |
Ошибка |
0.036 |
0.027 |
0.036 |
Архитектура 10-8-6-5, epoch = 150 |
|||
A |
0.08 |
0.008 |
0.003 |
% обуч |
90.4 |
90.4 |
90.4 |
% тест |
86.7 |
86.7 |
86.7 |
Ошибка |
0.035 |
0.037 |
0.036 |
Архитектура 10-30-60-5, epoch = 150 |
|||
A |
0.003 |
0.0003 |
0.00003 |
% обуч |
93.3 |
92.2 |
90.4 |
% тест |
91.4 |
89.0 |
86.7 |
Ошибка |
0.023 |
0.02 |
0.036 |
Для работы с датасетом Page Blocks Classification Data Set было протестировано 6 различных архитектур НС, в каждом случае тестирование проводилось с изменением коэффициента обучения. В результате сделаны следующие выводы:
Наилучший результат показала НС с архитектурой 10-15-5 и A = 0.008/0.003. В первом случае точность на обучающей выборке составила 94.5, а на тестовой выборке 90.8. Во втором случае точность на обучающей выборке составила 94.0, а на тестовой выборке 91.3.
Графики функций стоимости НС показавших лучший результат представлены на рисунке 5.
Рисунок 5 - Графики функций стоимости для архитектуры 10-15-5
Исходя из графиков функций стоимости изображенных на рисунке , можно сделать вывод о том, что увеличивать количество эпох необходимости нет.
При работе с датасетом Page Blocks Classification Data Set изменение коэффициента обучения не критично влияет на получившийся результат.
Большинство экспериментов имеют точность на обучающем и тестовом наборах более 90%. Это связанно с тем, что датасет «» содержит 89.8% примеров класса 1, а значит НС лучше всего справляется именно с этим классом.
Добавление дополнительного скрытого слоя в исходную НС не позволило добиться улучшения результатов.
Если возникнет необходимость использовать разработанную НС для другого датасета, где будет больше/меньше входных и выходных параметров, придется переделать архитектуру НС, которая будет подходить к конкретному датасету и решать конкретную задачу. Используя уже разработанную НС основная сложность будет заключаться в подборе правильной архитектуры.
Выводы
В статье проанализирована проблема классификации блоков страниц документа методами машинного обучения; обозначены основные понятия. Описан программный код для чтения и обработки набора данных и построены графики функций стоимости. Спроектирована и реализована нейронная сеть с различными архитектурами и параметрами для сравнения, сделан вывод о наилучшем варианте использования архитектуры и параметров нейронной сети для решения задачи классификации блоков страниц документа.
Список литературы и источников
F. Shafait, D. Keysers, and Th. Breul. Performance Comparison of Six Algorithms for Page Segmentation.
А.О. Саута, В.И. Поляков. Сегментация изображения для распознавания печатных документов.
Python// Python URL: https://www.python.org/
NumPy// NumPy URL: https://numpy.org/
MatPlotLib// MatPlotLib URL: https://matplotlib.org/
Page Blocks classification data set [Электронный ресурс]. – Режим доступа:https://archive.ics.uci.edu/ml/datasets/Page+Blocks+Classification (дата обращения: 10.01.2019)
Воронова Л.И., Воронов В.И. MachineLearning: регрессионные методы интеллектуального анализа данных: Учебное пособие / МТУСИ. – М., 2018, -83 с.
З.С. Шалтынова, Н.В. Тутова. Классификация спама с применением методов машинного обучения.