Применение нейросетевых технологий для определения пола и возраста человека на основе фотографии лица

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость новой

Детальная информация о работе

Выдержка из работы

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Кафедра информационных технологий

Курсовая работа

«Применение нейросетевых технологий для определения пола и возраста человека на основе фотографии лица»

Работу выполнил ст. 4 курса, 44 гр. Дмитренко С. А.

Научный руководитель к.ф. -м.н., доцент Кольцов Ю. В.

Краснодар 2013

Реферат

Курсовая работа содержит: рисунков 17, источников 10.

Цель работы — рассмотреть теоретические основы сверточных нейронных сетей, провести исследование зависимости качества работы сети от изменения различных характеристик, сравнить результаты работы данного типа сетей с нейронной сетью типа многослойный персептрон на задаче определения пола и возраста человека по фотографии лица.

В рамках курсовой работы изучена литература по теории сверточных нейронных сетей, распознаванию образов и строению лица человека, а также изучены средства интегрированной среды разработки программного обеспечения Microsoft Visual Studio.

Ключевые слова: Нейронные сети, нейрон, многослойный персептрон, сверточные нейронные сети, распознавания лиц, биометрические параметры.

Содержание

Введение

Глава 1. Сверточные нейронные сети

1.1 Основные преимущества. Обусловленность выбор

1.2 Общие свойства и особенности функционирования

1.3 Структура и работа сети

1.4 Методы обучения

Глава 2. Программное обеспечение определения пола и возраста человека на основе фотографии лица

2.1 Основные требования к программному продукту

2.2 Структура программного обеспечения

2.3 Реализация и организация работы приложения

2.4 Тестирование и результаты работы

2.5 Сравнение результатов работы сверточной нейронной сети и многослойного персептрона

Заключение

Список использованных источников

Введение

Данная курсовая работа является продолжением предыдущей работы по тематике «Применение нейросетевых технологий для определения пола и возраста человека на основе фотографии лица», в которой был проведен ряд исследований и получены определенные результаты. В предыдущей работе была поставлена задача: определение биометрических параметров (пола и возраста) человека по фотографии лица. Цель предыдущей работы заключалась в определении возможности применения нейросетевых технологий для решения поставленной задачи и разработке программного продукта основанного на данных технологиях.

В предыдущей работе были рассмотрены данные психофизических исследований процесса распознавания лиц, а также определены признаки, по которым все входное множество объектов можно разделить на определенные классы. Разделение на классы послужило основанием решаемости задачи классификации, а данные психофизических исследований процесса распознавания лиц выявили особенности применения нейронных сетей для решения поставленной задачи. Была разработана структура программного продукта и реализован модуль определения пола человека. В качестве сети использовался многослойный персептрон. Данный тип сети показал неплохие результаты на изображениях без искажений и поворотов.

В данной курсовой работе планируется рассмотреть другой тип сетей — сверточные нейронные сети, реализовать программный модуль, работающий с данным типом сетей, и сравнить результаты работы с уже имеющимися результатами.

нейронный пол возраст определение

Глава 1. Сверточные нейронные сети

1.1 Основные преимущества. Обусловленность выбора

Многослойные нейронные сети, обученные методом градиентного спуска, обладают способностью построения сложных многомерных областей на основе обучающих примеров, что позволяет применять их для решения задач классификации и распознавания образов [7], но такие сети имеют ряд недостатков, понижающих эффективность их работы.

Основным ограничением традиционных многослойных сетей является то, что они не отличаются инвариантностью к различным деформациям входного изображения, например переносу или незначительному повороту, шуму, искажению [4]. Это ограничение делает их слабо применимыми к реальным задачам распознавания образов, так как реальные данные часто подвержены деформациям (в качестве примера на рисунке 1 представлено сравнение двух изображение с камеры видео наблюдения и подготовленного изображения для обучения сети).

Рисунок 1. Отличия подготовленных и реальных данных (слева — подготовленное изображение, справа — изображение с камеры видеонаблюдения)

Можно попытаться решить эту проблему дополнив обучающую выборку примерами с искаженными данными, но это приведет к увеличению количества обучающих данных, что в свою очередь уменьшит время обучения и чем больше существует возможных искажений, тем больше примеров придется добавить. Также добавление искаженных примеров в набор обучающих выборок, может плохо сказаться на обобщающей способности сети.

Еще одним недостатком традиционных полносвязных сетей является игнорирование топологии, геометрической структуры изображения [4,7]. Изображение представляется в виде входного вектора и данные (пиксели) можно подавать в любом фиксированном порядке, это не повлияет на исход обучения. С другой стороны изображение представляет собой плоский двухмерный объект, в котором каждый пиксель имеет четко определенную позицию. Соседние пиксели связаны между собой, и эта связь несет ценную информацию об изображении [7]. Связь пикселей позволяет извлекать локальные признаки (например, линии, углы и т. д.), из которых затем могут быть получены более общие признаки. На рисунке 2, на изображении слева пиксели несут локальную информацию о двух пересекающихся линиях, на изображении справа расположены хаотично, и это тоже является своего рода информацией. Данные признаки изображений нельзя выделить посредством простой многослойной сети.

Рисунок 2. Локальная связь пикселей изображения

Сверточные нейронные сети обеспечиваю частичную устойчивость к изменениям масштаба, смещениям и поворотам, смене ракурса и другим искажениям [7]. Этот тип сети разработал и впервые применил Yann LeCun известный исследователь в области компьютерного зрения и робототехники. Сверточные сети ориентированы на работу с изображениями и учитывают локальные связи между пикселями, что делает их более предпочтительными по сравнению с традиционными многослойными сетями. Преимущества сверточных сетей обуславливают их выбор для решения задачи распознавания образов и классификации признаков выделяемых из изображений.

1.2 Общие свойства и особенности функционирования

Три архитектурных решения позволяют сверточным нейронным сетям обеспечивать инвариантность к изменению масштаба, повороту, сдвигу и незначительным пространственным искажениям [4,7]:

· Локальное извлечение признаков. Каждый нейрон получает входной сигнал от локального рецептивного поля в предыдущем слое (рисунок 3), это обеспечивает локальную двухмерную связь нейронов[4].

Рисунок 3. Сканирование рецептивным полем

· Слои в виде набора карт признаков. Вычислительные слои состоят из наборов карт признаков, плоскостей для которых все нейроны должны использовать одно общее множество синаптических весов. Данная форма усложняет структуру сети, но имеет преимущества. Во-первых, общие веса уменьшают общее число настраиваемых коэффициентов, а во-вторых обеспечивается детектирование некоторых черт в любом месте изображения[7]. В каждом таком слое мы получаем карты с расположения определенных признаков, чем больше карт, тем больше признаков.

Рисунок 4. Слои в виде карт признаков. Общие веса для нейронов карты

· Иерархическая организация с пространственными подвыборками. Выделяют два вида слоев: свертки и подвыборки. За каждым слоем свертки идет слой подвыборки, он осуществляет подвыборку и локальное усреднение, за счет чего достигается уменьшение разрешения для карт признаков и повышается устойчивость входного сигнала к смещениям и незначительным деформациям[4,7].

Сверточная нейронная сеть является многослойной. Сверточные и подвыборочные слои чередуются друг с другом. Каждый из этих слоев, в свою очередь, состоит из набора карт (плоскостей), причем нейроны одной карты имеют одинаковые веса, используемые для связи со всеми локальными участками предыдущего слоя. Изображение предыдущего слоя сканируется небольшим окном и пропускается сквозь набор весов, полученный результат отображается на соответствующий нейрон текущего слоя. Таким образом, набор плоскостей представляет собой карты характеристик, и каждая карта находит «свои» признаки (участки) в любом месте предыдущего слоя.

