Swin Transformer
Swin Transformer, kaydırılmış yerel pencerelerde öz dikkat hesaplayan hiyerarşik bir görü transformer'ıdır; bu nedenle işlem maliyeti görüntü boyutuyla doğrusal olarak artar.
Shifted Window Transformer'ın kısaltması olan Swin Transformer, küçük yerel pencerelerin içinde öz dikkat hesaplayan ve ardışık katmanlar arasında bu pencereleri kaydıran hiyerarşik bir görsel Transformer'dır. Microsoft Research Asia'dan Ze Liu ve çalışma arkadaşları, Swin'i 2021 tarihli ve ICCV 2021'de en iyi makale Marr Ödülü'nü kazanan Swin Transformer: Kaydırılmış Pencereler Kullanan Hiyerarşik Görsel Transformer makalesinde tanıttı. Yerel pencereler, dikkat maliyetinin piksel sayısıyla karesel değil doğrusal biçimde artmasını sağlar; yamaların aşamalı olarak birleştirilmesi ise evrişimli sinir ağlarının ürettiği gibi çok ölçekli özellik haritaları oluşturur. Bu özellikler, Transformer'ları yüksek çözünürlüklü görüntülerde sınıflandırmanın ötesinde nesne algılama ve bölümleme için genel amaçlı omurgalar olarak kullanışlı hâle getirdi.
Kaydırılmış Pencereler Nasıl Çalışır#
Swin önce görüntüyü 4×4 piksellik yamalara böler ve her yamayı bir token gömme vektörüne yansıtır. Böylece 224×224 boyutundaki bir görüntü, Tiny modelinde 96 kanallı 56×56 token ızgarasına dönüşür. 3.136 token'ın tamamına uygulanan genel dikkat, her token'ı diğer tüm token'larla karşılaştırır; Swin ise ızgarayı 7×7 token boyutunda örtüşmeyen pencerelere ayırır ve dikkati yalnızca her pencerenin içinde hesaplar. Makalede, h×w ızgarası ve C kanalı için genel dikkat maliyeti 4hwC² + 2(hw)²C; M×M token pencereleri içinse 4hwC² + 2M²hwC olarak verilir. İkinci maliyet hw ile doğrusal artar.
Pencereler tek başlarına bilgi alışverişi yapamazdı; bu nedenle her ikinci blok pencere ızgarasını pencerenin yarısı kadar, yani 3 token kaydırır ve yeni pencereler eski sınırları aşar. Pencere sayısını sabit tutmak için uygulama, özellik haritasını döngüsel olarak kaydırır ve özgün görüntüde komşu olmayan token'lar arasındaki dikkati maskeler. Her blok, dikkat puanlarına öğrenilmiş göreli konum yanlılığı da ekler.
Aşamalar arasında bir yama birleştirme katmanı, komşu token'lardan oluşan her 2×2 grubu birleştirip doğrusal olarak yansıtır; çözünürlük yarıya inerken kanal sayısı iki katına çıkar. Dört aşama, girdi çözünürlüğünün 1/4, 1/8, 1/16 ve 1/32'sinde özellik haritaları üretir. Bunlar ResNet'in stride değerleriyle aynıdır; dolayısıyla Swin, özellik piramit ağı gibi mevcut algılama ve bölümleme başlıklarına eklenebilir. torchvision uygulamasında her iki mekanizma da gösterilir:
import torch
from torchvision.models import swin_t
# Swin-T architecture; random weights are enough to inspect its structure
model = swin_t().eval()
# Each pair of blocks uses 7x7 windows, the second shifted by 3 patches
regular, shifted = model.features[1]
print(f"Window {regular.attn.window_size}, shift {regular.attn.shift_size} then {shifted.attn.shift_size}")
# features alternates stages with patch merging; stage outputs are (batch, height, width, channels)
x = torch.randn(1, 3, 224, 224)
with torch.no_grad():
for i, layer in enumerate(model.features):
x = layer(x)
if i % 2 == 1:
print(f"Stage {i // 2 + 1}: {tuple(x.shape)}")Window [7, 7], shift [0, 0] then [3, 3] çıktısını, ardından (1, 56, 56, 96), (1, 28, 28, 192), (1, 14, 14, 384) ve (1, 7, 7, 768) aşama çıktılarını verir: her aşama ızgarayı yarıya indirip kanal sayısını iki katına çıkararak yoğun tahmin başlıklarının beklediği piramidi oluşturur.
Swin Transformer, ViT ve CNN'ler#
Özgün ViT, görüntüleri 16×16 yamalara böler, tüm katmanlarda tek çözünürlüğü korur ve genel dikkat uygular. Bu yaklaşım görüntü sınıflandırma için uygundur; ancak algılama ve bölümlemenin yüksek çözünürlüklü girdilerinde maliyetli hâle gelir. Swin, dikkat mekanizmasının girdiye bağlı ağırlıklarını korurken evrişimli ağların iki önselini, yerelliği ve özellik hiyerarşisini yeniden kullanıma sokar. Sabit pencereleri token'ların paylaştığı bölümler olduğundan ve GPU matris çarpımlarına verimli biçimde eşlendiğinden, Swin'in pencereleri kayan pencere dikkatinden farklıdır; kayan pencere dikkatinde her token kendi komşuluğuna dikkat uygular.
Yayımlandığında ImageNet-22K üzerinde önceden eğitilmiş en büyük model Swin-L, ImageNet-1K'da %87,3 top-1 doğruluğuna, COCO test-dev'de 58,7 kutu AP ve 51,1 maske AP değerine, ADE20K'de ise 53,5 mIoU değerine ulaştı. Algılama ve anlamsal bölümleme kıyaslamalarında yayımlanmış en iyi sonuçları elde etti. Başarısı evrişimli ağ araştırmalarını da ileri taşıdı: Meta'nın 2022'de geliştirdiği ConvNeXt, Swin'den alınan tasarım tercihleriyle ResNet mimarisini modernleştirerek Swin'in doğruluğuna ulaştı veya onu aştı.
Swin, özel bir Ultralytics modelinin omurgası olabilir: model YAML dosyasındaki TorchVision modülü, torchvision'un önceden eğitilmiş ImageNet ağırlıklarına sahip swin_t modelini yükler ve bir YOLO algılama başlığını, modelin döndürdüğü tek stride-32 özellik haritası üzerinde eğitir.
Varyantlar ve Uygulamalar#
- Swin Transformer V2: Tasarımı 2022'de 3 milyar parametreye ve 1.536×1.536 piksele kadar görüntülere ölçeklendirdi; eğitimin kararlı kalması için ölçeklenmiş kosinüs dikkati ve logaritmik aralıklı sürekli konum yanlılığı kullandı.
- Video eylem tanıma: Video Swin Transformer, pencereleri uzay ve zaman boyunca üç boyuta genişleterek video kliplerdeki eylemleri sınıflandırır.
- Süper çözünürlük ve iyileştirme: SwinIR, görüntü büyütme, gürültü giderme ve JPEG kusurlarını kaldırma için Swin bloklarını kullanır.
- Tıbbi görüntü analizi: Swin-Unet ve Swin UNETR, Swin kodlayıcılarını U-Net tarzı kod çözücülerle birleştirir. Swin UNETR, 3B MR hacimlerinde beyin tümörlerini bölütler.










