ВВЕДЕНИЕ 4
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 7
1.1. Анализ аналогичных проектов 7
1.2. Анализ существующих решений для реализации проекта 9
1.2.1. Анализ алгоритмов выделения контуров 10
1.2.2. Анализ программных решений 12
2. ПРОЕКТИРОВАНИЕ 14
2.1. Сверточные нейронные сети 14
2.2. Генеративно-состязательные нейронные сети 16
2.3. Функциональные и нефункциональные требования 17
2.5. Варианты использования системы 18
2.5 Общее описание архитектуры системы 19
2.6. Описание компонентов, входящих в систему 21
2.7 Реализация архитектуры системы 22
3. РЕАЛИЗАЦИЯ 24
3.1. Средства разработки 24
3.2. Формирование обучающей выборки 24
3.3. Топология нейронной сети 26
3.4. Реализация нейронной сети 28
3.5. Реализация чат-бота 30
4. ТЕСТИРОВАНИЕ 32
ЗАКЛЮЧЕНИЕ 35
ЛИТЕРАТУРА 36
Основные определения
Нейронные сети - математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей - сетей нервных клеток живого организма [11].
Генеративно-состязательная нейронная сеть (Generative Adversarial Networks, GAN) - алгоритм машинного обучения, работа которого строится на основе двух «соперничающих» нейронных сетей. Принцип алгоритма заключается в том, что одна из этих сетей, называемая генератором, пытается сгенерировать определенные образцы (например, изображения, видео или любые другие данные, на генерацию которых она запрограммирована), а другая сеть, называемая дискриминатором, старается решить, является ли представленный ей образец настоящим или сгенерированным. Задачей генератора является производство таких образцов, которые дискриминатор сочтет настоящими, в то время как задача дискриминатора противоположна - он должен отбраковать сгенерированные образцы [3].
U-net - это сверточная нейронная сеть, которая была создана в 2015 году для сегментации изображений. Архитектура сети представляет собой полносвязную сверточную сеть, модифицированную так, чтобы она могла работать с меньшим количеством примеров и делала более точную сегментацию. Сеть содержит сжимающий путь (слева) и расширяющий путь (справа). [8]
Актуальность темы исследования
В последние несколько лет интерес к изучению нейронных сетей очень возрос. Они успешно применяются для решения многих задач: распознавание речи, обнаружение объектов, распознавание образов.
Нейронные сети зарекомендовали себя в таких областях, как медицина, компьютерное зрение, производство, прогнозирование и моделирование различных процессов человеческой деятельности. Но в областях, которые связаны с творческой деятельностью, нейронные сети применяются мало. Наиболее развитой областью является различного рода работа с изображениями.
Генерация изображений с помощью генеративно-состязательных сетей очень перспективна и найдет применение во многих областях. Например, можно использовать данную технологию для увеличения количества изображений в обучающих выборках, также можно улучшать качество изображений и видеопотоков. Также изображения, которые полностью сгенерированы искусственным интеллектом, перспективны в современном искусстве. Поэтому на данный момент одной из наиболее актуальных задач искусственного интеллекта является машинное творчество.
Цель и задачи исследования
Целью данной работы является разработка приложения, для генерации изображений из набросков пользователя с применением нейросетевых технологий. Для достижения поставленной цели необходимо выполнить следующие задачи.
1) Провести обзор существующих аналогов и научной литературы по заданной предметной области.
2) Подготовить обучающую и тестовую выборку изображений.
3) Программно реализовать и обучить нейронную сеть.
4) Провести тестирование реализованной нейронной сети.
5) Разработать приложение, генерирующее изображения и провести его тестирование.
Структура и объем работы
Работа состоит из введения, 4 разделов, заключения, библиографии и приложения. Объем работы составляет 37 страниц, объем библиографии составляет 16 источников.
В первой главе приводится анализ предметной области, обзор аналогов, а также существующих решений поставленной задачи.
Во второй главе содержится описание архитектуры нейронной сети, приведены функциональные и нефункциональные требования к системе, диаграмма вариантов, а также спецификация.
В третьей главе содержится описание процесса разработки приложения.
В четвертой главе приведены результаты тестирования системы.
В заключении описываются результаты проделанной работы, а также направления дальнейших исследований.
Была разработана система генерации изображений из набросков пользователя. Были проанализированы существующие методы генерации изображений. Было принято решение генерировать изображения на контурах, полученных на основе градиента, а также использовать модифицированную U-net архитектуру нейронной сети.
На основе требований к системе были выделены основные классы и компоненты системы, установлены связи между ними. Была подробно рассмотрена реализация отдельных прецедентов.
В ходе разработки системы были получены следующие результаты:
1) проведен анализ аналогов и научной литературы в предметной области;
2) реализован алгоритм предобработки данных;
3) сформированы обучающая и тестовая выборки;
4) реализована, обучена и протестирована модель нейронной сети для генерации изображений;
5) реализована и протестирована система генерации изображений.
Также были получены навыки программирования на языке Python, разработки нейронных сетей с помощью фреймворка Tensorflow, работы с библиотекой алгоритмов компьютерного зрения OpenCV, работы с библиотекой python-telegram-bot для реализации чат-бота.
В будущем планируется провести работу по улучшению качества работы Генератора. Для этого необходимо расширить обучающую выборку и скорректировать топологию нейронной сети.
На данных момент система успешно генерирует только некоторых животный. Возможно увеличить пользу системы путем добавления генерации и других объектов.