1.3 Структура и работа сети.

Рассмотрим структуру типичной сверточной сети (рисунок 5):

Рисунок 5. Структура сверточной сети

Данные об изображении подаются на входной слой, который не несет какой либо функциональной нагрузки и служит лишь для подачи изображения на вход сети. Далее за входным слоем идет слой свертки C1, каждый нейрон которого получает свои входы от локального рецептивного поля (некоторой области предыдущего слоя). Получается, что входное изображение предыдущего слоя как бы сканируется небольшим окном и пропускается через набор весов, в результат отображается на соответствующий нейрон сверточного слоя.

Функционирование нейрона сверточной плоскости описывается выражением [4]:

где — выход нейрона с координатами (i, j) k-ой плоскости сверточного слоя, — нейронное смещение k-ой плоскости, K — размер рецептивного поля нейрона, — синаптический вес k-ой плоскости, для связи с s-ым, t-ым значение рецептивного поля, — выходы нейронов предыдущего слоя.

Сколько карт содержит сверточный слой C1, столько будет осуществлено сверток входного изображения.

Размер сверточной плоскости определяется следующими выражениями:

,

где и — соответственно ширина и высота сверточной плоскости, и — соответственно ширина и высота сканируемой плоскости, K — размер рецептивного поля.

Свертка возможна не только с единичным шагом, при этом:

,

где step — шаг свертки.

Свертка с шагом отличным от единичного возможна только при определенных соотношениях параметров, , K и step. Шаг не должен превышать размер рецептивного поля K и и должны быть целыми числами. Такая свертка может уменьшить общее количество вычислений, сохранив при этом приемлемый уровень сканирования изображения.

Нейроны одной карты (плоскости) имеют один и тот же набор синаптических весов. Такую карту называют — картой характеристик. Получаем в одном слое несколько карт с местоположением различных признаков, каждая карта находит «свои» участки изображения в любом месте предыдущего слоя. Каждая карта помимо общего набора весов имеет общий коэффициент нейронного смещения. Рецептивные области нейронов пересекаются, нейроны извлекают одни и те же особенности входного изображения, независимо от их точного местоположения [4,7,8].

Следующий слой S1 является слоем подвыборки и обеспечивает локальное усреднение и повыборку. Данный слой состоит из такого же количества плоскостей, как в предыдущем. Особенность слоя подвыборки заключается в том, что рецептивные области нейронов не пересекаются. Каждый нейрон вычисляет среднее всех его входов, умножает на синаптический коэффициент, добавляет нейронное смещение и подает результат в функцию активации [4,7].

Функционирование нейрона плоскости подвыборки описывается выражением [4]:

Так как смежные нейроны в подвыборочном слое имеют не пересекающиеся рецептивные области, то размеры карт уменьшаются, карта полученного слоя как минимум имеет вдвое меньше колонок и строк.

Каждая плоскость слоя S1 связана только с одной плоскостью слоя C1 и имеет единственный синаптический коэффициент и нейронное смещение. Таким образом, для слоя подвыборки получаем 2n настраиваемых параметров, где n — число карт в слое.

Слои C2 и S2 так же осуществляют свертку, подвыборку и работают аналогично.

Далее идут два слоя из простых нейронов N1 и N2, они необходимы для классификации, после того как предыдущие слои выполнили извлечение признаков и уменьшение размерности. В слое N1 находится по одному нейрону на каждую плоскость слоя S2. Каждый нейрон N1 полностью связан с каждым нейроном только одной карты из S2, он просто выполняет взвешенное суммирование всех своих входов и пропускает результат через активационную функцию [4].

Нейроны слоя N2 являются выходными. Их количество равно количеству определяемых классов. Каждый нейрон слоя N2 связан полной связью со всеми нейронами предыдущего слоя N1.

