Введение 3
Постановка задачи 4
Глава 1. Нейронные сети 5
1.1. Математическая модель нейронной сети 5
1.2. Обучение нейронной сети 7
Глава 2. Свёрточные нейронные сети 11
2.1. Общая архитектура 11
2.1.1 Свёрточный слой 11
2.1.2 Слой субдискретизации 13
2.1.3 Полносвязный слой 13
2.2. Известные архитектуры СНН 14
2.2.1 LeNet 14
2.2.2 AlexNet 14
2.2.3 ResNet 14
Глава 3. Препроцессинг 16
3.1. Бинаризация 16
3.2. Устранение угла наклона 17
3.3. Сегментация 20
Глава 4. Реализация 23
4.1. Обучение нейронной сети 23
4.2. Используемые технологии 27
Заключение 29
Список литературы 30
Автоматизированное оптическое распознавание символов получило распостранение во многом благодаря его применению в области компьютерного зрения, приложений распознавания текста. Подход, принятый для решения проблемы распознавания, был основан на характеристиках символов, воспринимаемых людьми, то есть рассматривались геометрические особенности символа.
Позже был применен подход сопоставления шаблонов, который включал сравнение входных символов с заранее определенными шаблонами. Этот метод распознает символы либо как точное совпадение, либо как отсутствие совпадения вообще. Он также не учитывал такие эффекты, как наклоны и вариации стиля, которые не предполагали серьезных изменений формы.
Другой подход, а именно распознавание с использованием коэффициентов корреляции, был основан на перекрестной корреляции входных символов или их преобразований с шаблонами базы данных, чтобы учесть незначительные различия. Он ввел ложное или ошибочное распознавание среди символов, очень похожих по форме, таких как "I" и "J", "B" и "8", "O", "Q" и "0" и т. д.
Нейронные сети позволяют решить эту проблему, так как они могут воспринимать и распознавать символ на основе его топологических особенностей, таких как форма, симметрия, закрытые или открытые области и количество пикселей. Преимущество нейронных сетей заключается в том, что они могут быть обучены на "образцах", а затем использованы для распознавания символов, имеющих сходный (не точный) набор признаков.
Нейронные сети принимаю на вход вектор признаков. Это означает, что каждому объекту должно быть поставлено в соотношение набор числовых значений. Таким образом, для обучения сети используется векторная база данных, позволяющая ей эффективно распознавать каждый символ на основе его топологических свойств.
В данной выпускной квалификационной работе были достигнуты следующие результаты:
• Сделан обзор предметной области
• Выбрана и подготовлена база данных для обучения
• Реализована и обучена нейронная сеть для распознавания рукописных английских букв.
• Разработана системы распознавания рукописного английского текста в формате web-приложения. Ссылка на репозиторий с исходным кодом: https://github.com/anatolyefimov/text-recognition
Для свёрточной нейросети была выбрана архитектура, основанная на LeNet5, не смотря на свою простоту, она показывается хорошие результаты в решении задач более широкого класса, чем распознавание цифр.
[1] Vivek Shrivastava, Navdeep Sharma. Artificial Neural Network Based Optical Character Recognition // Signal & Image Processing: An International Journal, 2012. Vol.3, No 56. P. 73-80
[2] Derek Bradley, Gerhard Roth. Adaptive thresholding using the integral image // ACM J. Graph. Tools, 2007. P. 13-21
[3] O. Boudraa, W. K. Hidouci and D. Michelucci. An improved skew angle detection and correction technique for historical scanned documents using morphological skeleton and progressive probabilistic hough transform // 5th International Conference on Electrical Engineering - Boumerdes (ICEE-B), Boumerdes, 2017. P. 1-6
[4] Richard O. Duda, Peter E. Hart. Use of the Hough Transformation to Detect Lines and Curves in Pictures // Association for Computing Machinery, 1972. Vol.15, No 1.P, 11-15
[5] Krose B., Smagt P. An Introduction to Neural Networks. (8th ed.) // University of Amsterdam Press, University of Amsterdam, 1962.
[6] Cohen G., Afshar S., Tapson J., van Schaik A. // EMNIST: an extension of MNIST to handwritten letters, 2017
[7] Документация PyTorch. https://pytorch.org/docs/stable/index.html
[8] Документация Python. https://docs.python.org/3/
[9] Документация Flask. https://flask.palletsprojects.com/en/1.1.x/