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

Generative Adversarial Network (GAN)

Генеративно-состязательная сеть (GAN) обучает генератор состязаться с дискриминатором, пока его образцы не становятся неотличимы от реальных. Рассматриваются обучение, варианты и применение.

Генеративно-состязательная сеть (GAN) — это модель генеративного ИИ, состоящая из двух нейросетей, которые обучаются в противостоянии: генератор превращает случайный шум в образцы, а дискриминатор пытается отличить эти образцы от реальных обучающих данных. После завершения обучения генератор создаёт новые изображения, аудио или табличные данные за один прямой проход. Иэн Гудфеллоу и его коллеги из Монреальского университета представили GAN в статье «Generative Adversarial Nets» 2014 года. GAN лидировали в синтезе изображений, пока в 2021 году их не обошли диффузионные модели.

Как работает обучение GAN#

Две сети участвуют в минимаксной игре. Дискриминатор — это бинарный классификатор, который выдаёт вероятность того, что входные данные реальны. Его обучают с помощью функции потерь на основе кросс-энтропии: реальные образцы получают оценку 1, а сгенерированные — 0. Генератор не видит реальные данные и обучается только на градиентах дискриминатора. В теоретическом оптимуме игры распределение сгенерированных данных совпадает с распределением данных, а дискриминатор выдаёт 0,5 для любого входа. В начале обучения подделки легко распознать, поэтому исходная целевая функция генератора даёт почти нулевой градиент — это разновидность проблемы затухания градиента. Поэтому в статье Гудфеллоу предложил генератору максимизировать вероятность того, что дискриминатор сочтёт его образцы реальными. В коде ниже используется эта несатурирующая функция потерь.

Одномерная GAN на PyTorch изучает гауссово распределение только по образцам:

import torch
from torch import nn

torch.manual_seed(0)

# Generator maps 8-D noise to a number; discriminator scores a number as real (high) or fake (low)
generator = nn.Sequential(nn.Linear(8, 32), nn.ReLU(), nn.Linear(32, 1))
discriminator = nn.Sequential(nn.Linear(1, 32), nn.LeakyReLU(0.2), nn.Linear(32, 1))
opt_g = torch.optim.Adam(generator.parameters(), lr=1e-3)
opt_d = torch.optim.Adam(discriminator.parameters(), lr=1e-3)
bce = nn.BCEWithLogitsLoss()
real_label, fake_label = torch.ones(64, 1), torch.zeros(64, 1)

for step in range(3000):
    real = 4.0 + 1.25 * torch.randn(64, 1)  # training data: samples from N(4, 1.25^2)
    fake = generator(torch.randn(64, 8))

    # Discriminator step: label real samples 1 and generated samples 0
    loss_d = bce(discriminator(real), real_label) + bce(discriminator(fake.detach()), fake_label)
    opt_d.zero_grad()
    loss_d.backward()
    opt_d.step()

    # Generator step: push the discriminator to label generated samples 1
    loss_g = bce(discriminator(fake), real_label)
    opt_g.zero_grad()
    loss_g.backward()
    opt_g.step()

samples = generator(torch.randn(10000, 8)).detach()
print(f"Generated mean {samples.mean():.2f}, std {samples.std():.2f} (data: 4.00, 1.25)")
print(f"Discriminator's average P(real) on generated samples: {torch.sigmoid(discriminator(samples)).mean():.2f}")

После 3 000 чередующихся шагов среднее значение сгенерированных образцов составляет 3,95, а стандартное отклонение — 1,20, тогда как для данных эти значения равны 4,00 и 1,25. Дискриминатор присваивает им среднюю вероятность 0,51 быть реальными — почти как при подбрасывании монеты, что соответствует теоретическому оптимуму.

