Актуальность применения сверточной нейронной сети для решения задачи классификации эмоций на изображениях
Журнал Научные высказывания

Актуальность применения сверточной нейронной сети для решения задачи классификации эмоций на изображениях

В рамках данной работы рассматривается актуальность применения сверточной нейронной сети для решения задачи классификации эмоций на изображениях. Представлена актуальность исследования в данной области. Приведено описание и структура сверточной нейронной сети, даны сведения о её слоях, таких как сверточный слой и слой пуллинга. Создана модель сверточной нейронной сети для решения задачи классификации эмоций на изображениях. Основными элементами и функциями полученной модели являются: слой 2D свертки - создает ядро свертки, свертывающееся со входом слоя для получения тензора выходов, MaxPolling – реализует операцию максимальной подвыборки для пространственных данных, Dropout – для уменьшения переобучения сети за счет предотвращения сложных коадаптаций отдельных нейронов на тренировочных данных во время обучения, слой Flatten – для конвертации входящих данных в меньшую размерность, слой Dense – для соединения каждого входа с каждым выходом посредством линейного преобразования. В результате была получена модель для решения задачи классификации эмоций на изображениях, проведена оценка ее эффективности, показавшая высокую точность. Подобная модель может быть использована специалистами, занимающимися, например, выявлением лжи при допросе подозреваемых и может применяться в комплексе с другими методами.

 

нейронная сеть
классификация эмоций
сверточная нейронная сеть
машинное обучение

Введение

Существует мнение, что ложь как социально-психологический феномен появлялась параллельно формированию речи или даже раньше. Владение приемами обмана является одним из определяющих навыков, помогающим не просто выжить в социальной среде, но и занять более высокое место в социальной иерархии. Разные источники на вопрос как часто люди лгут, дают ответы, сильно отличающиеся друг от друга. Так, одни говорят про 1 раз каждые 10 минут, другие от 10 до 200 раз в день, самые скромные говорят всего лишь об одной тысяче (примерно) в год. В любом случае, при такой регулярной практике, закономерно, что люди становятся профессионалами в области обмана других людей. А некоторые категории профессиональных преступников, особенно занимающихся мошенничеством, оттачивают это мастерство до очень высокого уровня. По этой причине возникает много споров касательно того, возможно ли достоверно распознать и идентифицировать признаки лжи [1].

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

В данной работе рассматривается разработка нейронной сети на основе сверточной архитектуры для решения данных задач. Принцип работы сверточных нейронных сетей имеет схожие черты с деятельностью коры больших полушарий головного мозга, используемой для обработки визуальных образов. В зрительной коре содержится два вида клеток: простые, которые реагируют на границы конкретной ориентации – на расположенные под различными углами прямые линии, и сложные, включаемые в работу следом за простыми [2].  Свёрточная нейронная сеть включает в себя большое количество слоёв. Первым идёт слой входного изображения, после этого сигнал передаётся через серию свёрточных слоёв. За счет чередования этих слоёв становится возможно сгруппировать карты признаков, а при переходе к каждому следующему слою карта становится меньше, но это приводит к увеличению общего количества каналов [3]. Практически это дает возможность распознавать более сложные критерии признаков. Дополнительно на выходе свёрточных слоёв сети устанавливают слой полносвязной нейронной сети, которому на вход передаются результирующие данные работы свёрточных слоёв (конечные карты признаков) [4]. В соответствии с полученной задачей классификации возможно обучение сверточной нейронной сети на распознавание паттернов изображения различного уровня, от низкого (край, цвета, текстура), до более высокого. Данный параметр задается количеством слоев в архитектуре нейронной сети [5].

Сверточный слой представляет из себя набор карт (карты признаков, представляющих собой обычные матрицы). У каждой карты есть синаптическое ядро (в разных источниках его называют по-разному: сканирующее ядро или фильтр). Оно представляет собой систему разделяемых синапсов и весов, что является одной из главных особенностей сверточной нейронной сети. Во время прямого прохода ядром по изображению создается представление из конкретной области, в итоге формируется карта активации, описывающая реакцию ядра на изображение [6].

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

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

Количество карт определяется требованиями к задаче, если взять большое количество карт, то повысится качество распознавания, но увеличится вычислительная сложность. Опираясь на анализ научных статей, в большей части случаев рекомендуется использовать отношение один к двум, таким образом, каждая карта предыдущего слоя (к примеру, у первого сверточного слоя входной является предыдущим) связывается с двумя картами сверточного слоя [9].

Не редко сверточные нейронные сети заканчиваются операцией Flatten или, другими словами, слоем глобального выбора, который преобразует в векторы карту пространственных признаков, за которыми идут слои Dense, осуществляющие регрессию или классификацию [10].

Архитектура и обучение модели

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

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

  • rotation_range - случайный поворот изображения в указанном диапазоне (0-180);
  • width_shift_range/height_shift_range - смещение изображения по ширине/высоте;
  • shear_range - случайное применение сдвигового преобразования;
  • zoom_range - увеличение/уменьшение размера изображения;
  • horizontal_flip - случайный поворот изображения вдоль горизонтали.

Стратегия заполнения пикселей после поворота или смещения по умолчанию определяется параметром fill_mode = 'nearest'.

Была создана функция для генерации новых изображений из исходных изображений подготовленного датасета - generating_pictures(img, prefix). Аргументами функции являются исходное изображение (img) и префикс, который будет присваиваться сгенерированному изображению (prefix).

