ENG
ДонНТУ   Портал магистров

Реферат по теме выпускной работы

При написании данного реферата магистерская работа ещё не завершена. Окончательное завершение: июнь 2024 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.

Содержание

Введение

Несмотря на достигнутые в последние годы успехи в реализации компьютерного зрения, по-прежнему есть ряд нерешённых проблем в этой области. Основные трудности компьютерного распознавания лиц, которые необходимо преодолеть, состоят в том, чтобы распознавать человека по изображению лица независимо от изменения ракурса и условий освещённости при съёмке [1]. Кроме того, с каждым годом технологии компьютерного зрения стали находить всё больше применений в различных отраслях индустрии и повседневной жизни.

В настоящее время большие перспективы в решении данных проблем связывают с применением глубоких нейронных сетей. К этому классу относится многослойная свёрточная нейронная сеть (Convolutional Neural Network) [2,3].

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

1. Актуальность темы

Технологии распознавания лиц развиваются уже достаточно давно, но за последние годы произошёл существенный скачок в области разработки и обучения нейронных сетей [4]. В настоящее время большие перспективы в решении задач распознавания связывают с применением глубоких нейронных сетей, которые успешно используются, например, в известных системах распознавания лиц: FaceNet [5], Face ID на iPhone, DeepFace от Facebook, Face++ от китайской компании Megvii [6] и др. Тем не менее, компьютерному зрению ещё далеко до уровня живого человека, однако в настоящее время системы такого класса целесообразно разрабатывать и применять для решения каких-то узких точечных задач.

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

2. Цель и задачи исследования

Целью исследования является изучение свёрточных нейронных сетей, методов обучения, а также изучение и исследование свёрточной нейронной сети VGGFace.

