Добавил:
Да поможет вам Котельников Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТиП_Лекция_КЗ_Отчет.docx
Скачиваний:
1
Добавлен:
23.06.2024
Размер:
59.83 Кб
Скачать

5.2. Базовые слои и оптимизация

Сверточные слои — применяются в компьютерном зрении, так как не чувствительны к сдвигу и применяются не к каждому каналу по отдельности, а ко всем сразу, что экономит много ресурсов. Получается , что итоговые веса — высота свертки * ширину свертки * глубину входного канала * глубину выходного канала.

Еще одним преимуществом сверточных слоев является то, что их можно применять с зазором, то есть не ко всем кусочкам изображения, а к каждому второму. Это позволяет нам понизить размерность изображения.

Еще один способ понизить размерность изображения - разделить его на области 4*4 и брать из этой области самое высокое значение. Таким образом мы оставляем самые важные значения и выкидываем неважные.

Самая популярная промежуточная активация в компьютерном зрении — ReLU

У нее есть неприятная особенность — если на слое все признаки выдадут 0 или меньше, то активация все признаки приравняет к 0, из-за чего все признаки у следующих слоев автоматически станут равны 0.

Следующим слоем является Dropout, который создает подсети, случайно выключая активации. Выключение активации — приравнивание ее к 0.

Он нужен для регуляризации, то есть когда при реальных условиях сеть ведет себя намного хуже, чем при тестах. Но минус этого слоя — сильное замедление работы сети.

У нас получилась итоговая схема обучения:

5.3. FLOPs & FoV

У нейронных сетей есть определенный набор характеристик:

FLOPs – Floating Point Operations – количество операций, необходимых для прогона модели на одном примере. Этот параметр не прямо зависим со скоростью работы, хоть и сильно коррелирует.

FoV – этот параметр определяет, сколько признаков поучаствовало в формировании признака определенного слоя. При формировании признака слоя участвуют несколько признаков предыдущего слоя. Он помогает лучше понять архитектуру сети и ее работоспособность еще до начала обучения. Например, если мы хотим найти на изображении объект, а FoV конечного слоя нашей сети меньше размера этого объекта, то очень велика вероятность, что сеть не справится с поставленной задачей.

6. Архитектуры

6.1. VGG & BatchNorm

Первая архитектура, которую мы рассмотрим — это VGG & BatchNorm.

Она была представлена в 2014 году и представляет собой просто последовательность сверток, которые заканчиваются несколькими полносвязными слоями. Использовалась активация ReLU и Пулинг maxpool 2x2(понижение разрешения). Причем при понижении разрешения увеличивается количество каналов на наших промежуточных признаках.

У VGG есть много вариаций, например VGG 19 с 19 полновязными слоями.

Этот алгоритм показывал лучшие результаты среди VGG, его параметры занимали более 500 mb, но существенным минусом было время обучения — 3 недели.

6.2. Модели ResNet

Модели ResNet пришли на смену VGG, когда последние достигли пика своих возможностей. Суть этой модели — блоки(или слои), в которых есть несколько последовательно расположенных сверток, и в которых общий выход блока состоит из выхода последней свертки с прибавлением входа блока.

Этот метод позволяет создать сеть с 152 слоями и более устойчива к разным негативным эффектам. Благодаря этим слоям значительно сократилось время обучения сети, что является огромным плюсом ResNet.

6.3. XceptionNet & MobileNet

XceptionNet – быстрая и компактная архитектура сетей.

XceptionNet — суть архитектуры: мы так же используем блоки, но в них изначально увеличивается количество входных каналов с помощью свертки 1х1, после чего делим нашу карту признаков на большое количество более мелких. Получившиеся карты признаков мы используем в некотором количестве сверток 3х3, которые учатся независимо друг от друга, после чего формируем с их помощью 1 большой выход.

Эта архитектура сильно ускорила и сжала сеть.

6.4. MNAS

Мы рассмотрели некоторые архитектуры сетей, но как выбрать, какая из них в вашем случае будет наиболее эффективна. NAS – это автоматический выбор архитектуры сети в зависимости от задачи. Для этого мы обучаем отдельную сеть, которая будет выбирать архитектуру для остальных сетей.

6.5. EfficientNet

Все архитектуры сетей, которые мы рассматривали до этого, были сверточными, но в 2017 появился новый вид архитектуры — трансформеры, который используют для обработки текста. ViT относится именно к этому виду. Его идея заключается в использовании блока attention, который из поступивших значений должен выбрать самый важный признак. Алгоритм: для каждого признака Q и K перемножаются, после чего от получившегося значения берем SoftMaх, у нас получается число в диапазоне 0...1, к которому прибавляется 1. И в итоге V умножается на получившееся число. Далее сравниваются все получившееся значения и выбирается самое большее. Для нашего алгоритма блоки ставятся параллельно.

Минус алгоритма ViT заключается в том, что обучение требует слишком много ресурсов, но в будущем эта архитектура может стать лучше сверточной, так как появилась совсем недавно.