Аннотация 2
Введение 7
1 Теоретическая часть 9
1.1 Задачи классификации и сегментации 9
1.2 Математическое описание нейронных сетей 10
1.2.1 Персептрон и нейронная сеть с прямой связью 10
1.2.2 Функции активации 12
1.2.3 Методы обучения 13
1.2.4 Обратное распространение ошибки 14
1.3 Релевантные архитектуры сетей 17
1.3.1 Остаточные нейронные сети 17
1.3.2 Свёрточные нейронные сети 19
1.3.3 Разделяемая по глубине свёртка 21
1.4 Архитектура Xception 22
1.4.1 Слой общей субдискредитации с функцией среднего 22
1.4.2 Слой пакетной нормализации 23
1.4.3 Слой логистической регрессии 24
1.5 Методы решения задачи сегментации 24
1.5.1 Классический подход. Условное случайное поле 24
1.5.2 Нейронные сети 27
1.5.3 Функции потери 32
2. Практическая часть 35
2.1. Классификация изображений с помощью сети Xception 35
2.1.1 Подгрузка библиотек и ресурсов 35
2.1.2 Организация набора данных для сети 36
2.1.3 Обучение сети 39
2.1.4 Тестирование сети 42
2.1.5 Анализ результатов 43
2.2 Решение задачи сегментации с помощью сети U-net 47
2.2.1 Подгрузка библиотек и ресурсов 47
2.2.2 Подготовка данных 48
2.2.3 Обучение сети 50
2.2.4 Эксперименты с устройством сети 54
2.2.5 Анализ результатов 55
Заключение 60
Список использованных источников и литературы 62
На сегодняшний день машинное обучение быстро развивается и затрагивает самые разные области жизни. Нейронные сети - чрезвычайно гибкие инструменты обобщения данных. Более всего это видно в области распознавания изображений, которая получила своё развитие с изобретением свёрточных нейронных сетей. В области распознавания изображений на данный момент актуальна задача понимания композиции сцены. Подобная задача выполняется человеком без усилий, однако создание алгоритма с подобным уровнем восприятия - комплексная задача.
К решению этой задачи подходят по-разному. Неплохое понимание сцены можно получить определением объектов, которые расположены на изображении. Такой подход называется классификацией изображений.
Обнаружение объектов предполагает наложение ограничевающей рамки на каждый объект каждого известного класса, найденный на изображении.
Сегментация стремится к более точному обнаружению объектов и заключается в попиксельном определении границ объектов, создавая маску изображения. Практическое применение сегментации позволяет компьютеру извлекать информацию из реальных ситуаций и использовать её для решения поставленных задач.
Целью данной работы стало изучение применения нейронных сетей для решения задач классификации и сегментации изображений. Для достижения этой цели были поставлены следующие задачи:
1. Изучение принципов работы нейронных сетей, составление их математического описания;
2. Изучение языка программирования python;
3. Написание классификатора на основе архитектуры Xception;
4. Изучение методов решения задачи сегменатации;
5. Написание сети пригодной для решения задачи сегментации на основе архитектуры U-net;
6. Проведение экспериментов со структурой и гиперпараметрами сетей;
7. Анализ результатов экспериментов.
В работе описаны основные принципы работы нейронных сетей и методы их обучения, изучены распространённые методы решения задачи сегментации. Подробно разобраны архитектуры Xception и U-net, а так же составляющие их типы сетей.
Классификатор на основе Xception при обучении до седьмой эпохи смог достичь точности определения класса объекта в 97% по метрике отношения количества правильных предположений сети к общему числу предположений.
Сеть на основе U-net при обучении до тридцатой эпохи при использовании функции фокальной потери смогла достичь точности построения маски сегментации в 0,76 по метрике отношения пересечения к объединению (IoU).
С используемыми сетями проведён ряд экспериментов, по результатам которых можно сделать следующие выводы:
• изменение скорости обучения сильно сказывается на росте точности модели, так как напрямую влияет на размер шага градиентного спуска;
• размер пакетов определяет сколько шагов градиентного спуска будет произведено за тренировочную фазу и насколько близки они будут к кратчайшему направлению спуска, поэтому следует подобрать оптимальный размер пакетов, который бы обеспечил наибольшую эффективность спуска;
• параметр «снижение веса» штрафует сложность модели, из-за чего слишком большое его значение замедляет рост точности модели;
• различные оптимизаторы отличаются способами расчёта шага градиентного спуска и, как следствие, скоростью сходимости;
• область применения разделяемой по глубине свёртки ограничена размерами сети, использование её для сетей небольшого размера не приводит к положительному результату;
• Успешность обучения сильно зависит от качества набора данных, он должен обладать достаточными размерами и разнообразием примеров, чтобы сеть не переобучалась.
По материалам данной работы была написана и опубликована статья на тему «Решение задачи сегментации с использованием методов глубокого обучения» в журнале «МЕХАТРОНИКА, АВТОМАТИКА И РОБОТОТЕХНИКА».