В итоге получаем сеть, ориентированную на работу с изображениями. Первые два слоя осуществляют извлечение локальных признаков изображения, последующие два из этих локальных извлекают более общие признаки. Затем последние два слоя, используя извлеченные признаки, классифицируют изображение. За счет использования общих весов количество настраиваемых коэффициентов уменьшается, что в лучшую сторону сказывается на работе сети.

1.4 Методы обучение

Для обучения сверточной сети предложенной структуры, возможно применение нескольких способов, перечислим некоторые из них:

· Комбинированный метод. Для обучения слоев свертки и подвыборки используется, какой-либо метод обучения без учителя (например, алгоритм SOM Кохонена [9], «Сигнальный метод обучения» Хебба [9] или конкурентный алгоритм обучения). Для обучения полносвязных классифицирующих слоев N1 и N2 используется метод обучения с учителем (например «Алгоритм обратного распространения ошибки»). Сначала производится обучение без учителя слоев свертки и подвыборки, при котором нейронная сеть сама выделяет различные признаки в изображении. Затем происходит обучение с учителем полносвязных слоев, в результате которого сеть обучается производить классификацию изображения, по выделенным раннее признакам.

· Использование алгоритма обратного распространения ошибки (Back propagation)[1,9]. Для обучения используется метод обратного распространения ошибки, который не отличается от аналогичного алгоритма для классического многослойного персептрона, но при реализации учитываются особенности архитектуры сверточной сети, а именно — совместное использование весов нейронами одной карты признаков.

· Использование ускоренного метода Resilient Propagation [9]. Для обучения используется метод Resilient Propagation, который в отличие от стандартного алгоритма Back propagation, использует только знаки частных производных для подстройки весовых коэффициентов. Эмпирически доказано, что данный алгоритм сходится в 4−5 раз быстрее, чем Back propagation. При реализации также учитываются особенности архитектуры сверточной сети.

В данной курсовой работе для обучения сети будем использовать метод обратного распространения ошибки (Back propagation), который был подробно рассмотрен в предыдущей работе.

Глава 2. Программное обеспечение определения пола и возраста человека на основе фотографии лица

2.1 Основные требования к программному продукту

В рамках данной работы автором были сформулированы требования к программному продукту, основанному на изученных технологиях и решающему поставленную задачу.

Необходимо реализовать программное обеспечение, способное выполнять определение пола и возраста человека по предоставляемой ему фотографии лица. Оно должно обладать следующими возможностями:

— Рабочий (пользовательский) режим:

· Возможность загрузки единичного изображения с жесткого диска или других носителей.

· Возможность выбора каталога с изображениями, для множественной обработки.

· Определение пола и возраста по выбранным изображениям и предоставление результатов.

· Сохранение результатов распознавания.

· Возможность выбора (загрузки) по-разному настроенных сетей (например, для конкретной расы).

— Режим обучения и настройки сетей:

· Возможность формирования обучающих данных.

· Возможность обучения сетей на предоставленных обучающих данных.

· Возможность дообучения сетей.

· Изменение параметров сетей.

· Возможность сохранения обученных сетей.

2.2 Структура программного обеспечения

В предыдущей курсовой работе автором была разработана структура программного продукта, для решения задачи определения пола и возраста человека по фотографии лица. Структура программного продукта представляет набор взаимосвязанных модулей. В данной работе, учитывая сформулированные требования, был изменен набор модулей и схемы их взаимодействия.

Рассмотрим модульную структуру рабочего режима, представленную на рисунке 6.

Рисунок 6. Модульная схема рабочего режима

· Модуль загрузки изображений, необходим для загрузки изображений и приведения их в формат поддерживаемый сетью. Основной функцией является преобразование изображений из многочисленных форматов (jpeg, gif, png и т. д.) в формат BMP (преимущество использования данного формата для входных изображений обсуждалось в предыдущей работе), и изменение разрешения изображения до разрешения, поддерживаемого сетью. После приведения в формат сети изображения передаются в качестве входных данных компоновщику результатов.

· Компоновщик результатов, подает входные данные на входы сетей и формирует результаты. Данный модуль является центральным звеном рабочего режима. Его задача заключается в подаче входных данных на входы нейросетей, анализ реакций сетей, формировании результатов на основе полученных данных и передача результатов для вывода.

· Модуль вывода результатов, осуществляет вывод результатов пользователю. Данный модуль получает результаты распознавания от компоновщика результатов и производит вывод различными способами, зависящими от настройки приложения. Пользователь может получить результаты в виде файла, в виде текстовой или графической информации на форме приложения.

· Модуль обратной связи, необходим для регистрации ошибок сети. В процессе работы сети могут возникать ошибки распознавания, полезно было бы хранить информацию о таких ошибках. Используя такие данные можно выполнить переобучение или дообучение сетей с неверно распознанными примерами. Данный модуль позволяет пользователю указать на ошибку сети, непосредственно на форме приложения, либо через специальное меню, если вывод результатов производился в файл.

· Модуль статистики, хранит информацию о результатах работы сети, а также зарегистрированных ошибках. Данный модуль необходим для хранения различных статистических данных работы сети, также он осуществляет хранение информации о зарегистрированных ошибках, полученных от модуля обратной связи.

· Каскад нейросетей, представляет собой набор иерархически связанных нейронных сетей.

Рассмотрим причины использования и структуру каскада нейросетей.

Для определения биометрических параметров пола и возраста человека, изображение лица которого поступило на вход, необходимо использование как минимум двух сетей каждая для определения одного из указанных параметров. При использовании минимального набора сетей, значительно сокращаются затраты на обучение и хранение данных каждой сети, но имеются существенные недостатки, которые были выявлены в рамках прошлой курсовой работы. В результате проведенных автором тестов сети для определения пола, обученной на разных данных, было замечено хорошая способность сети к обобщению и высокий результат успешных ответов, при обучении на образцах принадлежащих конкретной довольно широкой возрастной группе (подростки, взрослые, пожилые). Но в таком случае сеть давала ошибки при распознавании образцов из других групп. При попытке обучения одновременно на образцах из разных групп, способность к обобщению падала, как и процент успешного распознавания.

Для исправления указанных недостатков автором была разработана структура каскада нейросетей, схема которой представлена на рисунке 7.

Рисунок 7. Структура каскада нейросетей

Входное изображение сначала проходит грубое распределение по возрасту, обученная сеть определяет изображение к одному из 4-ох классов: младенцы, подростки, взрослые люди, пожилые люди. Далее для каждого из указанных классов имеется обученная сеть для определения пола людей принадлежащих именно этому классу. После определения пола изображение, предается следующей сети для более точного определения возраста.

Данная структура состоит из 1-ой сети верхнего уровня, 4-ох сетей второго уровня и 8-ми сетей третьего уровня. Итого получаем 13 сетей, такое количество увеличивает затраты на обучение в целом, но обучение конкретной сети сойдется быстрее, чем при использовании минимального набора, за счет сужения множества возможных вариантов. Структура каскада нейросетей должна значительно улучшить качество распознавания.

Кроме рабочего (пользовательского) режима, приложение имеет режим обучения и настройки сетей, он является закрытым и не доступен обычным пользователям. Предназначение данного режима: создание загрузочных файлов с обученными и настроенными сетями, которые можно использовать и в пользовательском режиме для работы. Структура режима обучения и настройки представлена на рисунке 8.

Рисунок 8. Модульная схема режима обучения и настройки

· Модуль формирования обучающих данных, необходим для создания обучающих выборок. Данный модуль позволяет входным изображениям сопоставить классы, к которым они относятся. Из полученных выборок формируется множество обучающих данных. Результат передается модулю управления обучением.

