Разработка прототипа интеллектуальной системы для анализа и классификации загружаемых изображений
ВВЕДЕНИЕ
Нейронные сети – это тренд в развитии cиcтeм искусственного интеллекта. Сама их концепция похожа на «нервную систему человека». То есть, они способны обучаться и исправлять совершенные ошибки. Как правило, все нейронные сети действуют исходя из прошлого опыта и с течением времени делает все меньше ошибок.Нейронная сеть включает в себя множество отдельных вычислительных элементов (нейронов), объединенных в общую сеть. При этом в большинстве случаев каждый нейрон принадлежит к одному из сетевых слоев. Данные обрабатываются последовательно на каждом уровне. Кроме этого, отличия между нейронной сетью и другими алгоритмами машинного обучения состоят в том, что они могут решать схожие проблемы.Когда растет популярность нейросетей, появляются новые проблемы для решения при использовании сетей. Кроме того, возникает широкий спектр нейронных сетей: сверточные и рекуррентные, разнообразие их структур и алгоритмов.
ВВЕДЕНИЕ 3
Актуальность дипломной работы 3
Цель и задачи дипломного проекта. 4
Глава 1. Теоретические основы сверточных нейронных сетей 5
1.1. Изучение необходимых методов и элементов нейронных сетей 6
1.1.1. Оценочная функция 6
1.1.2. Функция потерь 8
1.1.3. Оптимизация: стохастический градиентный спуск 11
1.2. Разбор особенностей построения CNN и их преимуществ 14
1.2.1. Сверточный слой 16
1.2.2. Слой объединения 23
1.2.3. Техника исключения 26
1.2.4. Типовые шаблоны слоёв ConvNet 27
1.2.5. Принципы установки параметров 28
1.2.6. Метод адаптивного обучения по параметру скорость обучения 28 Глава 2. Подготовка инструментов для работы 30
2.1. Используемые программные средства и технологи 30
2.2. Подготовка программной среды разработки 32
Глава 3. Создание и обучение сверточной нейронной сети 33
Глава 4. Описание работы созданного на Django клиент-серверного приложения 39
ЗАКЛЮЧЕНИЕ 45
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 47
ПРИЛОЖЕНИЯ 48
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Хайкин, С., Нейронные сети: полный курс, 2-е изд., испр.: Пер. с англ./С. Хайкин – М.: ООО “И. Д. Вильямс”, 2006. – 1104 с.
James, G., An Introduction to Statistical Learning: with Applications in R (Springer Texts in Statistics)/ G. James, D. Witten, T. Hastie, R. Tibshirani, 2013. – 441 c.
Bishop, C. M. Neural networks for pattern recognition / C. M. Bishop – CLARENDON PRESS – Oxford, 1995. – 498 c.
Goodfellow, I., Deep Learning (Adaptive Computation and Machine Learning series)/ I. Goodfellow, Y. Bengio, A. Courville - The MIT Press (November 18, 2016). – 800 с.
Шоле, Ф., Глубокое обучение на Python. – СПб.: Питер, 2018. – 400 с.: ил. – (Серия «Библиотека программиста»)
Дронов, В.А., Django 2.1 Практика создания веб-сайтов на Python. – СПб.: БХВ-Петербург, 2019. – 672 с.: ил. – (Профессиональное программирование)
Жерон, О., Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow: Пер. С англ. – Спб.: ООО «Альфа-книга», 2018. – 688 с.
Stanford CS class CS231n: Convolutional Neural Networks for Visual Recognitionnotes[Электронныйресурс]–Режимдоступа: http://cs231n.github.io/ , свободный.
Keras Documentation [Электронный ресурс] – Режим доступа: https://keras.io/ , свободный.
TensorFlow Documentation [Электронный ресурс] – Режим доступа: https://www.tensorflow.org/, свободный.
Параметры слоя CONV состоят из набора обучаемых фильтров. У каждого фильтра малые ширина и высота (фильтр мал пространственно), но каждый проходит через всю глубину входного пространства. Например, типичный фильтр на первом слое ConvNet может иметь размер 5x5x3 (т. е. ширину и высоту 5 пикселей и 3, поскольку изображения имеют глубину 3, цветные каналы). Во время прямого прохода перемещаем (свертываем) каждый фильтр по ширине и высоте входного пространства и вычисляем скалярные произведения между значениями фильтра и входом во всех положениях. Когда мы перемещаем фильтр по ширине и высоте входного пространства, мы создаём двумерную карту активации, дающую ответы этого фильтра в каждом пространственном положении. Интуитивно, сеть начнет обучать фильтры, которые будут активироваться, когда они видят какие-либо визуальные объекты, такие как ребро некоторой ориентации или пятно некоторого цвета на первых слоях, или в итоге целые объекты на более высоких слоях сети. Для каждого слоя CONV будет настраиваться целый набор фильтров (например, 12 фильтров), и каждый из них будет создавать отдельную двухмерную карту активации. Мы складываем эти карты активации по глубине, и создается выходное пространство.