Изображения должны быть преобразованы из файлов jpeg в тензоры 4-го ранга с вещественными числами. Для этого мы используется метод img_to_array модуля keras.preprocessing.image, чтобы преобразовать изображение в массив (тензор) Numpy и функцию reshape для изменения формы массива.

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

Основные элементами и функции модели:

  • Conv2D – слой 2D свертки. Этот слой создает ядро свертки, которое свертывается со входом слоя для получения тензора выходов;
  • MaxPooling2D – реализует операция максимальной подвыборки (субдискретизации) для пространственных данных.
  • Dropout - метод регуляризации искусственных нейронных сетей, предназначен для уменьшения переобучения сети за счет предотвращения сложных коадаптаций отдельных нейронов на тренировочных данных во время обучения;
  • Flatten – слой, используемый для конвертации входящих данных в меньшую размерность;
  • Dense - слой соединяющий каждый вход с каждым выходом посредством линейного преобразования.

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

Процесс обучения нейронной сети можно регулировать, используя модуль tensorflow.python.keras.callbacks, который включает в себя так называемые встроенные обратные вызовы. Были использованы следующие обратные вызовы:

  • EarlyStopping - чтобы остановить процесс обучение, если точность обучения на проверочной выборке не будет улучшаться в течение 5 эпох обучения (patience=5);
  • ReduceLROnPlateau - чтобы регулировать скорость обучения, если точность обучения на проверочной выборке не будет улучшаться в течение 2 эпох обучения (patience=2);
  • ModelCheckpoint - будем сохранять лучшую модель в ходе обучения, ориентируясь на 'val_accuracy'.

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

Обучение проводилось в течение 20 эпох. Точность увеличивалась с каждой эпохой начиная с 33% на первой до 98% на двадцатой.

На графики обучения для построенной модели (рис. 1) видно, что значение параметра accuracy близкое к 1 говорит о высокой точности модели. График параметра loss стремится к 0, что говорит о точности предсказания целевых значений.

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

Рисунок 1. Графики обучения модели (loss и accuracy)

Оценка эффективности модели

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

Подготовка данные для тестирования модели была проведена с помощью ImageDataGenerator и метода flow_from_dataframe, аналогично как это было сделано для обучающей и проверочной выборок.

Но тестовых данные не были трансформированы и перемешаны (shuffle=False), а только масштабированы с помощью параметра rescale=1./255. Параметры y_col=None и class_mode=None не определены, так как тестовые данные не имеют меток, которые определяют их класс.

Так как в качестве тестовых данных использовано всего 13 файлов, они не были разбиты на мини-пакеты, а поданы все сразу (параметр batch_size=13).

Была построена матрица ошибок для более наглядного отображения результатов предсказания на тестовых данных (рис. 2). Модель допустила три ошибки, два раза приняв эмоцию envy (зависть) за disgust (отвращение) и один раз приняв эмоцию joy (радость) за disgust (отвращение).

Рисунок 2. Матрица ошибок

Выводы

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

В ходе выполнения работы был решен ряд задач:

  1. Изучены теоретические основы построения сверточных нейронных сетей, такие как операция свертывания и применение функций активации;
  2. Проведен анализ техник регуляризации нейросетевых моделей, таких как уменьшение размера сети, добавление регуляризации весов и применение метода dropout;
  3. Подготовлен датасет для обучения модели;
  4. Модель обучена и проведена её валидация.

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

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

Список литературы
  1. С.В. Зуева, Д.В. Бахтеева. Использование искусственного интеллекта при выявлении, раскрытии, расследовании преступлений и рассмотрении уголовных дел в суде. Юрлитиформ, 2021. 206 с.
  2. Багаев И.И. Анализ понятий нейронная сеть и сверточная нейронная сеть, обучение сверточной нейросети при помощи модуля Tensorflow Математическое и программное обеспечение систем в промышленной и социальной сферах. 2020. Т. 8. № 1. С. 15-22.
  3. Петрова М.С., Швец В.В., Ешенко Р.А. Разработка метода распознавания образов при помощи объединения свёрточных и рекуррентных нейронных сетей // Научно-техническое и экономическое сотрудничество стран АТР в XXI веке. – 2021. – Т. 1. – C. 214-218.
  4. Маршалко, Д. А. Архитектура свёрточных нейронных сетей / Д. А. Маршалко, О. В. Кубанских // Ученые записки Брянского государственного университета. – 2019. – № 4(16). – С. 10-13. – EDN HOCSSF.\
  5. Васильченко К.Ф., Усов Г.М. Применение сверточных нейронных сетей в качестве инструмента объективизации диагностики шизофрении: пилотное исследование. Социальная и клиническая психиатрия. 2022. Т. 32. № 1. С. 23-27.
  6. Катасёв А.С., Ханова З.Р. Сверточные нейросетевые модели распознавания эмоций человека по фотографии. Вестник Технологического университета. 2023. Т. 26. № 4. С. 76-81.
  7. Частикова В.А., Аббасова С.С. Аспекты применения сверточных нейронных сетей при обнаружении скрытой информации в изображениях. Вестник Адыгейского государственного университета. Серия : Естественно-математические и технические науки. 2021. № 1 (276). С. 57-61.
  8. Как свёрточные нейросети имитируют работу мозга [Электронный ресурс] // URL: https://practicum.yandex.ru/blog/svertochnye-neyronnye-seti/ (Дата обращения: 26.05.2024).
  9. Сверточная нейронная сеть [Электронный ресурс] // URL:  https://habr.com/ru/articles/348000/ (Дата обращения: 26.05.2024).
  10. Шолле Ф. Глубокое обучение на Python. СПб: Питер, 2018. 400 c.