· Модуль управления обучением сети, необходим для настройки и обучения сети. Данный модуль взаимодействует с конкретной сетью, подготавливает ее к обучению, производит запуск и остановку обучения, позволяет изменять параметры обучения на любой итерации. Также модуль управления обучением производит взаимодействие с модулем визуализации, передавая результаты о текущем состоянии сети.

· Модуль визуализации, необходим для более наглядного представления процесса сходимости сети. Данный модуль визуально представляет данные процесса обучения, полученные от модуля управления, строить графики сходимости и выводит текущие показатели сети.

· Модуль статистики, хранит данные о процессе обучения сети и ее текущем состоянии. Данный модуль позволяет хранить историю обучения сетей и их параметрами. Это позволяет выбрать наиболее оптимальные настройки параметров сетей.

· Модуль настройки каскада нейросетей, позволяет настроить конкретную сеть каскада, а так же поменять иерархию взаимосвязи сетей.

2.3 Реализация и организация работы приложения

Приложение было создано как проект Windows Forms в среде Visual Studio 2010 на языке программирования C++. Для работы с нейронными сетями, был реализован отдельный модуль «ConvolutionNetwork. h» с гибкой системой классов.

Обучение сети является очень ресурсоемкой операцией, поэтому остро встает вопрос быстродействия процесса обучения. Для достижения высокого уровня быстродействия, классы были спроектированы таким образом, чтобы выполнять своего рода надстройку над данными. Все данные расположены в одном месте памяти, в таком случае в процессе обучения сверточной сети приходится выполнять сложный просчет и перебор индексов, что затрудняет реализацию. Надстройка в виде классов позволяет решить эту проблему, сохранив приемлемый уровень быстродействия, за счет использования механизма указателей.

В состав модуля «ConvolutionNetwork. h» входят следующие классы:

Классы для представления нейронов:

· Neuron — производный абстрактный класс представления нейрона.

· NeuronN — класс для представления простого нейрона полносвязного слоя.

· NeuronS — класс для представления нейрона слоя подвыборки.

· NeuronC — класс для представления нейрона слоя свертки.

Классы для представления карт признаков:

· MapFeatures — производный абстрактный класс представления карты признаков.

· MapFeaturesS — класс для представления карты признаков слоя подвыборки.

· MapFeaturesC — класс для представления карты признаков слоя свертки.

Класс управления набором обучающих данных:

· TrainingSamples — служит для формирования, добавления, удаления и выдачи обучающих выборок.

Данный набор классов позволяет легко конструировать сеть с произвольным количеством слоев и нейронов в них. Для этого сущетвует основной класс ConvolutionalNeuralNetwork, который представляет собой модель нейронной сети с возможностью функционирования, настройки и обучения.

Для работы с нейронной сетью, из любого приложения достаточно создать экземпляр класса ConvolutionalNeuralNetwork. Далее вызвать метод Initialize () для инициализации сети. После инициализации можно выполнить загрузку состояния сети с помощью метода LoadNetwork () или произвести обучение, после чего можно использовать сеть для работы.

2.4 Тестирование и результаты работы

В рамках данной работы было проведено тестирование сверточной сети для определения пола человека. Вычисления проводились на процессоре Intel® Core™ 2 Duo CPU 2. 20 GHz. Для обучения использовалось около 1000 различных фотографий, также около 100 тестовых изображений.

Время выполнения одной эпохи? 25 секунд.

Обучение производилось с различным коэффициентом скорости ћ.

Значение ћ=0.1 оказалось велико, процесс обучения не сходился, сеть скачками «заходила» в локальные минимумы и снова «выходила» на подъем поверхности ошибок (рисунок 9).

Рисунок 9. Графики обучения при ћ=0.1 (сверху — график изменения глобальной погрешности, снизу — график изменения процента успешного распознавания)

При уменьшении значения ћ до 0. 05 сходимость сети улучшилась, но ближе к концу обучения скачкообразное изменение не позволяло достичь приемлемого стабильного результата (рисунок 10).

Рисунок 10. Графики обучения при ћ=0. 05 (сверху — график изменения глобальной погрешности, снизу — график изменения процента успешного распознавания)

Экспериментальным путем было подобранно самое оптимальное значение ћ = 0. 01. Данное значение коэффициента обеспечивает приемлемую скорость сходимости и плавный спуск по поверхности ошибок (рисунок 11). Процесс обучения сошелся за 19 эпох к наилучшему результату 94 процента правильно распознанных фотографий на тестовом множестве. Дальнейшее обучение не привело к улучшению результата. Поэтому состояние сети на конец 19-ой эпохи было сохранено как результирующее.

Рисунок 11. Графики обучения при ћ=0. 01 (сверху — график изменения глобальной погрешности, снизу — график изменения процента успешного распознавания)

Предпринимались также попытки постепенного уменьшения значения ћ в ходе обучения, но это не дало лучшего результата. Сначала значение шага выбиралось большим, чтобы быстро свести ошибку к малым значениям, затем постепенно уменьшалось, для более точной сходимости. Из графика на рисунке 12 виден быстрый спуск, и затем плавное изменение.

Рисунок 12. Графики обучения при постепенно меняющемся шаге ћ (сверху — график изменения глобальной погрешности, снизу — график изменения процента успешного распознавания)

Обученная сеть из 100 тестовых изображений ошиблась только на 6-ти. На всех 6-ти изображениях представлены женщины (рисунок 13).

Рисунок 13. Входные изображения, на которых сеть дала ошибку

Большой интерес при анализе результатов представили карты признаков, которые сеть строит в процессе распознавания. Карты признаков первого слоя сети были размещены в матрицах размером 13×13 и содержали значения в диапазоне [0,1]. Данные значения были преобразованы к интервалу [0,255] (значения палитры формата BMP 8 бит градация серого) инвертированы и сохранены в виде BMP изображений размером 13×13 пикселей.

На рисунке 14 изображены карты, построенные обученной сетью, при распознавании двух женщин и двух мужчин. Можно заметить выделение определенных черт на разных картах. Например, на 5-ой карте у всех 4-ох образцов заметно явное выделение бровей и области вокруг глаз.

Рисунок 14. Карты признаков, построенные сетью

В процессе тестирования, автором также было проведено исследование изменения поведения сети при выборе различного шага сканирования входного изображения. Под шагом сканирования подразумевается количество пикселей, на которое каждый раз передвигается рецептивное поле при просчете взвешенной суммы очередного нейрона карты признаков. Чем меньше шаг сканирования, тем больше размер карты признаков, получаем более детальное сканирование изображения.

Таким образом, при минимальном шаге сканирования (единичном шаге) имеем самое большое разрешение карт признаков. Возникает вопрос, насколько это оправдано, и намного ли ухудшиться качество работы сети при увеличении значения шага. Для получения ответа было произведено обучение сети с различным шагом сканирования.

Заметим, что наилучшие результаты достигаются при минимальном шаге сканирования равном единице. Но следует отметить, что при значении шага равном 2-ум, процент успешного распознавания не намного меньше, аналогичных показателей при минимальном шаге, однако рассмотрим количество нейронов располагаемых в картах признаков.

В конкретном примере использовалось изображение разрешением 29×29 пикселей и рецептивное поле размером 5×5. При минимальном шаге получаем размер карты признаков (29−5)+1 = 25, 25×25 и общее число нейронов одной карты 625. Для шага со значением равным 2-ум (29−5)/2+1 = 13, 13×13 и общее число нейронов одной карты 169. В общем количестве нейронов видна существенная разница, это влияет непосредственно на время обучения и работы сети. Время одной эпохи обучения с единичным шагом составило? 55 секунд, а для шага со значением равным 2-ум? 25 секунд.

Шаг сканирования равный 4-ом значительно уменьшает размеры карт, но не оправдывает выбор из-за существенно отстающих результатов распознавания.

