Нейронный перенос стиля — это метод синтеза изображения \( \hat{I} \), который комбинирует содержимое исходного изображения \( I_c \) и стиль целевого изображения \( I_s \), основанный на глубоких сверточных нейронных сетях (CNN).
Формально оптимизация проводится через минимизацию общей функции потерь
\[ \mathcal{L}_{total}(\hat{I}) = \alpha \mathcal{L}_{content}(\hat{I}, I_c) + eta \mathcal{L}_{style}(\hat{I}, I_s) \]
где \( \alpha \) и \( eta \) — весовые коэффициенты.
Потеря содержимого часто определяется как квадратичная ошибка между картами признаков на определённом слое CNN:
\[ \mathcal{L}_{content}(\hat{I}, I_c) = rac{1}{2} \sum_{i,j} (F_{ij}^l(\hat{I}) - F_{ij}^l(I_c))^2 \]
где \( F^l \) — активации на слое \( l \).
Потеря стиля основана на разнице матриц Грама карт признаков на нескольких слоях, которые захватывают информацию о текстуре и стиле:
\[ \mathcal{L}_{style}(\hat{I}, I_s) = \sum_{l} w_l \| G^l(\hat{I}) - G^l(I_s) \|_F^2 \]
где \( G^l \) — матрица Грама и \( w_l \) — веса.
Оптимизация обычно проводится с помощью градиентных методов для создания изображения, объединяющего содержимое и стиль.
Определение:
«Нейронный перенос стиля — это метод, который с помощью глубоких нейронных сетей комбинирует содержимое одного изображения со стилем другого, извлекая отдельные представления для содержимого и стиля на слоях сети и объединяя их через оптимизацию.»
Источник:
Gatys, L. A., Ecker, A. S., & Bethge, M. (2016). Image Style Transfer Using Convolutional Neural Networks. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR).