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

Neural Style Transfer

Нейронный перенос стиля перерисовывает содержимое фотографии в стиле другого изображения, подбирая статистики признаков CNN. Разбираем метод Гатиса, быстрые модели и применение.

Перенос нейронного стиля (NST) — это метод компьютерного зрения, который отображает содержимое одного изображения, например фотографии улицы, в визуальном стиле другого, например картины, сопоставляя внутренние признаки предварительно обученной свёрточной нейронной сети (CNN). Содержимое отражают карты признаков глубокого слоя, показывающие, что и где изображено. Стиль отражают корреляции между каналами признаков, которые фиксируют текстуры, цвета и мазки кисти, но не их расположение. Леон Гатис, Александр Эккер и Маттиас Бетге из Тюбингенского университета представили этот метод в августе 2015 года в работе «Нейронный алгоритм художественного стиля», а в следующем году приложение Prisma сделало его доступным пользователям смартфонов.

Как работает исходный метод#

Метод Гатиса использует VGG-19 — обученную на ImageNet CNN, — как фиксированный экстрактор признаков и изменяет пиксели выходного изображения, а не веса сети. Результат определяется двумя функциями потерь:

  • Потеря содержимого: Квадрат разности между картами признаков выходного изображения и исходной фотографии содержимого на одном глубоком слое, conv4_2; это сохраняет узнаваемость объектов и композиции.
  • Потеря стиля: Квадрат разности между матрицами Грама на пяти слоях от conv1_1 до conv5_1. Для слоя с C каналами матрица Грама — это таблица C x C, элемент (i, j) которой показывает, насколько часто каналы i и j активируются одновременно, суммируя значения по всем позициям изображения.

Взвешенную сумму двух потерь минимизируют с помощью алгоритма оптимизации L-BFGS, а обратное распространение ошибки передаёт градиент через замороженную сеть к пикселям:

Поскольку матрица Грама суммирует значения по позициям, она почти не меняется при изменении композиции изображения. Перестановка квадрантов фотографии наглядно показывает это на примере ResNet-18 из torchvision — меньшей CNN для ImageNet, чем VGG-19, — в PyTorch:

import torch
from skimage import data
from torchvision.models import ResNet18_Weights, resnet18

weights = ResNet18_Weights.DEFAULT
cnn = resnet18(weights=weights).eval()
early_layers = torch.nn.Sequential(cnn.conv1, cnn.bn1, cnn.relu, cnn.maxpool, cnn.layer1)
preprocess = weights.transforms()

photo = torch.tensor(data.astronaut()).permute(2, 0, 1)  # 3 x 512 x 512
rearranged = torch.roll(photo, shifts=(256, 256), dims=(1, 2))  # same pixels, quadrants swapped


def content_and_style(image):
    """Return an early CNN layer's feature map (content) and its Gram matrix (style)."""
    with torch.no_grad():
        features = early_layers(preprocess(image)[None])[0].flatten(1)  # channels x positions
    return features, features @ features.T / features.shape[1]


(content_a, style_a), (content_b, style_b) = content_and_style(photo), content_and_style(rearranged)
print(f"Content change: {(content_a - content_b).norm() / content_a.norm():.0%}")
print(f"Style change:   {(style_a - style_b).norm() / style_a.norm():.0%}")

Перестановка квадрантов изменяет карту признаков на 96%, а матрицу Грама — всего на 7%; оставшиеся 7% объясняются новыми швами и центральной обрезкой, из-за которой в каждом изображении остаётся другая область. Именно поэтому потеря стиля копирует мазки кисти и палитру картины, не копируя расположение изображённых на ней объектов.

Быстрый перенос произвольного стиля#

Оптимизация каждого изображения требует сотен итераций, поэтому в последующих работах оптимизацию перенесли в процесс обучения. Джастин Джонсон, Александр Алахи и Ли Фэй-Фэй из Стэнфорда в 2016 году обучили отдельную сеть прямого распространения для каждого стиля с теми же функциями потерь; результат получался примерно в тысячу раз быстрее, а те же перцептивные потери применялись к сверхвысокому разрешению. Дмитрий Ульянов и его коллеги обнаружили, что замена пакетной нормализации на нормализацию по экземплярам в таких сетях улучшает качество стилизации. Адаптивная нормализация по экземплярам (AdaIN, 2017) Сюна Хуанга и Сержа Белонги поддерживает любой стиль без повторного обучения: она меняет среднее значение и стандартное отклонение каждого канала признаков содержимого, подгоняя их под изображение стиля, а затем декодирует результат; всё это выполняется в реальном времени.

Перенос стиля для устойчивых моделей компьютерного зрения#

Роберт Гейрхос и его коллеги с помощью AdaIN показали, что обученные на ImageNet CNN в большей степени полагаются на текстуру, чем на форму: ResNet-50 классифицирует изображение кошки с текстурой слоновьей кожи как слона — пример обучения на поверхностных признаках. Для Stylized-ImageNet каждое изображение ImageNet стилизовали случайной картиной из коллекции Painter by Numbers, включавшей 79 434 картины; ResNet-50, обученная на полученных данных, стала полагаться на форму. Если использовать эту модель, ориентированную на форму, как базовую сеть для модели обнаружения объектов Faster R-CNN, mAP50 на Pascal VOC 2007 выросла с 70.7 до 75.1, а на MS COCO — с 52.3 до 55.2.

Та же идея применима к расширению данных для наборов данных обнаружения, поскольку перенос стиля сохраняет положение каждого объекта. Стилизованная копия размеченного изображения использует исходные ограничивающие рамки, поэтому в наборе данных обнаружения Ultralytics YOLO26 ей нужна только копия исходного файла разметки с новым именем изображения.

  • Генеративно-состязательные сети (GAN): CycleGAN обучается преобразованию между целыми коллекциями изображений, например фотографиями и картинами Моне, вместо сопоставления статистик одного изображения стиля.
  • Перенос обучения: Дообучает предварительно обученные веса для новой задачи. NST не обновляет веса сети, а использует её только для вычисления потерь.
  • Диффузионные модели: Меняют стиль изображений по текстовой подсказке или эталонному изображению, генерируя их заново; при этом могут измениться не только стиль, но и формы с деталями.

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

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

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

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

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

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