Из выше сказанного, можно сделать вывод, что для мощной вычислительной системы можно использовать самую высокую степень сканирования, для получения наилучшего результата работы, для более слабых вычислительных систем можно уменьшить данный показатель, получив прирост в производительности, но немного потеряв в качестве работы сети.

2.5 Сравнение результатов работы сверточной нейронной сети и многослойного персептрона

Для сравнения результатов работы построенной сверточной сети, и многослойного персептрона, было произведено несколько обучений персептрона на том же обучающем множестве.

Сравнение выявило более устойчивую сходимость персептрона даже при высоких значения шага ?, но процент успешного распознавания при этом не превысил 90 процентов (рисунок 16).

Рисунок 16. Графики обучения многослойного персептрона

В результате анализа графиков обучения сетей и результатов их работы, было замечено, что сверточная сеть обладает более высокой степенью обобщения, нежели многослойный персептрон.

Заметна также устойчивость сверточной сети к искажениям. На рисунке 17 показан пример работы сети с искаженными данными. Слева оригинальное изображение и высокий отклик сети в правильную сторону. Справа тоже изображение, но с применением фильтров «зигзага» и «линзового увеличения». Заметим, сеть по-прежнему правильно распознала изображение, только отклик стал более слабым. Для многослойного персептрона этот эффект наблюдается, только при очень незначительных искажениях.

Рисунок 17. Устойчивость сверточной сети к искажениям

Заключение

В рамках данной курсовой работы были рассмотрены преимущества и основы функционирования сверточных нейронных сетей, проведен ряд исследований влияния различных характеристик сети на качество работы, а также проведено сравнение результатов работы данного типа сетей и сети типа многослойный персептрон.

Автором был реализован специальный модуль для работы со сверточными нейронными сетями. Результаты тестирования данного модуля показали хорошую обобщающую способность сети и инвариантность к незначительным искажениям входных изображений. Это обусловило правильность применения данного типа сети к задаче «Определения пола и возраста человека по фотографии лица».

В дальнейшем продвижении проекта планируется, реализация иерархической структуры каскада сетей, для определения сразу нескольких биометрических параметров, тестирование и определение наилучшей результативности при различных связях нейросетей друг с другом.

Список использованных источников

1. Каллан Роберт. Основные концепции нейронных сетей.: Пер. с англ. — М.: Издательский дом «Вильямс», 2001. — 287 с.: ил. — Парал. тит. англ.

2. Круглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. — 2-е изд., стереотип. — М.: Горячая линия — Телеком, 2002. — 382 с.: ил.

3. Лафоре Роберт. Объектно-ориентированное программирование в C++, 4-е издание.: Пер. с англ. — М.: Издательский дом «Питер», 2004. — 923 с.: ил.

4. Макаренко А. А., Калайда В. Т. Методика локализации изображения лица для систем видеоконтроля на основе нейронной сети // Известия Томского политехнического университета. — 2006. -Т. 309. -№ 8.

5. Осовский С. Нейронные сети для обработки информации / Пер. с польского И. Д. Рудинского. — М.: Финансы и статистика, 2002. — 344 с.: ил.

6. Подлесный С. Распознавание лиц человеческим мозгом: 19 фактов, о которых должны знать исследователи компьютерного зрения: [Электронный ресурс]. URL: http: //habrahabr. ru/post/136 483/ (Дата обращения: 01. 05. 2013).

7. Прохоров В. Г. Использование сверточных сетей для распознавания рукописных цифр // Проблеми програмування. — 2008. -№ 2−2. Спеціальний випуск.

8. Солдатова О. П., Гаршин А. А. Применение сверточной нейронной сети для распознавания цифр // Компьютерная оптика. — 2006. -Т. 34. -№ 2.

9. Хайкин Саймон. Нейронные сети: полный курс, 2-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2001. — 1104 с.: ил. — Парал. тит. англ.

Показать Свернуть
Заполнить форму текущей работой