Урок по треку Глубокое обучение 7 мин

Свёрточные сети за 7 минут

Свёртка, каналы, stride, padding, пулинг, рецептивное поле, ResNet и современные архитектуры.

Свёрточные сети остаются базой компьютерного зрения и частой темой собеса: посчитать размер выхода и число параметров, объяснить рецептивное поле, рассказать про ResNet и про то, когда брать ViT.

Свёртка

Ядро k×k (по всем входным каналам) скользит по изображению и в каждой позиции считает взвешенную сумму окна. В нейросетях это кросс-корреляция, ядро не переворачивают.

out = ⌊(in + 2·padding - kernel) / stride⌋ + 1

Вход 32×32, ядро 5×5, stride 1, без padding: 28×28. Padding (k - 1)/2 при stride 1 сохраняет размер.

Параметры: (k·k·C_in + 1)·C_out. Слой 64 → 128 каналов с ядром 3×3: (576 + 1)·128 = 73 856. Число параметров не зависит от размера картинки.

Почему свёртки

  • Локальность: соседние пиксели связаны.
  • Разделение весов: одно ядро для всех позиций, параметров на порядки меньше, чем у полносвязного слоя.
  • Эквивариантность к сдвигу: признак находится в любом месте.

Пулинг и уменьшение разрешения

Max pooling 2×2 со stride 2 вдвое уменьшает размер, без параметров. Сейчас часто используют свёртки со stride 2 и global average pooling перед классификатором: он сжимает каждую карту в число.

Рецептивное поле

Каждая свёртка 3×3 со stride 1 расширяет поле на 2: три подряд дают 7×7, как одна 7×7, но с 27C² параметров вместо 49C² и тремя нелинейностями (идея VGG).

Особые свёртки

  • 1×1: смешивает каналы в каждой точке, меняет их число (bottleneck в ResNet).
  • Depthwise separable: depthwise k×k по каналам плюс pointwise 1×1, в 8-9 раз дешевле. Основа MobileNet.
  • Dilated: окно с пропусками, большое поле без потери разрешения (сегментация).

Архитектуры

  • AlexNet, VGG: глубина и маленькие ядра.
  • ResNet: residual-связи, сети 50-150 слоёв, популярный бэкбон.
  • EfficientNet, MobileNet: эффективность для устройств.
  • ConvNeXt: современная CNN, конкурентная с трансформерами.
  • ViT: картинка режется на патчи-токены, дальше трансформер. Слабее встроенные предположения о локальности, поэтому на малых данных CNN обычно лучше, а при большом предобучении ViT сильнее.

Задачи CV

  • Классификация: бэкбон и голова.
  • Детекция: рамки и классы (одноэтапные и двухэтапные детекторы).
  • Сегментация: класс для каждого пикселя (U-Net, энкодер-декодер).

Малые данные

Почти всегда transfer learning: предобученный бэкбон, новая голова, затем аккуратная разморозка. Нормализация входа как при предобучении, аугментации под реальную съёмку, валидация по партиям или камерам.

Частые ошибки

  • Забыть +1 в формуле размера или округление вниз.
  • Считать параметры без учёта входных каналов.
  • Учить с нуля на тысяче картинок.
  • Не нормализовать вход средними и std предобучения.

Что спросят на собесе

  • Размер выхода и число параметров свёрточного слоя.
  • Почему свёртки лучше полносвязных для картинок.
  • Рецептивное поле, свёртки 1×1, depthwise separable.
  • Идея ResNet, ViT против CNN.
  • Как сделать классификатор на маленьком датасете.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.