Neural Style Transfer
A transferência de estilo neural redesenha o conteúdo de uma foto no estilo de outra imagem, combinando estatísticas de características de CNN. Abrange o método de Gatys, modelos rápidos e usos.
A transferência de estilo neural (NST) é uma técnica de visão computacional que representa o conteúdo de uma imagem, como uma fotografia de uma rua, no estilo visual de outra, como uma pintura, fazendo corresponder as características internas de uma rede neuronal convolucional (CNN) pré-treinada. O conteúdo é captado pelos mapas de características de uma camada profunda, que registam o que aparece e onde. O estilo é captado pelas correlações entre canais de características, que registam texturas, cores e pinceladas, mas descartam a sua disposição. Leon Gatys, Alexander Ecker e Matthias Bethge, da Universidade de Tübingen, apresentaram o método em agosto de 2015 no artigo A Neural Algorithm of Artistic Style, e a aplicação Prisma levou-o aos utilizadores de smartphones no ano seguinte.
Como funciona o método original#
O método de Gatys usa a VGG-19, uma CNN treinada com ImageNet, como extrator de características fixo e altera os píxeis da imagem de saída, não os pesos da rede. Duas funções de perda orientam o resultado:
- Perda de conteúdo: A diferença ao quadrado entre os mapas de características da imagem de saída e os da fotografia de conteúdo numa camada profunda, conv4_2, que mantém os objetos e a disposição reconhecíveis.
- Perda de estilo: A diferença ao quadrado entre as matrizes de Gram em cinco camadas, de conv1_1 a conv5_1. Para uma camada com C canais, a matriz de Gram é uma tabela C x C cuja entrada (i, j) mede a intensidade com que os canais i e j respondem em conjunto, somada sobre todas as posições da imagem.
Minimiza-se uma soma ponderada das duas perdas com o algoritmo de otimização L-BFGS, e a retropropagação propaga o gradiente pela rede congelada até aos píxeis:
Como a matriz de Gram soma as posições, quase não se altera quando a disposição da imagem muda. Trocar os quadrantes de uma fotografia demonstra isto com a ResNet-18 do torchvision, uma CNN para ImageNet mais pequena do que a VGG-19, em 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%}")Trocar os quadrantes altera o mapa de características em 96%, mas a matriz de Gram apenas em 7%; os 7% restantes resultam das novas junções e do recorte central, que mantém uma parte diferente de cada imagem. É por isso que a perda de estilo copia as pinceladas e a paleta de uma pintura sem copiar a posição de cada elemento.
Transferência de estilo rápida e arbitrária#
Otimizar cada imagem exige centenas de iterações; por isso, trabalhos posteriores transferiram a otimização para o treino. Em 2016, Justin Johnson, Alexandre Alahi e Li Fei-Fei, de Stanford, treinaram uma rede feed-forward por estilo com as mesmas perdas, produzindo resultados cerca de três ordens de grandeza mais rápidos, e aplicaram as mesmas perdas percetuais à super-resolução. Dmitry Ulyanov e colegas descobriram que substituir a normalização por lotes pela normalização por instância nessas redes melhorava a qualidade da estilização. A normalização adaptativa por instância (AdaIN, 2017), de Xun Huang e Serge Belongie, funciona com qualquer estilo sem novo treino: ajusta a média e o desvio-padrão de cada canal de características do conteúdo para corresponder aos da imagem de estilo e, depois, descodifica; o processo decorre em tempo real.
Transferência de estilo para modelos de visão robustos#
Robert Geirhos e colegas usaram AdaIN para mostrar que as CNNs treinadas com ImageNet dependem mais da textura do que da forma: uma ResNet-50 classifica como elefante uma imagem de um gato com textura de pele de elefante, um caso de aprendizagem de atalhos. A equipa criou o Stylized-ImageNet ao aplicar a cada imagem do ImageNet o estilo de uma pintura aleatória da coleção Painter by Numbers, com 79.434 pinturas; uma ResNet-50 treinada com esse conjunto passou a depender da forma. Usar essa rede baseada na forma como backbone de um modelo Faster R-CNN de deteção de objetos elevou o mAP50 no Pascal VOC 2007 de 70,7 para 75,1 e no MS COCO de 52,3 para 55,2.
A mesma ideia funciona como aumento de dados para conjuntos de dados de deteção, porque a transferência de estilo mantém cada objeto no mesmo sítio. Uma cópia estilizada de uma imagem rotulada reutiliza as caixas delimitadoras originais; por isso, num conjunto de dados de deteção Ultralytics YOLO26, só precisa de uma cópia do ficheiro de rótulos original com o novo nome da imagem.
Transferência de estilo neural e termos relacionados#
- Redes adversariais generativas (GANs): O CycleGAN aprende um mapeamento entre coleções inteiras de imagens, como fotografias e pinturas de Monet, em vez de corresponder às estatísticas de uma única imagem de estilo.
- Aprendizagem por transferência: Ajusta por fine-tuning pesos pré-treinados para uma nova tarefa. A NST nunca atualiza os pesos da rede e usa-a apenas para medir as perdas.
- Modelos de difusão: Reestilizam imagens a partir de uma instrução de texto ou de uma imagem de referência, regenerando-as; este processo pode alterar formas e detalhes, além do estilo.










