itmo_conspects

Лекция 4. Сверточные нейронные сети

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

Ядро свертки может быть тензором одномерным, двумерным, трехмерным и так далее в зависимости от размерности входных данных

Примерами свертки являются:

Фильтры

В сверточных нейросетях фильтры не задаются вручную, а обучаются под конкретную задачу


Но во время свертки появляются проблемы:

Ширина матрицы после свертки определяется так – $O = \frac{I - K + 2 P}{S} + 1$, где $I$ – ширина исходной матрицы, $K$ – размер ядра, $P$ – добавленный отступ, $S$ – шаг свёртки

Для уменьшения размерности матрицы применяют субдискретизацию (или пулинг, от pooling) – в участке матрицы выбирается одно значение в зависимости от тех, что находятся в этом участке. Применяют пулинг по среднему значению или по максимуму

Пулинг прекрасен тем, что у него нет обучаемых параметров

Свертка и пулинг

Для борьбы с переобучением в сверточных нейросетях применяют индивидуальную нормализацию (Instance normalization), где она происходит по каждому отдельному объекту

\[\mu_{ni} = \frac{1}{HW} \sum_{l=1}^{H} \sum_{m=1}^{W} x_{nilm}\]

Для увеличения изображения применяют:

Методы увеличения размерности


Популярным примером сверточной нейросети является LeNet-5, которая использовалась для распознавания рукописных цифр. Ее архитектура показывает типичную структуру CNN: чередование сверточных и субдискретизирующих слоев, затем полносвязные слои

Архитектура LeNet-5

На первых слоях сеть выделяет простые, малые признаки (края, углы, цветовые переходы). На следующих слоях из них собираются более сложные признаки (формы, части объектов), а в конце — целые объекты


Основными идеями обработки изображений в сверточных нейросетях являются:

Как рассматривалось ранее, основными задачи анализа изображения являются:

В последнее время, с развитием Интернета и технологий, тренировочных данных стало кратно больше. Если раньше надо было своими силами создавать датасеты, то сейчас для обучения можно использовать:

Самыми популярными датасетами являются:

Классификация

Для классификации применяют метрики из машинного обучения:

В качестве функции потерь используют:


Рассмотрим популярные архитектуры таких сверточных сетей:


Сейчас современные модели часто строятся по трехуровневой архитектуре:

Backbone (бекбоун, позвоночник) - сеть для извлечения признаков изображения Neck (шея) - сеть для обработки признаков разных масштабов

Head (голова) - модель для получения результата для конкретной задачи

Такая архитектура позволяет заменять голову для решения разных задач, сохраняя общий бекбоун

Три уровня