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
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 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?#
| Eksen | Evrişimli omurga | Dikkat tabanlı omurga |
|---|---|---|
| Yerleşik varsayım | Yerellik ve konumdan bağımsız aynı süzgeç | Yok denecek kadar az; ilişki kurulacak konumlar veriden öğrenilir |
| Alıcı alan | Derinlikle kademeli büyür | Düz gövdede ilk katmandan itibaren tüm görüntü |
| Hesabın ölçeklenmesi | Piksel sayısıyla doğrusal | Dikkat matrisi belirteç sayısının karesiyle |
| Veri iştahı | Yerleşik varsayım sayesinde az veriyle de öğrenir | Varsayım zayıf; çok veri, güçlü ön eğitim veya ağır düzenlileştirme ister |
| Çözünürlük değişimi | Doğal olarak dayanıklı | Konum gömmesi ölçeklenmezse bozulur |
| Yoğun görev başlıkları | Çok ölçekli haritalar hazır gelir | Dü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#
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 belirtecBu 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Ö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.
- 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Çö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.
- 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.
- 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
- 1Kendi görüntülerinizden birini, kenarları seçtiğiniz yama boyutuna tam bölünecek biçimde yeniden ölçekleyin.
- 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Üç farklı yama boyutu için belirteç sayısını, doğrusal ölçeği ve dikkat ölçeğini bir tabloya yazın.
- 4Aynı tabloyu girdi kenarını iki katına çıkararak yineleyin ve hangi büyümenin doğrusal hangisinin karesel olduğunu işaretleyin.
- 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.
- 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.
