Интеллектуальное приложение для изображения объектов на электронном холсте

Колесник Николай Александрович – студент МИРЭА - Российского технологического университета.

Аннотация: В работе представлена разработка веб-приложения с использованием сверточной нейронной сети, способной классифицировать нарисованные пользователем изображения, проставляя «оценку схожести». Работа направлена на развитие различных навыков пользователя, восстановление заболеваний и их лечение, а также для развлечения.

Ключевые слова: Машинное обучение, классификация изображения, здоровье человека.

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

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

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

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

  1. Построение и настройка модели нейронной сети, алгоритмов обучения и тестирования;
  2. Разработка веб-сервера, использование служебных HTTP-методов, промежуточных обработчиков, формирующих API-интерфейс и тд;
  3. Отрисовка и формирование графического интерфейса, управление состоянием и обработка запросов веб-сервера;
  4. Работа с изображениями, перевода их из одного формата в формат более удобный для работы с нейронной сетью и тд.

Архитектура веб-приложения содержит в себе 4 главных модуля (веб-сервера): маршрутизатор запросов из браузера, графический интерфейс, сервер для работы с API приложения и сервер с нейронной сетью. При подключении к приложению веб-клиент (Браузер) отправляет запрос на получение данных (HTML, CSS, JS) для отрисовки графического интерфейса. Все запросы от веб-клиента проходят через Nginx (Маршрутизатор). Далее данный запрос обрабатывается и перенаправляется во frontend-сервер, который в свою очередь отдает все нужные данные веб-клиенту. Если приходит запрос на выдачу нового задания, то Nginx перенаправляет запрос в веб-сервер на NodeJS, который имеет доступ к этим данным и веб-серверу Python с нейронной сетью. В случае, когда требуется классифицировать рисунок и дать оценку схожести, Nginx передает запрос сначала в NodeJS, который в свою очередь перенаправляет запрос на веб-сервер Python с нейронной сетью. Успешный ответ возвращается с новым заданием, именно для этого запрос сначала проходит через сервер на NodeJS.

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

Список литературы

  1. Галушкин А.И., Цыпкин Я.З. Нейронные сети. История развития теории. Учебное пособие. – М.: , 2016. – с.
  2. Статья в электронном ресурсе habr.com «Сверточная нейронная сеть»
  3. М. Р. Богданов, Л. В. Вахидова, И. Н. Думчикова, Л. В. Миниярова. HTML5 Полный курс : учебно-методическое пособие. – : 2015. – 168 с.

Интересная статья? Поделись ей с другими: