artistic style transfer
Artistic style transfer er en teknik inden for computer vision, hvor en models stil fra et billede (f.eks. et maleri) overføres til indholdet af et andet billede, så resultatet beholder indholdets struktur men får stilens visuelle karakteristika.
Kort fortalt
Artistic style transfer lader dig gøre et foto til et maleri i stil med en kendt kunstner, ved at kombinere billedets indhold med kunstnerens stil.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
En computer visions teknik, der bruger et convolutional neuralt netværk til at adskille billedindhold og stil, og derefter optimere et outputbillede, der minimerer en kombination af indholds- og stiltabs.
- Ved artistic style transfer bruges VGG-netværket ofte som basis for at udtrække træk fra både indholds- og stilbilleder. — Gatys et al., 2016
- Mange moderne implementeringer af artistic style transfer anvender feed-forward netværk for hurtigere inferens. — Johnson et al., 2016
Hvornår bruges det
Teknikken bruges i billedredigeringsapps, sociale medier og kunstneriske værktøjer til at skabe æstetiske billeder. Den anvendes også i forskning inden for neural kunst og kreativ AI.
Kodeeksempel
import torch
import torch.nn as nn
from torchvision import models, transforms
from PIL import Image
# Load pre-trained VGG19
vgg = models.vgg19(pretrained=True).features.eval()
content_img = Image.open('content.jpg')
style_img = Image.open('style.jpg')
transform = transforms.Compose([
transforms.Resize(512),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])
])
content = transform(content_img).unsqueeze(0)
style = transform(style_img).unsqueeze(0)
# Style transfer training loop (simplified)
input_img = content.clone().requires_grad_(True)
optimizer = torch.optim.LBFGS([input_img])
for i in range(300):
def closure():
optimizer.zero_grad()
# Compute features and loss (content + style)
loss = compute_loss(vgg, input_img, content, style)
loss.backward()
return loss
optimizer.step(closure)
# Convert back to image
denormalize = transforms.Normalize(mean=[-0.485/0.229,-0.456/0.224,-0.406/0.225], std=[1/0.229,1/0.224,1/0.225])
output = denormalize(input_img.squeeze(0)).clamp(0,1)
Forenklet Python-kode til artistic style transfer med VGG19, der optimerer et inputbillede ved at minimere indholds- og stiltab.
Oprindelse
Termen stammer fra forskningsartiklen 'A Neural Algorithm of Artistic Style' (Gatys et al., 2015), der introducerede en metode baseret på convolutional neurale netværk (CNN'er) til at adskille og overføre stil og indhold.