İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
Dersİleri45 dakikaComputer Vision Engineer · 6. ders

Görsel transformerlar: yama gömme ve dikkat

Görüntüyü belirteç dizisine çeviren yama gömmeyi, dikkatin evrişimden hangi varsayımı geri aldığını ve hangi koşulda hangi omurganın seçileceğini öğretir.

Önkoşul: Transformer, Deep Learning, Computer Vision

BU DERSİN SONUNDA

  • Yama gömmeyi adımlı evrişim olarak okumak ve belirteç sayısını hesaplamak
  • Evrişimin yerleşik varsayımı ile dikkatin esnekliği arasındaki ödünleşimi gerekçelendirmek
  • Pencereli ve hiyerarşik dikkatin hangi görevde gerektiğini belirlemek
  • Girdi çözünürlüğü değiştiğinde konum gömmesini doğru ölçeklemek
  1. 1

    Teori

    Kavramın çalışma mantığı

  2. 2

    Örnek

    Gerçek bir senaryo üzerinde gösterim

  3. 3

    Lab

    Uygulamalı alıştırma

  4. 4

    Test

    Kısa ölçüm

  5. 5

    Proje

    Rotadaki projeye katkı

Kısa cevap

Görsel transformer, görüntüyü örtüşmeyen yamalara böler, her yamayı bir vektöre yansıtır ve geri kalan işi dizi üzerinde dikkatle yapar. Bunun karşılığında evrişimin getirdiği iki yerleşik varsayımdan (yerellik ve konumdan bağımsız aynı süzgeç) vazgeçilir: ilişki kurulacak konumlar artık veriden öğrenilir. Kazanç esneklik ve ilk katmandan itibaren küresel bağlam; bedeli, varsayım azaldığı için daha çok veriye veya güçlü ön eğitime ihtiyaç duyulması ve dikkat maliyetinin belirteç sayısının karesiyle büyümesidir.

Teori: görüntüden diziye#

Yama gömme göründüğünden basittir: P×P'lik örtüşmeyen bloklar alınır, düzleştirilir ve doğrusal bir izdüşümle sabit boyutlu vektöre çevrilir. Bu işlem, çekirdeği ve adımı P olan tek bir evrişim katmanına denktir. Yani görsel transformerın ilk katmanı da bir evrişimdir; fark, bundan sonrasının uzamsal komşuluk yerine dizi üzerinde dikkatle yürümesidir.

Dikkat, girdinin sırasına duyarsızdır: belirteçleri karıştırsanız çıktı da aynı biçimde karışır, ama hangi belirtecin nerede olduğu bilgisi kendiliğinden gelmez. Bu yüzden yama vektörlerine konum gömmesi eklenir. Uzamsal yapı artık mimaride yerleşik değil, öğrenilen ya da hesaplanan bir sinyalde taşınır; girdi boyutunu değiştirdiğinizde bu sinyalin de birlikte ölçeklenmesi gerekmesinin nedeni budur.

Evrişim ile dikkat: neyi değiş tokuş ediyoruz?#

EksenEvrişimli omurgaDikkat tabanlı omurga
Yerleşik varsayımYerellik ve konumdan bağımsız aynı süzgeçYok denecek kadar az; ilişki kurulacak konumlar veriden öğrenilir
Alıcı alanDerinlikle kademeli büyürDüz gövdede ilk katmandan itibaren tüm görüntü
Hesabın ölçeklenmesiPiksel sayısıyla doğrusalDikkat matrisi belirteç sayısının karesiyle
Veri iştahıYerleşik varsayım sayesinde az veriyle de öğrenirVarsayım zayıf; çok veri, güçlü ön eğitim veya ağır düzenlileştirme ister
Çözünürlük değişimiDoğal olarak dayanıklıKonum gömmesi ölçeklenmezse bozulur
Yoğun görev başlıklarıÇok ölçekli haritalar hazır gelirDüz gövdede tek ölçek vardır; hiyerarşik tasarım ya da ölçek üreten bir ara katman gerekir

Belirteç sayısı ve yama boyutu#

