Neural Style Transfer
Sinirsel stil aktarımı, CNN özellik istatistiklerini eşleştirerek bir fotoğrafın içeriğini başka bir görüntünün tarzında yeniden çizer. Gatys'in yöntemini, hızlı modelleri ve kullanım alanlarını ele alır.
Nöral stil aktarımı (NST), önceden eğitilmiş bir evrişimli sinir ağının (CNN) iç özelliklerini eşleştirerek, sokak fotoğrafı gibi bir görüntünün içeriğini resim gibi başka bir görüntünün görsel tarzında işleyen bir bilgisayarlı görü tekniğidir. İçerik, nerede neyin göründüğünü kaydeden derin katmanların özellik haritaları tarafından yakalanır. Stil ise dokuları, renkleri ve fırça darbelerini kaydeden, ancak bunların düzenini göz ardı eden özellik kanalları arasındaki ilişkilerle yakalanır. Tübingen Üniversitesi'nden Leon Gatys, Alexander Ecker ve Matthias Bethge yöntemi Ağustos 2015'te A Neural Algorithm of Artistic Style makalesinde tanıttı; Prisma uygulaması da sonraki yıl yöntemi akıllı telefon kullanıcılarıyla buluşturdu.
Özgün Yöntem Nasıl Çalışır?#
Gatys'in yöntemi, ImageNet üzerinde eğitilmiş bir CNN olan VGG-19'u sabit bir özellik çıkarıcı olarak kullanır ve herhangi bir ağ ağırlığını değiştirmek yerine çıktı görüntüsünün piksellerini değiştirir. İki kayıp fonksiyonu sonucu belirler:
- İçerik kaybı: Çıktının ve içerik fotoğrafının tek bir derin katmandaki (conv4_2) özellik haritaları arasındaki karesel fark; nesnelerin ve düzenin tanınabilir kalmasını sağlar.
- Stil kaybı: conv1_1 ile conv5_1 arasındaki beş katmandaki Gram matrislerinin karesel farkı. C kanallı bir katmanda Gram matrisi, (i, j) girdisinin i ve j kanallarının görüntünün tüm konumlarında ne kadar güçlü biçimde birlikte etkinleştiğini ölçtüğü C x C boyutunda bir tablodur.
İki kaybın ağırlıklı toplamı L-BFGS optimizasyon algoritması kullanılarak en aza indirilir; geri yayılım ise gradyanı dondurulmuş ağdan piksellere taşır:
Gram matrisi konumlar üzerinden toplama yaptığı için görüntünün düzeni değiştiğinde çok az değişir. Bir fotoğrafın dört bölgesini yer değiştirmek, VGG-19'dan daha küçük bir ImageNet CNN'i olan torchvision ResNet-18 ile PyTorch üzerinde bunu gösterir:
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%}")Dört bölgenin yerini değiştirmek özellik haritasını %96, Gram matrisiniyse yalnızca %7 değiştiriyor; kalan %7'lik değişim yeni dikişlerden ve her görüntünün farklı bir bölümünü tutan orta kırpmadan kaynaklanıyor. Stil kaybının, resimdeki nesnelerin yerlerini kopyalamadan resmin fırça işçiliğini ve renk paletini kopyalamasının nedeni budur.
Hızlı ve Keyfî Stil Aktarımı#
Her görüntüyü optimize etmek yüzlerce yineleme gerektirdiğinden sonraki çalışmalar optimizasyonu eğitime taşıdı. Stanford'dan Justin Johnson, Alexandre Alahi ve Li Fei-Fei, 2016'da aynı kayıpları kullanarak her stil için ileri beslemeli bir ağ eğitti ve yaklaşık üç kat büyüklük mertebesinde daha hızlı sonuçlar elde etti; aynı algısal kayıpları süper çözünürlük için de kullandı. Dmitry Ulyanov ve çalışma arkadaşları, bu ağlarda yığın normalizasyonu yerine örnek normalizasyonu kullanmanın stil dönüşümünün kalitesini artırdığını keşfetti. Xun Huang ve Serge Belongie'nin uyarlamalı örnek normalizasyonu (AdaIN, 2017) yeniden eğitim gerektirmeden her türlü stili işler: her içerik özelliği kanalının ortalamasını ve standart sapmasını stil görüntüsündekilerle eşleşecek şekilde kaydırır, ardından kodunu çözer; bu işlem gerçek zamanlı çalışır.
Dayanıklı Görü Modelleri için Stil Aktarımı#
Robert Geirhos ve çalışma arkadaşları, ImageNet üzerinde eğitilmiş CNN'lerin biçimden çok dokuya dayandığını göstermek için AdaIN kullandı: fil derisi dokusuna sahip bir kedi görüntüsünü ResNet-50 fil olarak etiketliyor; bu, kestirme öğrenme biçimlerinden biri. Ekip, Painter by Numbers koleksiyonundaki 79.434 resimden rastgele birini kullanarak her ImageNet görüntüsünün stilini değiştiren Stylized-ImageNet veri kümesini oluşturdu; bu veri kümesinde eğitilen ResNet-50 ise bunun yerine biçime dayandı. Bu biçim temelli ağı bir Faster R-CNN nesne algılama modelinin temel ağı olarak kullanmak, Pascal VOC 2007'deki mAP50 değerini 70,7'den 75,1'e, MS COCO'daki değeri de 52,3'ten 55,2'ye yükseltti.
Stil aktarımı tüm nesneleri yerlerinde koruduğu için aynı fikir algılama veri kümelerinde veri artırma yöntemi olarak da işe yarar. Etiketli bir görüntünün stil verilmiş kopyası, özgün görüntünün sınırlayıcı kutularını yeniden kullanır; dolayısıyla bir Ultralytics YOLO26 algılama veri kümesinde yeni görüntü adı altında özgün etiket dosyasının bir kopyası yeterlidir.
Nöral Stil Aktarımı ve İlgili Terimler#
- Üretici çekişmeli ağlar (GAN): CycleGAN, tek bir stil görüntüsünün istatistiklerini eşleştirmek yerine fotoğraflar ve Monet tabloları gibi tüm görüntü koleksiyonları arasında bir eşleme öğrenir.
- Aktarım öğrenimi: Yeni bir görev için önceden eğitilmiş ağırlıklara ince ayar yapar. NST, ağın ağırlıklarını hiçbir zaman güncellemez; ağırlıkları yalnızca kayıpları ölçmek için kullanır.
- Difüzyon modelleri: Görüntüleri bir metin isteminden veya referans görüntüden yeniden üreterek stillerini değiştirir; bu sırada stilin yanı sıra şekilleri ve ayrıntıları da değiştirebilir.