Ключевые разновидности GAN#

  • DCGAN: Разработка Алека Рэдфорда, Люка Метца и Суумита Чинталы 2015 года позволила надёжно обучать свёрточные генераторы и дискриминаторы: слои пулинга заменили свёртками с шагом, а также добавили пакетную нормализацию.
  • Условные GAN и pix2pix: Если подавать метку класса или входное изображение в обе сети, генератор сможет создавать заданный результат. pix2pix Филлипа Изолы и его коллег (2017) обучается на парных преобразованиях, например карт меток в фотографии улиц и контуров в фотографии товаров.
  • CycleGAN: Обучается преобразовывать изображения из одного набора в другой без парных примеров, например превращать лошадей в зебр или летние пейзажи в зимние. Для этого преобразованное изображение должно соответствовать исходному при обратном преобразовании.
  • Wasserstein GAN (WGAN): Мартин Арьовский и его коллеги заменили классификатор критиком, оценивающим расстояние Вассерштейна между реальными и сгенерированными данными (2017). Это позволяет сохранять полезные градиенты, даже если распределения почти не пересекаются.
  • StyleGAN: В StyleGAN (2018) и StyleGAN2 (2019) от NVIDIA обучаемый вектор стиля подаётся на каждый слой генератора. На лицах размером 1024 x 1024 из набора FFHQ StyleGAN2 достигла значения метрики Фреше—Инсепшена (FID) 2,84.

Применение#

  • Сверхразрешение: SRGAN (2017), ESRGAN (2018) и Real-ESRGAN (2021) добавляют состязательную функцию потерь к сетям увеличения разрешения, восстанавливая чёткие текстуры там, где одна лишь попиксельная функция потерь приводит к размытию.
  • Аугментация медицинских изображений: Мааян Фрид-Адар и её коллеги обучили GAN на КТ-снимках 182 поражений печени и добавили синтетические поражения в обучающие данные. Это повысило чувствительность классификатора с 78,6% до 85,7%, а специфичность — с 88,4% до 92,4%.
  • Дипфейки: В исследовании Софи Найтингейл и Хани Фарида 2022 года участники определяли, настоящие или синтетические лица StyleGAN2, с точностью 48% — немного хуже случайного угадывания. Синтетические лица участники оценивали как более заслуживающие доверия.

Изображения, созданные GAN, служат синтетическими данными там, где реальных примеров мало, и дополняют аугментацию данных наряду с геометрическими преобразованиями, такими как отражение и поворот. Их добавляют в обучающую выборку YOLO26 так же, как любые другие изображения: в секции train файла YAML с описанием набора данных для обнаружения объектов Ultralytics можно указать список каталогов. Поэтому синтетические изображения могут храниться в отдельной папке рядом с реальными, а добавить или удалить их можно, изменив одну строку.

GAN, диффузионные модели и VAE#

Диффузионные модели обошли GAN по качеству изображений после того, как в 2021 году Прафулла Дхариуал и Алекс Никол из OpenAI сообщили, что диффузионная модель превзошла BigGAN-deep, лучшую на тот момент GAN, по метрике FID на ImageNet. Обучение диффузионных моделей — это стабильная задача регрессии без противника, которая полнее охватывает разнообразие данных. Обучение GAN может колебаться без сходимости или приводить к коллапсу мод, когда генератор ограничивается несколькими результатами, которые обманывают дискриминатор, и перестаёт создавать остальные. Вариационные автокодировщики также стабильно обучаются, но создают более размытые образцы. Преимущество GAN, которое сохраняется до сих пор, — скорость: для генерации нужен всего один прямой проход. В 2023 году GigaGAN от Adobe Research, Университета Карнеги — Меллона и POSTECH создавала результаты генерации изображений по тексту с разрешением 512 пикселей за 0,13 секунды. Состязательные функции потерь сохраняются и внутри диффузионных систем. Автокодировщик Stable Diffusion обучается с помощью дискриминатора на основе патчей, а SDXL Turbo от Stability AI использует дистилляцию диффузии с состязанием — разновидность дистилляции знаний с дискриминатором в функции потерь, — чтобы создавать изображение за один шаг.

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

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

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

Узнай, как 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. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

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

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