Задачами исследования являются:

  • исследование свёрточных нейронных сетей;
  • исследование обучения свёрточных нейронных сетей;
  • исследование архитектуры свёрточной нейронной сети VGGFace.

    3. Обзор исследований и разработок

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

    3.1 Обзор международных источников

    В статье Mei Wang и Weihong Deng под названием Deep Face Recognition: A Survey [8], в данной статье представлен всесторонний обзор последних разработок в области обучения глубоких нейронных сетей распознавания лиц, охватывающий широкую тематику алгоритмов, баз данных, протоколов и сфер применения.

    Книга Michael Nielsen под названием Neural Networks and Deep Learning [9]. В ней описываются основные концепции нейронных сетей, включая современные методы глубокого обучения, а также предоставляется основа для написания собственных программ и систем по распознаванию образов.

    Книга Саймона Хайкина, Нейронные сети. Полный курс. Второе издание [10], в которой рассматриваются основные парадигмы искусственных нейронных сетей, а также анализируется роль нейронных сетей при решении задач распознавания образов, управления и обработки сигналов.

    3.2 Обзор национальных источников

    Статья от Александра Вебере, Технология распознавания лиц: принцип работы и актуальность [4], в которой рассказывается об развитии технологии распознавания лиц, по какой схеме работает распознавание, об практических реализациях системы в различных отраслях, а также об применении технологий распознавания лиц в бизнесе.

    Книга Учебник по машинному обучению от Школы анализа данных [11], в которой описывается классическая теория и тонкости реализации алгоритмов, связанных с машинным обучением и различными нейронными сетями.

    3.3 Обзор локальных источников

    Научная статья Федяева О.И., Махно Ю.С., Система распознавания зашумлённых и искажённых графических образов на основе нейронной сети типа неокогнитрон [1], в которой представленная и описана модель искусственной нейронной сети для распознавания графических образов при наличии различного вида искажений.

    Научная статья Федяев О.И., Коломойцева И.А. Автоматическая регистрация присутствия студентов на учебном занятии с помощью компьютерного зрения [7].

    Среди работ магистров ДонНТУ хотелось бы отметить схожую по теме статью Колбасова С.Ю., Сорокина Р.А., Решение проблемы распознавания образов при помощи свёрточных нейронных сетей [12], которая посвящена обзору решения проблемы распознавания образов при помощи свёрточных нейронных сетей.

    4. Распознавание образов при помощи свёрточных нейронных сетей

    4.1 Архитектура свёрточной нейронной сети

    Сверточная нейронная сеть – это класс искусственных нейронных сетей, которые используют свёрточные слои для фильтрации входных данных для получения полезной информации. Операция свертки предполагает объединение входных данных с ядром свертки для формирования преобразованной карты признаков. Фильтры в сверточных слоях изменяются на основе изученных параметров, чтобы извлечь наиболее полезную информацию для конкретной задачи. Сверточные сети автоматически настраиваются для поиска наилучшей характеристики в зависимости от задачи. Данная сеть фильтрует информацию о форме объекта при решении общей задачи распознавания объектов, например, может извлечь цвет птицы при решении задачи распознавания птиц. Это основано на понимании того, что разные классы объектов имеют разную форму, но разные типы птиц чаще отличаются по цвету, чем по форме.

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

    Она состоит из нескольких слоев, каждый из которых выполняет свою функцию:

    1. Слой свертки – производит свертку входных данных c фильтром для создания карт признаков. Фильтры могут обнаруживать различные характеристики изображения, например, линии, углы и текстуры.
    2. Слой объединения – сокращает размер карт признаков, сохраняя при этом наиболее значимые характеристики.
    3. Слой активации – вводит нелинейность в модель, что делает ее более гибкой и способной к обработке сложных данных.
    4. Полносвязный слой – получает карту признаков и сжимает ее в одномерный массив, который передается на последующий слой.
    5. Выходной слой – вычисляет вывод модели.

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

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

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

    Модули ввода в сверточной нейронной сети позволяют создавать более глубокие и большие слои сверток, одновременно ускоряя вычисления. Это достигается за счет использования сверток 1×1 с небольшим размером карты признаков, например, 192 карты признаков размером 28×28 можно уменьшить до 64 карт признаков размером 28×28 с помощью 64 сверток 1×1. Благодаря уменьшенному размеру эти свертки 1×1 могут быть дополнены более крупными свертками размером 3×3 и 5×5. В дополнение к свертке 1×1 для уменьшения размерности можно также использовать максимальное объединение. На выходе начального модуля все большие свертки объединяются в большую карту признаков, которая затем поступает на следующий слой (см. рис. 1) [13].

    Архитектура свёрточной нейроной сети

    Рисунок 1 – Архитектура свёрточной нейроной сети

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

    Модули ввода в нейронной сети позволяют создавать более глубокие и большие слои сверток, одновременно ускоряя вычисления. Это достигается за счет использования сверток 1×1 с небольшим размером карты признаков, например, 192 карты признаков размером 28×28 можно уменьшить до 64 карт признаков размером 28×28 с помощью 64 сверток 1×1. Благодаря уменьшенному размеру эти свертки 1×1 могут быть дополнены более крупными свертками размером 3×3 и 5×5. В дополнение к свертке 1×1 для уменьшения размерности можно также использовать максимальное объединение. На выходе начального модуля все большие свертки объединяются в большую карту признаков, которая затем поступает на следующий слой, или же начальный модуль.

    Одним из плюсов сверточной нейронной сети является пулинг. Пулинг – это процедура, которая уменьшает входные данные в определенной области до одного значения. В сверточных нейронных сетях такая концентрация информации обеспечивает аналогичную информацию для исходящих соединений с меньшим потреблением памяти. Пулинг обеспечивает базовую инвариантность к поворотам и переводам и улучшает способность сверточных сетей к обнаружению объектов. Например, лицо на участке изображения, которое находится не в центре изображения, а немного смещено, все равно может быть обнаружено сверточными фильтрами, поскольку информация попадает в нужное место благодаря операции объединения. Чем больше размер области объединения, тем больше информации сжимается, что приводит к созданию тонких сетей, которые легче помещаются в памяти GPU. Однако если область объединения слишком велика, слишком много информации отбрасывается, и производительность прогнозирования снижается [9].

    4.2 Обучение свёрточной нейронной сети

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

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

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

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

    где, Ep – величина функции ошибки для образа p; tpj – желаемый выход нейрона j для образа p; ypj – активированный выход нейрона j для образа p. Неактивированное состояние каждого нейрона j для образа p записывается в виде взвешенной суммы по формуле:

    где, Spj – взвешенная сумма выходов связанных нейронов предыдущего слоя на вес связи, по-другому еще обозначается как неактивированное состояние нейрона j для образа p; wij – вес связи между i и j нейронами; ypi – активированный состояние нейрона j предыдущего слоя образа p. Выход каждого нейрона j является значением активационной функции fj, которая переводит нейрон в активированное состояние. В качестве функции активации может использоваться любая непрерывно дифференцируемая монотонная функция. Активированное состояние нейрона вычисляется по следйющей формуле:

    где, ypj – активированное состояние нейрона j для образа p; fj – функция активации; Spj – неактивированное состояние нейрона j для образа p. В качестве метода минимизации ошибки используется метод градиентного спуска, суть этого метода сводится к поиску минимума или же максимума функции за счет движения вдоль вектора градиента. Для поиска минимума движение должно осуществляться в направлении антиградиента. Градиент функции потери представляет из себя вектор частных производных, который вычисляется по формуле:

    где, E(W)– градиент функции потери от матрицы весов; dE/dw – частная производная функции ошибки по весу нейрона; n – общее количество весов сети. А производную функции ошибки по конкретному образу можно записать по правилу цепочки.

    где, ∂E/∂wij – значение производной функции ошибки по весу wij, между i и j нейронами; ∂E/∂yj – ошибка нейрона j; ∂yj/∂Sj – значение производной функции активации по ее аргументу для нейрона j; ∂Sj/∂wij – выход i нейрона предыдущего слоя, по отношению к нейрону j. Суть алгоритма обратного распространение ошибки заключается в последовательном вычислении ошибок скрытых слоев с помощью значений ошибки выходного слоя, значения ошибки распространяются по сети в обратном направлении от выхода к входу. Ошибка для скрытого слоя рассчитывается по формуле:

    где, ∂yi)/∂Si – значение производной функции активации по ее аргументу для нейрона j; δi – ошибка нейрона i скрытого слоя; δj – ошибка нейрона j следующего слоя; wij – вес связи между нейроном i текущего скрытого слоя и нейроном j выходного или точно такого же слоя [15].

    В качестве примера обучения нейронной сети можно привести распознавание знака (см. рис. 2). Входное изображение дорожного знака фильтруется 4 сверточными ядрами 5×5, которые создают 4 карты признаков, эти карты признаков подвергаются субдискретизации путем максимального объединения. Следующий слой применяет 10 сверточных ядер 5×5 к этим поддискретизированным изображениям и снова объединяет карты признаков. Последний слой – это полностью связный слой, где все сгенерированные признаки объединяются и используются в классификаторе, по сути, логистической регрессии.

    Распознавание дорожного знака

    Рисунок 2 – Распознавание дорожного знака

    Рисунок анимирован. количество повторов равно 10, длительность одного составляет 90мс, размер 75,4 кБайт

    4.3 Архитектура свёрточной нейронной сети VGGFace

    Распознавание лиц в этой системе осуществляется с помощью многослойной свёрточной нейронной сетью VGGFace, которая является модификацией более ранней модели VGG16, разработанной в 2013 году специалистами K. Simonyan и A. Zisserman из Оксфордского университета [16]. Так как модель VGGFace является предобученной нейронной сетью, то возникает естественный вопрос - насколько качественно она будет распознавать студентов, лица которых не участвовали в её обучении.

    Многослойная архитектура VGGFace состоит из свёрточных слоёв (convolution layers) и субдискретизирующих слоёв (subsampling layers или pooling layers, слоёв подвыборки), которые чередуются друг с другом (см. рис. 3).

    Структура многослойной нейронной сети VGGFace

    Рисунок 3 – Структура многослойной нейронной сети VGGFace

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

    где А – матрица размером (nx × ny); В – матрица (ядро свёртки) размера (mx × my); С – результирующая матрица размера [(nx-mx+1)×(ny-my+1)]; i=1,2,…, nx-mx+1; j=1,2,…, ny-my+1, f() – функция активации. Подвыборочный слой также как свёрточный имеет карты, но их количество совпадает с предыдущим (свёрточным) слоем. Его задача – уменьшить размерность карт предыдущего слоя.

    Для выработки признаков лица свёрточная нейронная сеть предварительно была обучена её создателями на примерах фотографий 2622-х человек (по 1000 фотографий на человека) [7, 16]. Сеть настроена на классификацию распознаваемого лица, используя в качестве классов лица из обучающего множества. Поэтому результатом работы сети является 2622-мерный вектор, каждый элемент которого представляет собой вероятность сходства лица с одним из обучающего множества. Считается, что два изображения лица относятся к одному человеку, если они в одинаковой мере похожи на каждое лицо из обучающего множества. Для этого вектора признаков этих изображений в пространстве лиц из обучающего множества должны образовывать между собой достаточно острый угол.

    Заключение

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

    Так как свёрточная нейронная сеть хорошо себя зарекомендовала в проектах Google (для поиска среди фотографий пользователя), Amazon (для генерации рекомендаций товаров), Pinterest (для персонализации домашней страницы пользователя), её можно эффективно использовать для построения различных систем компьютерного зрения, в том числе и в системе визуального контроля присутствия студентов в аудитории на основе глубокой нейронной сети.

    Список источников

    1. Федяев О.И., Махно Ю.С. Система распознавания зашумлённых и искажённых графических образов на основе нейронной сети типа неокогнитрон // Одиннадцатая национальная конференция по искусственному интеллекту с международным участием КИИ-2008: Труды конференции. Т. 3. – М.: ЛЕНАНД, 2008. – С. 75–83.
    2. Гудфеллоу Я., Бенджио И., Курвилль А. Глубокое обучение / пер. с анг. А.А.Слинкина. – 2-е изд., испр. – М.: ДМК Пресс, 2018. – 652 с.
    3. Le Cunn Y, Bengio Y. Convolutional neural networks for Images, Speech and Time Series, AT&T Laboratories, 1995. – Р. 1 – 14.
    4. Блог Faceter. Технология распознавания лиц: принцип работы и актуальность [Электронный ресурс] / Интернет-ресурс. Режим доступа: https://faceter.cam/ru/blog/.... – Загл. с экрана.
    5. FaceNet — пример простой системы распознавания лиц с открытым кодом Github [Электронный ресурс] / Интернет-ресурс. Режим доступа: https://neurohive.io/ru/tutorial/.... – Загл. с экрана.
    6. Training Data. Распознавание лиц для машинного обучения технологии, процесс обучения [Электронный ресурс] / Интернет-ресурс. Режим доступа: https://trainingdata.solutions/metodic/.... – Загл. с экрана.
    7. Федяев О.И., Коломойцева И.А. Автоматическая регистрация присутствия студентов на учебном занятии с помощью компьютерного зрения // XXI Национальная конференция по искусственному интеллекту с международным участием КИИ-2023 (Смоленск, 16-20 октября 2023 г.). Труды конференции. В 2-х томах. Т.1. – Смоленск: Принт-Экспресс, 2023. – С. 294-303.
    8. Mei Wang, Weihong Deng. Deep Face Recognition: A Survey, National Key R&D Program of China and BUPT Excellent Ph.D. Students Foundation, 2020. – P. 1 – 31.
    9. Nielsen, Michael “Deep Learning”. Neural Networks and Deep Learning, 2017. – P.1 – 224.
    10. Хайкин С. Нейронные сети. Полный курс. Второе издание [Текст] / Саймон Хайкин // Издательский дом «Вильямс», 2006. – С. 1104
    11. Учебник по машинному обучению. Школа анализа данных [Электронный ресурс] / Интернет-ресурс. Режим доступа: https://education.yandex.ru.... – Загл. с экрана.
    12. Решение проблемы распознавания образов при помощи свёрточных нейронных сетей // Материалы Х Международной научно-технической конференции Информатика, управляющие системы, математическое и компьютерное моделирование (ИУСМКМ - 2019) - Донецк: ДонНТУ, 2019. - с. 111-114.
    13. Сверточные нейронные сети. NVIDIA DEVELOPER [Электронный ресурс]. – Режим доступа: https://developer.nvidia.com/discover/.... – Загл. с экрана.
    14. Искусственная нейронная сеть. NVIDIA DEVELOPER [Электронный ресурс]. – Режим доступа: https://developer.nvidia.com/discover/.... – Загл. с экрана.
    15. Обратное распространение в сверточных нейронных сетях. DeepGrid [Электронный ресурс]. – Режим доступа: https://www.jefkine.com/general/.... – Загл. с экрана.
    16. Blog. Great Learning. Introduction to VGG16 | What is VGG16? [Электронный ресурс]. - Режим доступа: https://www.mygreatlearning.com/blog/.... – Загл. с экрана.