python
def belirtec_butcesi(yukseklik, genislik, yama):
    """Yama gommeden cikan belirtec sayisi ve maliyetin goreli olcegi."""
    if yukseklik % yama or genislik % yama:
        raise ValueError("Kenarlar yama boyutuna tam bolunmeli")
    n = (yukseklik // yama) * (genislik // yama)
    return {
        "belirtec": n,
        "dogrusal_olcek": n,      # izdusum ve MLP bilesenleri
        "dikkat_olcegi": n * n,   # belirtec cifti sayisi
    }


# Ornek varsayim: 224x224 girdi
belirtec_butcesi(224, 224, 16)   # 196 belirtec
belirtec_butcesi(224, 224, 8)    # 784 belirtec

Bu aritmetik tasarım kararlarının çoğunu tek başına açıklar. Yama kenarını yarıya indirmek belirteç sayısını dörde katlar; belirteçle doğrusal büyüyen bileşenlerin maliyeti dörde, belirteç çiftleri üzerinde çalışan dikkat matrisininki on altıya çıkar. Aynı çarpan girdi çözünürlüğünü iki katına çıkarmak için de geçerlidir. Yani ince ayrıntı isteyen bir görevde küçük yama seçmek bedava değildir; bütçe belirteç cinsinden yazılmadan çözünürlük ve yama boyutu kararı verilemez.

Pencereli ve hiyerarşik gövdeler#

Karesel büyümeyi kesmenin yaygın yolu dikkati yerel pencerelerle sınırlamaktır: maliyet belirteç sayısıyla yeniden doğrusallaşır. Ancak pencereler bilgi alışverişi yapmazsa alıcı alan hiç büyümez; bu yüzden pencereler katmanlar arasında kaydırılır, birleştirilir ya da küresel bir belirteç aracı olarak eklenir. Bu tasarımın ikinci faydası, yamaların kademeli birleştirilmesiyle bir çözünürlük piramidi kurulmasıdır: tespit ve segmentasyon başlıklarının beklediği çok ölçekli haritalar böylece doğal olarak ortaya çıkar.

Karar: hangi omurga?#

  1. 1Ön eğitim var mı?

    Düz dikkat gövdeleri güçlü ön eğitimle anlam kazanır. Sıfırdan ve az veriyle eğitilecekse evrişimli omurga, yerleşik varsayımı sayesinde daha güvenli başlangıçtır.

  2. 2Görev yoğun mu?

    Tespit ve segmentasyon çok ölçekli harita ister. Düz tek ölçekli bir gövde seçilecekse bu ölçekleri üretecek bir ara katman planlayın.

  3. 3Çözünürlüğü belirleyin

    Hedefin piksel boyutu çözünürlüğü, çözünürlük ile yama boyutu birlikte belirteç sayısını belirler. Sıralama budur; ters yönde karar vermeyin.

  4. 4Bütçeyi belirteç cinsinden yazın

    Bellek ve gecikme sınırını belirteç sayısı üzerinden ifade edin; pencereli dikkat, daha büyük yama veya hiyerarşik birleştirme bu sınırı tutturmanın üç ayrı yoludur.

  5. 5Melez seçenekleri değerlendirin

    İlk katmanlarda evrişim, sonrasında dikkat kullanan tasarımlar yerellik varsayımını ucuz biçimde geri getirir ve az veride farkı kapatır.

Sık yapılan hata#

Birinci hata, küçük ve orta ölçekli bir sette düz bir dikkat gövdesini sıfırdan eğitmeye kalkmaktır: mimarinin vazgeçtiği varsayımların yerini dolduracak veri yoktur ve sonuç, aynı bütçedeki evrişimli omurganın gerisinde kalır. İkincisi girdi boyutunu değiştirip konum gömmesini olduğu gibi bırakmaktır; gömme iki boyutlu ızgara olarak yeniden örneklenmelidir, düz bir dizi gibi kesilip uzatılmamalıdır. Pencereli gövdelerde ayrıca girdi kenarının pencere boyutuna bölünebilirliği ayrı bir kısıttır.

LAB · UYGULAMALI ALIŞTIRMA

Yama gömmeyi kendi görüntünüzde kurun ve bütçeyi çıkarın

  1. 1Kendi görüntülerinizden birini, kenarları seçtiğiniz yama boyutuna tam bölünecek biçimde yeniden ölçekleyin.
  2. 2Görüntüyü P×P bloklara ayırıp her bloğu düzleştirin; elinizde (belirteç sayısı × P·P·3) boyutunda bir dizi olsun. Blokları yerine koyarak görüntüyü geri kurun ve tek kaybın ölçeklemeden geldiğini doğrulayın.
  3. 3Üç farklı yama boyutu için belirteç sayısını, doğrusal ölçeği ve dikkat ölçeğini bir tabloya yazın.
  4. 4Aynı tabloyu girdi kenarını iki katına çıkararak yineleyin ve hangi büyümenin doğrusal hangisinin karesel olduğunu işaretleyin.
  5. 5İkinci dersteki alıcı alan tablonuzu açın: evrişimli yığınınızın ilk katmanlarında bir hücrenin gördüğü alanla, aynı görüntüde tek bir dikkat katmanının gördüğü alanı karşılaştırıp farkı bir paragrafla yazın.
  6. 6Seçtiğiniz gecikme veya bellek sınırını belirteç sayısı cinsinden yazıp tablodaki hangi yapılandırmaların bu sınırın altında kaldığını işaretleyin.

Beklenen çıktı

Kendi görüntünüz üzerinde çalışan bir yama gömme uygulaması ve yama boyutu ile çözünürlüğün belirteç bütçesine etkisini gösteren, sınırınıza göre işaretlenmiş tablo.

Sık sorulan sorular

Düz gövde mi hiyerarşik gövde mi seçmeliyim?

Görev belirler. Tek etiketli sınıflandırmada tek ölçekli düz gövde yeterlidir; karar zaten görüntünün tamamı için verilir. Tespit ve segmentasyon farklı ölçeklerde harita ister: hiyerarşik gövde bunu doğal olarak üretir, düz gövdede ise ara katmanlardan piramit kuran bir ek tasarım gerekir. Ek tasarım işe yarar ama bir bileşen daha demektir.

Girdi boyutunu değiştirince tam olarak ne yapmalıyım?

Konum gömmesini yamaların iki boyutlu ızgarası olarak yeniden düzenleyip yeni ızgara boyutuna interpolasyonla taşıyın; sınıf belirteci gibi uzamsal olmayan gömmeleri bu işlemin dışında tutun. Pencereli gövdelerde ayrıca yeni kenar uzunluğunun pencere boyutuna bölünebildiğinden emin olun, aksi halde dolgu politikası sessizce devreye girer.

Evrişim artık gereksiz mi?

Hayır; iki yaklaşım aynı eksende rekabet etmiyor. Evrişim yerellik varsayımını bedavaya verir ve bu varsayım az veride en değerli kaynaktır. Dikkat ise varsayımı veriyle değiştirmeyi önerir, bu da veri ve hesap ister. Pratikte karar mimarinin adına göre değil, elinizdeki veri miktarına, ön eğitim erişimine, çözünürlük ihtiyacına ve gecikme bütçesine göre verilir.

LEARN

Computer Vision Engineer rotasına devam et

Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.