Реализация искусственных нейронных сетей на основе TensorFlow
Введение
Понятие нейросеть прочно вошло в жизнь человека. Начиная с 1943 г. нейронные сети стали предметом для исследований. Первая модель нейронной сети была разработана У. Маккалоком и У. Питтсом на основе математических алгоритмов и теории деятельности головного мозга. На данный момент нейронные сети можно встретить практически повсюду, начиная с поисковых систем заканчивая исследованиями в области медицины. Основными сферами применения нейросетей являются: медицина, робототехника, экономика, бизнес, интернет, связь, безопасность, охранные системы, автоматизация производства, авионика, работа с информацией. Основной идеей, которую преследуют ученые при создании искусственных нейронных сетей является построение сети, которая подобно человеческому мозгу способна выполнять определенные действия самостоятельно. Среди обычных пользователей большой интерес вызывают нейросети, способные работать с фотографиями и изображениями. К ним относятся нейросети, распознающие образы на фотографии, изменяющие или заменяющие отдельные объекты, нейросети-художники, способные создать картинку по описанию или стилизовать изображение под определенный художественный стиль.
Целью курсовой работы является: разработка искусственной нейронной сети на основе TensorFlow и Keras, переносящей художественный стиль на необходимое фото или изображение.
Для реализации цели были поставлены следующие задачи:
1. Изучить понятие нейронных сетей, структуру и классификации нейросетей.
2. Провести анализ возможностей нейронных сетей
3. Изучить инструменты, необходимые для реализации нейросети
4. Обучить готовую нейросеть
5. Исследовать и оценить полученную нейросеть
Содержание
Введение 3
1. Определение и характеристики нейронных сетей 4
1.1. Понятие нейронной сети 4
1.2. Структура нейронной сети 5
1.3. Классификация нейронных сетей 7
1.4. Виды нейросетей 8
2. Анализ возможностей искусственной нейронной сети 10
2.1. Возможности нейронных сетей 10
2.2. Области применения нейросетей 11
3. Программные средства для реализации искусственных нейронных сетей 13
4. Образом и анализ TensorFlow и Keras 19
4.1. Обзор библиотеки TensorFlow 19
4.2. Фреймворк Keras 20
5. Реализация нейронной передачи стиля на основе TensorFlow и Keras 21
6. Оценка качества 26
6.1. Разработка тестов и критериев оценки работы нейросети 26
6.2. Оценка качества разработки нейросети 27
Заключение 29
Литература 30
Приложение 1 31
Приложение 2 37
Литература
1. Гафаров, Ф. М., Галимянов, А. Ф. Искусственные нейронные сети и приложения: учеб. пособие. [Электронный ресурс] / Ф.М. Гафаров А.Ф. Галимянов, учебное пособие, Изд-во Казанского ун-та, Казань, 2018. URL: https://kpfu.ru/staff_files/F1493580427/NejronGafGal.pdf
2. Нейронные сети, перцептрон. [Электронный ресурс] / Университет ИТМО, 2019. URL: https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон&action=info
3. Передача нейронного стиля. [Электронный ресурс] / Университет ИТМО, 2019. URL: https://neerc.ifmo.ru/wiki/index.php?title=Neural_Style_Transfer
4. Царегородцев, В. Г., Искусственные нейронные сети - введение в тему. [Электронный ресурс] / В. Г. Царегородцев, 2003. URL: http://www.neuropro.ru/neu.shtml
5. Шолле, Ф. Глубокое обучение на Python. / Ф. Шолле. СПб.: Питер, 2018 - 400 с.: ил.
6. Abadi, M., Barham, P., Chen, J. et al TensorFlow: A System for Large-Scale Machine Learning [Электронный ресурс] / M. Abadi, etc, Savannah, GA, USA, 2016. URL: https://www.usenix.org/system/files/conference/osdi16/osdi16-abadi.pdf
7. Gatys, L. A., Ecker, A. S., Bethge, M. A neural algorithm of artistic style. [Электронный ресурс] / L. A. Gatys, A. S. Ecker, M. Bethge, 2015. URL: https://arxiv.org/pdf/1508.06576.pdf
8. Kothari, A. Top 9 Frameworks in the AI World. [Электронный ресурс] / A. Kothari, 2022. URL: https://geekflare.com/ai-frameworks/
После оформления необходимых функций, заранее подготовим карты признаков для исходного изображения и изображения стиля. Далее вычисляем функцию общей потери на каждой итерации. С помощью алгоритма градиентного спуска мы будем формировать стилизованное изображение на каждой итерации. В первую очередь мы вычисляем значение потерь, затем, с помощью градиентного спуска мы автоматически вычисляем производные для каждой потери на каждом шаге. Заметим, что потери вычисляются в области объекта GradientTape, что позволяет записывать все величины на каждом нейроне сети, в момент обработки изображения. Данные значения далее используются при вычислении градиента для пикселей, так как пиксели в этом случае являются изменяемыми параметрами. Ограничив значения пикселей минимальным и максимальным значением, определяем лучшее полученное изображение и наименьшие потери. Кроме того, для алгоритма градиентного спуска необходимо использовать оптимизатор для минимизации потерь при переносе стиля. Для этого был выбран AdamOptimizer, так как он является методом адаптивной скорости обучения и не требует искусственной регулировки скорости обучения. Таким образом, после выполнения полного алгоритма, мы получаем стилизованное изображение в соответствии с заданным стилем.