Особенности построения нейросетей в задачах распознавания рукописных символов
Описание основ построения нейронных сетей, включая сверточные нейросети. Рассматривается способ реализации механизма распознавания английских рукописных символов и цифр на основе полносвязной и свёрточной нейросетей с использованием фреймворка PyTorch.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 06.09.2021 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Особенности построения нейросетей в задачах распознавания рукописных символов
Моржов И.И. - асп. кафедры «Вычислительная техника»,
Сай С.В. - д-р техн. наук, проф., завкафедрой «Вычислительная техника», (ТОГУ)
В статье приводится краткое описание основ построения нейронных сетей, включая сверточные нейросети. Рассматривается способ реализации механизма распознавания английских рукописных символов и цифр на основе полносвязной и свёрточной нейросетей с использованием фреймворка PyTorch. Приводятся результаты экспериментальных исследований.
Ключевые слова: машинное обучение, нейронные сети, сверточные нейросети, распознавание образов, распознавание текста.
Neural Networks Construction Features in the Recognition of Handwritten Symbols
Morzhov I. I. - Pacific National University, Khabarovsk, Russian Federation Sai S. V. - Pacific National University, Khabarovsk, Russian Federation
Abstract: In the article the authors provide a brief description of basic building of neural networks, including convolutional neural networks. It is considered how to implement the recognition mechanism for English handwritten characters and numbers basing on fully connected and convolutional neural networks and using the PyTorch framework. The results of experimental studies are presented. нейросеть распознавание рукописный символ
Keywords: machine learning, neural networks, convolutional neural networks, pattern recognition, text recognition.
Введение
Одним из двигателей роста информационных технологий является сфера искусственного интеллекта. Искусственные нейронные сети (ИНС) - являются одним из основных направлений искусственного интеллекта, которые получили широкое распространение и продолжают развиваться [1]. Нейронные сети уже сейчас способны решать множество различных задач: распознавание различных образов (изображения, звук, видео), постановка диагнозов больным и различные экономические прогнозы, создание искусственных картин, музыки, сценариев к фильмам и множество других задач.
Для решения задач распознавания популярность обрела архитектура сверточных нейронных сетей ( CNN). Сверточные нейросети активно применяются для задач классификации и обнаружения объектов на изображении. Это связано с тем, что сверточные нейросети работают на подобии зрительной коры головного мозга, концентрируюсь на небольших участках изображения и выделяя в них важные особенности. Также количество нейронов в сверточных нейронных сетях значительно меньше, чем в полносвязных сетях, что ускоряет процесс их работы и обучения.
В связи с высокой популярностью нейросетей появилось множество программных библиотек. Одними из самых популярных являются Tensor- Flow, Keras, Torch, Caffe2. Такие библиотеки позволяют создавать свои нейросети, проектировать их архитектуру, обучать их и использовать для практических задач. Архитектура нейросетей позволяет выполнять большое количество вычислений параллельно и такие возможности уже реализованы в указанных программных библиотеках, в том числе и поддержка высокопроизводительных аппаратных устройств.
В настоящей работе рассматриваются особенности реализации метода распознавания английских рукописных символов и цифр c помощью полносвязной и сверточной нейросети с использованием фреймворка PyTorch.
Основы построения нейросетей
Идея работы нейронных сетей строится на основе работы естественных (биологических) нейронных сетей человеческого мозга. Искусственная нейронная сеть представляет собой распределённую параллельную систему, состоящую из множества простых элементов - нейронов, способных накапливать полученные знания и использовать их. Нейроны соединяются между собой связями, называемыми синапсами. Для хранения полученных знаний в нейронной сети используются синаптические веса.
Входящие сигналы х., поступающие от одних нейронов к другим, перемножаются на весовые коэффициенты wt, суммируются и передаются к функции активации р, которая является ограничителем амплитуды входного сигнала [2]:
Модель искусственного нейрона в соответствии с формулой (1) представлена на рис. 1.
Рис. 1. Модель искусственного нейрона
Также модель нейросети может включать внешний биас Ък, который увеличивает или уменьшает сигнал функции активации. Функции активации бывают разные, их выбирают в зависимости от задач, которые чаще всего выполняет нейросеть. Самые распространенные варианты: линейная, ступенчатая, гиперболический тангенс, сигмоида [3]. В общем виде нейронная сеть состоит из следующих слоев: входной слой, один или несколько скрытых слоёв, выходной слой.
Нейроны каждого слоя получают сигналы от нейронов с других слоёв проводят вычисления и передают дальше.
Общая схема нейронной сети, изображена на рис. 2. Слои, в которых все нейроны соединены между собой называются полносвязными (fully connected).
Рис. 2. Общая схема искусственной нейронной сети
Для многослойной сети выходы для конкретного нейрона считаются как результат функции активации для произведения матриц X и W (биас B также может присутствовать):
Перед применением нейросеть нужно предварительно обучить. Обучение нейросети заключается в вычислении и корректировки оптимальных параметров нейросети.
Самыми главными параметрами являются веса. Подбор и оптимизация весов для конкретной задачи и составляет процесс обучения. Существует три основных способа обучения: обучение с учителем, обучение без учителя, обучение с подкреплением.
В способе обучения с учителем, который используется наиболее часто, нейросеть обучается на заранее подготовленном наборе помеченных данных. При обучении нейросети исходный набор данных разбивается на две части: тренировочный и тестовый. Первый набор используется непосредственно для обучения, а второй для проверки работы нейросети.
Для обучения нейросети используют алгоритм обратного распространения ошибки. В соответствии с ожидаемыми значениями, которые должны быть получены, обновляются веса нейросети. В качестве метода оптимизации весов чаще всего применяют метод стохастического градиентного спуска. Он предназначен для нахождения минимума функции. В качестве функции для оптимизации нейронной сети выступает функция потерь.
Для задач классификации чаще всего применяют функцию потерь перекрёстной энтропии (Cross Entropy Loss) в которую передаются значения выходного слоя нейросети, являющиеся вероятностями появления определенного класса, полученные при помощи функции Softmax [2] :
В качестве значений функции Softmax выступают значения у, а в качестве функции потерь выступает функция потерь перекрёстной энтропии L (Cross Entropy Loss).
Для метода стохастического градиентного спуска оптимизация весов на каждом шаге выглядит следующим образом:
Помимо самих весов wt и функции ошибки E здесь присутствует параметр г;, который называют скоростью обучения. Данный параметр определяется на практике и от него также зависит насколько быстро нейросеть будет достигать оптимальных значений весов. Слишком большие значения скорости обучения будут приводить к недостаточно оптимальным значениям весов, а маленькие значения ц будут приводить к более длительному обучению нейронной сети.
Перед обучением, веса нейросети необходимо правильно проинициали- зировать. От начальных значений весов зависит, то насколько долго будет выполняться обновление значения весов в процессе обучения. Существует большое количество различных алгоритмов инициализации и алгоритмов обновления весов такие как Adam, Adagrad, Momentum, RMSProp. В указанных алгоритмах метод градиентного спуска работает быстрее и стабильнее, что позволяет достичь более быстрой скорости тренировки сети.
Обучение нейронной сети происходит в несколько эпох [3]. Каждый цикл обучения сопровождается изменением синаптических весов между нейронами. Каждую эпоху на вход подаётся набор данных для обучения. Обучение продолжается до тех пор, пока значение функции ошибки E станет оптимальным для правильной работы нейросети.
Сверточные нейросети
Сверточная нейросеть состоит из несколько слоев (рис. 3) предназначенных для распознавания двухмерных форм с высокой устойчивостью к переносу, масштабированию и другим формам искажения. Основные составляющие сверточной нейросети следующие:
Рис. 3. Слои сверточной нейросети
1. Извлечение признаков - каждый нейрон связан с локальной рецептивной областью предыдущего слоя.
2. Наборы особенностей (каналы) - каждый слой сверточной нейросети состоит из нескольких наборов особенностей, внутри которых нейроны имеют одинаковый набор весов.
3. Сабсэмплинг - каждый слой нейросети выполняет усреднение характеристик предыдущего слоя, уменьшая размерность слоя нейросети, то есть количество параметров.
Первый слой выполняет свертку. Каждый нейрон сосредотачивается на определенной области, которая поступает на вход нейрона. Выходом каждого нейрона будет являться сумма произведений весов на значения входного сигнала с указанной области с применением функции активации (1).
Нейроны одного канала имеют одинаковую матрицу весов. Размер исходной области называется ядром свёртки. Также важными параметрами является шаг свертки и набивка. Шаг свёртки определяет насколько будет сдвигаться область. Набивка увеличивает размерность исходного изображения, расширяя его нулевыми значениями по краям. На рис. 4 показан процесс применения операции свёртки к исходному изображению размером 5x5 пикселей для ядра свертки с размером 3x3, дополнением равным 1 и шагом равным 1.
Рис. 4. Свертка для изображения 5x5 с ядром 3x3, набивкой - 1 и шагом - 1
После процедуры извлечения признаков осуществляется Сабсэм- плинг. Исходный слой делится на небольшие области определенного размера. К каждой области применяется функция пуллинга ( pooling), которая сокращает размерность исходной области. Чаще всего используются функции максимума ( max pooling) или среднего (average pooling).
Пример применения преобразования max pooling с размером ядра 2x2 показан на рис. 5.
Рис. 5. Процедура Max Pooling с ядром 2x2
После осуществления преобразования пуллинга к сверточному слою нейросети может быть подсоединён другой сверточный слой, либо полносвязный слой.
Реализация нейросетей для распознавания рукописных символов
Для реализации нейросетей использовался фреймворк PyTorch, разрабатываемый преимущественно компанией Facebook [4]. PyTorch является аналогом фреймворка Torch7 для языка Python. Библиотека PyTorch имеет возможность выполнения вычислений в нейронных сетях на графических процессорах. Модули PyTorch позволяют автоматически вычислять градиенты, удобно определять вычислительные графы, а также имеют поддержку основных алгоритмов оптимизации.
В качестве наборов обучающих и тестовых данных для нейросети использована база рукописных символов EMNIST [5], разработанная институтом национальных стандартов и технологий NIST. EMNIST включает в себя 814255 вариантов рукописных цифр и символов. Всего в базе EMNIST представлено 62 класса символов: английские строчные и прописные буквы, а также цифры. Каждый рукописный символ представлен матрицей пикселей с размером 28х28 байт, т.е. всего 784 байт. Для обучения в исходной базе используются 697932 вариантов рукописных символов, а для тестирования 116323 вариантов рукописных символов. Для каждого из вариантов присутствует правильный индекс класса, к которому он относится. На рис. 6 приведен пример изображений рукописных символов из базы EMNIST.
Для распознавания рукописных символов были использованы две нейросети с разными архитектурами. Первая нейросеть состоит из трех полносвязных слоев, архитектура которой представлена на рис. 7. На вход первой нейросети поступает изображение размером 28 x28. Далее идут два полносвязных слоя из 784 нейронов и в конце нейросеть при помощи функции SoftMax (3) вычисляет вероятности принадлежности символа, который изображен на входном изображении, к одному из 62 классов (большие и маленькие английские символы, а также цифры).
Рис. 6. Пример рукописных символов EMNIST
Рис. 7. Архитектура полносвязной нейросети для распознавания символов
Вторая нейросеть представлена тремя свёрточными слоями с ядром свертки 5х5, шагом 1 и дополнением 2 и тремя полносвязными слоями. Архитектура сверточной нейросети изображена на рис. 8.
Рис. 8. Архитектура свёрточной нейросети для распознавания символов
На вход свёрточной нейросети поступает изображение размером 28x28. Далее идут три свёрточных слоя размером 28x28, 14x14, 7x7 нейронов которые состоят из 16, 32, 64 каналов соответственно. Все нейроны канала имеют одинаковые веса. После обработки сигнала на последнем сверточном слое с помощью MaxPooling получается 64 канала нейросети с областями размером 3x3. Затем идут три полносвязных слоя с 576, 200 и 200 нейронами. Результатом вычислений являются значения вероятности принадлежности к каждому из 62 классов символов, получе н- ные при помощи функции Softmax. В качестве функций активации на каждом слое двух приведённых нейросетей выступает функция Re Lu [3].
Для реализации нейросети с тремя сверточными и тремя полносвязными слоями на PyTorch был разработан следующий код: class Net(nn.Module):
def init (self,device) :
super(Net,self). init ()
self.device=device #определяем слои нейросети self.Conv1 = nn.Sequential(
nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2), nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2)) self.Conv2 = nn.Sequential(
nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=2), nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2)) self.Conv3 = nn.Sequential(
nn.Conv2d(32, 64, kernel_size=5, stride=1, padding=2), nn.ReLU(),
nn.MaxPool2d(kernel_size=2, stride=2)) self.fc1 = nn.Linear(3*3*64, 200).to(device) self.fc2 = nn.Linear(200, 200).to(device) self.fc3 = nn.Linear(200, 62).to(device)
Для организации процесса прямого прохода по всем слоям нейросети реализована функция forward, содержащая следующий код: def forward(self, x): x = self.Conv1(x).to(self.device) x = self.Conv2(x).to(self.device) x = self.Conv3(x).to(self.device) x = x.reshape(x.size(0), -1) x = F.relu(self.fc1(x)).to(self.device) x = F.relu(self.fc2(x)).to(self.device) x = self.fc3(x).to(self.device)
return F.log_softmax(x).to(self.device)
Процесс обучения нейросети на фреймворке PyTorch реализован при помощи следующего кода:
Код приведенный выше осуществляет обучение для указанного заранее количества эпох. Весь обучающий набор данных проходит по сети столько раз сколько эпох нам потребуется. Обновление весов происходит по заданному критерию и на основании обучающих данных. Критерий о п- тимизации - алгоритм Adam [6]. В случае с алгоритмом Adam веса на каждом шаге градиентного спуска обновляются следующим образом:
где ?-- скорость обучения , є -- сглаживающий параметр, mt -- скользящее среднее, Vt -- нецентрированная дисперсия [8].
Процесс тестирования нейросети реализован при помощи следующего кода:
with torch.no_grad():
for data, labels in test_loader: data, labels = data.to(device), labels.to(device) net_out = net(data)
test_loss += criterion(net_out, labels).data # Суммируем потери pred = net_out.data.max(1)[1] # получаем индекс максимального correct += pred.eq(labels.data).sum() # если совпадает добавляем в correct test_loss /= len(test_loader.dataset) test_acc = float( 100. * correct / len(test_loader.dataset))
При тестировании нейросеть проверялась на тестовом наборе данных. Среднее значение точности распознавания вычислялась как сумма совпадений соответствию правильным классам символов, деленная на длину тестового набора данных. На рис. 9 и 10 изображены графики обучения и зависимости точности распознавания нейросетей с архитектурами, описанными выше.
Рис. 9. График обучения свёрточной нейросети
На первом графике отображена зависимость функции потерь от эпохи, а на втором точности распознавания от эпохи. Тестирование проводилось до 20 эпох.
Рис. 10. График обучения трехслойной полносвязной нейросети
Из полученных графиков следует, что многослойная сверточная нейросеть показывает более стабильные результаты, а также быстрее достигает неплохого значения средней точности распознавания - 89,8% на обучающих примерах. Нейросеть состоящая из трёх полносвязных слоев работает менее стабильно и достигает средней точности - 84,9% на обучающем наборе данных.
Заключение
Для обучения и тестирования нейросети разработана программа на языке Python в среде разработки Spyder [7]. Все характеристики полученных нейросетей были сохранены в виде модели PyTorch, что позволяет использовать данные нейросети для последующего обучения и задач классификации. Работа полученных нейросетей была протестирована. Для тестирования использовались 116323 вариантов рукописных символов из набора EMNIST. Для реализации ПО использовался компьютер со следующими характеристиками: процессор - ryzen r5 3600, графический ускоритель - nvidea gtx 1060, объём ОЗУ - 32 Гб.
Время обучения нейросети из трех сверточных и трех полносвязных слоев составило 35 минут и 13 секунд. Точность распознавания на тестовых данных составила 86,78%. Время обучения нейросети из трех полносвязных слоев составила 25 минут и 8 секунд. Точность распознавания на тестовых данных составила 83,68%. Таким образом выбор сверточной нейросети является более предпочтительным по точности распознавания.
Полученные нейросети позволяют эффективно распознавать рукописные символы английского алфавита, а также цифры. Для практической реализации в системе распознавания потребуется выполнить сегментацию символа в реальном изображении и его масштабирование до требуемого размера.
Библиографические ссылки
1. Haykin S. Neural networks and learning machines. New Jersey: Pearson Education, 2009. 938 p.
2. Rashid T. Make Your Own Neural Network. Create Space Independent Publishing Platform, 2016. 222 p.
3. Goodfellow I., Bengio Y., Courville A. Deep Learning. URL: http://www.deeplearningbook.org (дата обращения: 24.11.2020).
4. PyTorch open source machine learning framework. URL: https://pytorch.org (дата об-ращения: 24.11.2020).
5. The EMNIST dataset. URL: https://www.nist.gov/itl/products-and-services/emmst- dataset (дата обращения: 24.11.2020).
6. Kingma D. P., Jimmy L. B. Adam: a method for stochastic optimization. URL: https://arxiv.org/pdt71412.6980.pdf (дата обращения: 24.11.2020).
7. Spyder The Scientific Python Development Environment. URL: https://www.spyder- ide.org (дата обращения: 24.11.2020).
Размещено на Allbest.ru
...Подобные документы
Принцип работы нейросетей и модели синтеза. Ключевые моменты проблемы распознавания речи. Система распознавания речи как самообучающаяся система. Описание системы: ввод звука, наложение первичных признаков на вход нейросети, модель и обучение нейросети.
курсовая работа [215,2 K], добавлен 19.10.2010Методы предобработки изображений текстовых символов. Статистические распределения точек. Интегральные преобразования и структурный анализ. Реализация алгоритма распознавания букв. Анализ алгоритмов оптического распознавания символов. Сравнение с эталоном.
курсовая работа [2,1 M], добавлен 20.09.2014Процессы распознавания символов. Шаблонные и структурные алгоритмы распознавания. Процесс обработки поступающего документа. Обзор существующих приложений по оптическому распознаванию символов. Определение фиксированного шага и сегментация слов.
дипломная работа [3,3 M], добавлен 11.02.2017Анализ нейронных сетей и выбор их разновидностей. Модель многослойного персептрона с обучением по методу обратного распространения ошибки. Проектирование библиотеки классов для реализации нейросети и тестовой программы, описание тестирующей программы.
курсовая работа [515,4 K], добавлен 19.06.2010Этап предварительной обработки данных, классификации, принятия решения. Изображения обучающих рукописных символов, тестового символа. Выход нейронной сети для тестового символа. График тренировки нейронной сети. Последовательность точек. Входные вектора.
статья [245,7 K], добавлен 29.09.2008Основные отличия нейросетей от других методов. Неформализуемые и трудно формализуемые задачи. Моделирование интеллектуальной деятельности человека. Оценка стоимости квартир в Перми с использованием нейронных сетей. Проектирование и обучение нейросети.
презентация [139,4 K], добавлен 14.08.2013Возможности программ моделирования нейронных сетей. Виды нейросетей: персептроны, сети Кохонена, сети радиальных базисных функций. Генетический алгоритм, его применение для оптимизации нейросетей. Система моделирования нейронных сетей Trajan 2.0.
дипломная работа [2,3 M], добавлен 13.10.2015Необходимость в системах распознавания символов. Виды сканеров и их характеристики. Оптимальное разрешение при сканировании. Программы распознавания текста. Получение электронного документа. FineReader - система оптического распознавания текстов.
презентация [469,2 K], добавлен 15.03.2015Оптическое распознавание символов как механический или электронный перевод изображений рукописного, машинописного или печатного текста в последовательность кодов. Компьютерные программы для оптического распознавания символов и их характеристика.
презентация [855,2 K], добавлен 20.12.2011Основы биометрической идентификации. Возможность использования нейросетей для построения системы распознавания речи. Разработка программного обеспечения для защиты от несанкционированного доступа на основе спектрального анализа голоса пользователя.
дипломная работа [2,8 M], добавлен 10.11.2013Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.
дипломная работа [1,8 M], добавлен 08.02.2017Первое систематическое изучение искусственных нейронных сетей. Описание элементарного перцептрона. Программная реализация модели распознавания графических образов на основе перцептрона. Интерфейс программы, основные окна. Составление алгоритма приложения.
реферат [100,5 K], добавлен 18.01.2014Обзор математических методов распознавания. Общая архитектура программы преобразования автомобильного номерного знака. Детальное описание алгоритмов: бинаризация изображения, удаление обрамления, сегментация символов и распознавание шаблонным методом.
курсовая работа [4,8 M], добавлен 22.06.2011Понятие системы распознавания образов. Классификация систем распознавания. Разработка системы распознавания формы микрообъектов. Алгоритм для создания системы распознавания микрообъектов на кристаллограмме, особенности его реализации в программной среде.
курсовая работа [16,2 M], добавлен 21.06.2014Анализ существующих алгоритмов распознавания режимов работы газотурбинного двигателя. Метод группового учета аргументов, метод Байеса. Применение технологий системного моделирования на этапе проектирования интеллектуальной системы распознавания режимов.
курсовая работа [1,4 M], добавлен 11.04.2012Рассмотрение способов применения и основных понятий нейронных сетей. Проектирование функциональной структуры автоматизированной системы построения нейросети обратного распространения ошибки, ее классов и интерфейсов. Описание периода "бета тестирования".
дипломная работа [3,0 M], добавлен 02.03.2010Исследование нейросетевых архитектур и их приложений. Общие принципы, характерные для нейросетей. Локальность и параллелизм вычислений. Программирование: обучение, основанное на данных. Универсальность обучающих алгоритмов. Сферы применения нейросетей.
курсовая работа [250,5 K], добавлен 25.11.2010Оптико-электронная система идентификации объектов подвижного состава железнодорожного транспорта. Автоматический комплекс распознавания автомобильных номеров. Принципы и этапы работы систем оптического распознавания. Особенности реализации алгоритмов.
дипломная работа [887,3 K], добавлен 26.11.2013Создание программного средства, осуществляющего распознавание зрительных образов на базе искусственных нейронных сетей. Методы, использующиеся для распознавания образов. Пандемониум Селфриджа. Персептрон Розенблатта. Правило формирования цепного кода.
дипломная работа [554,8 K], добавлен 06.04.2014Специфические особенности распознавания лиц. Взаимодействие компьютер - человек. Создание новой нейросистемы, разработанной в программе разработчиков Borland Delphi, которая будет состоять из поля захвата изображения и дальнейшим обучением нейросети.
презентация [212,5 K], добавлен 14.08.2013