Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Batch Normalization

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

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

Как работает пакетная нормализация#

Для сверточного слоя BatchNorm вычисляет для каждого канала среднее μ и дисперсию σ², объединяя данные всех изображений в пакете и всех пространственных позиций. Затем каждая активация x проходит два этапа:

  1. Нормализация: x̂ = (x − μ) / √(σ² + ε), где небольшое ε, по умолчанию равное 1e-5 в PyTorch, предотвращает деление на ноль.
  2. Масштабирование и сдвиг: y = γ·x̂ + β, где γ и β — обучаемые параметры для каждого канала. Они позволяют сети восстановить среднее и разброс, подходящие для следующего слоя, в том числе полностью отменить нормализацию.

BatchNorm обычно располагается между сверткой и её функцией активации. Поскольку β уже добавляет смещение для каждого канала, смещение предшествующей свертки избыточно и обычно отключается.

Обучение и инференс#

Во время обучения каждый прямой проход также обновляет скользящие среднее и дисперсию, используя экспоненциальное скользящее среднее статистик пакета. По умолчанию BatchNorm2d в PyTorch сдвигает их на 10% в сторону значений каждого нового пакета (momentum=0.1). Во время инференса слой нормализует данные по этим скользящим средним, поэтому предсказание для одного изображения больше не зависит от того, какие другие изображения находятся в том же пакете. model.train() и model.eval() переключают слой между двумя режимами:

import torch

torch.manual_seed(0)
bn = torch.nn.BatchNorm2d(num_features=3)

# A batch of 8 three-channel feature maps with mean 5 and standard deviation 2
x = 5 + 2 * torch.randn(8, 3, 16, 16)

# Training mode normalizes with this batch's per-channel mean and variance
out = bn(x)
print(f"train mode: output mean {out.mean():.3f}, std {out.std():.3f}")

# The same call nudges the running averages 10% of the way toward the batch statistics
print(f"running mean {bn.running_mean[0]:.3f}, running var {bn.running_var[0]:.3f}")

# Eval mode normalizes with the running averages instead of the batch statistics
bn.eval()
out = bn(x)
print(f"eval mode:  output mean {out.mean():.3f}, std {out.std():.3f}")

В режиме обучения выходные данные имеют среднее 0.000 и стандартное отклонение 1.000, хотя среднее входных данных равно 5. После одного пакета скользящее среднее изменилось всего с 0 до 0.496, а скользящая дисперсия — с 1 до 1.294, поэтому в режиме оценки выходные данные имеют среднее 3.920. Скользящим средним требуется несколько десятков пакетов, чтобы сойтись. Если оценивать модель в неверном режиме или до стабилизации статистик, её точность будет намного ниже истинной.

Во время инференса BatchNorm представляет собой фиксированное линейное преобразование для каждого канала, поэтому его можно объединить с предшествующей сверткой: веса свертки умножаются на γ/√(σ² + ε), а смещение становится равным β − γμ/√(σ² + ε). Стандартный сверточный блок в YOLO26 состоит из свертки без смещения, за которой следуют BatchNorm и активация SiLU. Перед предсказанием и экспортом Ultralytics объединяет каждый такой слой BatchNorm со сверткой, удаляя этот слой при сохранении тех же выходных данных.

Почему пакетная нормализация помогает#

В исходной статье пользу BatchNorm объясняли уменьшением внутреннего ковариативного сдвига — изменения распределения входных данных каждого слоя по мере обновления предыдущих слоёв. Позднее эксперименты со случайными сдвигами распределения после слоёв BatchNorm показали, что обучение почти не меняется. Исследователи связали пользу с более гладкой поверхностью функции потерь и более предсказуемыми градиентами, благодаря которым оптимизатор может делать более крупные и стабильные шаги. Поддержание среднего предварительных активаций около нуля и дисперсии около единицы также не даёт насыщаемым активациям попадать в плоские области, что помогает бороться с исчезающими градиентами.

Поскольку каждый пример нормализуется по статистикам случайно выбранного пакета, BatchNorm также добавляет шум, который действует как мягкий регуляризатор. В исходной статье сообщалось, что в некоторых случаях благодаря этому можно отказаться от dropout.

Ограничения#

  • Маленькие пакеты: Статистики пакета становятся шумными, когда на каждом устройстве находится мало изображений. При двух изображениях на GPU групповая нормализация, которая вычисляет статистики групп каналов внутри каждого изображения, снизила ошибку ResNet-50 на ImageNet на 10.6% по сравнению с BatchNorm.
  • Обучение на нескольких GPU: Каждый GPU нормализует свою часть пакета, если только слои не преобразованы в SyncBatchNorm, которая объединяет статистики устройств ценой дополнительных коммуникационных затрат.
  • Модели последовательностей: Последовательности переменной длины и зависящие от пакета статистики плохо сочетаются, поэтому трансформеры вместо этого используют нормализацию слоёв.
  • Нормализация данных: Однократно масштабирует исходные входные данные на этапе предобработки, например делит значения пикселей на 255. BatchNorm нормализует промежуточные активации на каждом слое и каждом шаге обучения.
  • Нормализация слоёв: Нормализует признаки каждого примера отдельно, поэтому одинаково работает при обучении и инференсе и не зависит от размера пакета. RMSNorm — более простой вариант без вычитания среднего — широко используется в больших языковых моделях.
  • Групповая нормализация: Делит каналы каждого изображения на группы и нормализует данные внутри каждой группы. Такой подход подходит для моделей детекции и сегментации, обучаемых на небольших пакетах.
  • Нормализация экземпляров: Отдельно нормализует каждый канал каждого изображения, устраняя контрастные различия между изображениями. Замена BatchNorm нормализацией экземпляров и при обучении, и при тестировании заметно улучшила качество быстрого переноса нейронного стиля.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения