Referans için ultralytics/models/sam/modules/transformer.py
Not
Bu dosya https://github.com/ultralytics/ultralytics/blob/main/ ultralytics/models/ sam/modules/transformer .py adresinde mevcuttur. Bir sorun tespit ederseniz lütfen bir Çekme İsteği 🛠️ ile katkıda bulunarak düzeltilmesine yardımcı olun. Teşekkürler 🙏!
ultralytics.models.sam.modules.transformer.TwoWayTransformer
Üsler: Module
Hem görüntü hem de sorgu noktalarına aynı anda dikkat edilmesini sağlayan İki Yönlü Dönüştürücü modülü. Bu sınıf konumsal gömülü sorguları kullanarak bir giriş görüntüsüne katılan özel bir dönüştürücü kod çözücü olarak hizmet eder sağlanır. Bu özellikle nesne algılama, görüntü segmentasyonu ve nokta bulutu gibi görevler için kullanışlıdır işleniyor.
Nitelikler:
İsim | Tip | Açıklama |
---|---|---|
depth |
int
|
Transformatördeki katman sayısı. |
embedding_dim |
int
|
Giriş katıştırmaları için kanal boyutu. |
num_heads |
int
|
Çok kafalı dikkat için kafa sayısı. |
mlp_dim |
int
|
MLP bloğu için dahili kanal boyutu. |
layers |
ModuleList
|
Dönüştürücüyü oluşturan TwoWayAttentionBlock katmanlarının listesi. |
final_attn_token_to_image |
Attention
|
Sorgulardan görüntüye uygulanan son dikkat katmanı. |
norm_final_attn |
LayerNorm
|
Nihai sorgulara uygulanan katman normalizasyonu. |
Kaynak kodu ultralytics/models/sam/modules/transformer.py
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
|
__init__(depth, embedding_dim, num_heads, mlp_dim, activation=nn.ReLU, attention_downsample_rate=2)
Konumsal gömme sağlanan sorguları kullanarak bir giriş görüntüsüne katılan bir dönüştürücü kod çözücü.
Parametreler:
İsim | Tip | Açıklama | Varsayılan |
---|---|---|---|
depth |
int
|
transformatördeki katman sayısı |
gerekli |
embedding_dim |
int
|
giriş katıştırmaları için kanal boyutu |
gerekli |
num_heads |
int
|
çok kafalı dikkat için kafa sayısı. Zorunlu embedding_dim'i böl |
gerekli |
mlp_dim |
int
|
MLP bloğuna dahili kanal boyutu |
gerekli |
activation |
Module
|
MLP bloğunda kullanılacak aktivasyon |
ReLU
|
Kaynak kodu ultralytics/models/sam/modules/transformer.py
forward(image_embedding, image_pe, point_embedding)
Parametreler:
İsim | Tip | Açıklama | Varsayılan |
---|---|---|---|
image_embedding |
Tensor
|
ilgilenilecek görüntü. Herhangi bir h ve w için B x embedding_dim x h x w şeklinde olmalıdır. |
gerekli |
image_pe |
Tensor
|
görüntüye eklenecek konumsal kodlama. image_embedding ile aynı şekle sahip olmalıdır. |
gerekli |
point_embedding |
Tensor
|
sorgu noktalarına eklenecek gömme. Herhangi bir N_points için B x N_points x embedding_dim şekline sahip olmalıdır. |
gerekli |
İade:
Tip | Açıklama |
---|---|
Tensor
|
işlenmiş point_embedding |
Tensor
|
işlenmiş görüntü_embedding |
Kaynak kodu ultralytics/models/sam/modules/transformer.py
ultralytics.models.sam.modules.transformer.TwoWayAttentionBlock
Üsler: Module
Hem kendi kendine dikkat hem de çapraz dikkati iki yönde gerçekleştiren bir dikkat bloğu: anahtarlara ve sorgular için anahtarlar. Bu blok dört ana katmandan oluşur: (1) seyrek girdiler üzerinde öz dikkat, (2) çapraz dikkat seyrek girdilerin yoğun girdilere, (3) seyrek girdiler üzerinde bir MLP bloğu ve (4) yoğun girdilerin seyrek girdiler.
Nitelikler:
İsim | Tip | Açıklama |
---|---|---|
self_attn |
Attention
|
Sorgular için öz dikkat katmanı. |
norm1 |
LayerNorm
|
İlk dikkat bloğunun ardından katman normalizasyonu. |
cross_attn_token_to_image |
Attention
|
Sorgulardan anahtarlara çapraz dikkat katmanı. |
norm2 |
LayerNorm
|
İkinci dikkat bloğunun ardından katman normalizasyonu. |
mlp |
MLPBlock
|
Sorgu gömülerini dönüştüren MLP bloğu. |
norm3 |
LayerNorm
|
MLP bloğunu takip eden katman normalizasyonu. |
norm4 |
LayerNorm
|
Üçüncü dikkat bloğunun ardından katman normalizasyonu. |
cross_attn_image_to_token |
Attention
|
Anahtarlardan sorgulara çapraz dikkat katmanı. |
skip_first_layer_pe |
bool
|
İlk katmandaki konumsal kodlamanın atlanıp atlanmayacağı. |
Kaynak kodu ultralytics/models/sam/modules/transformer.py
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
|
__init__(embedding_dim, num_heads, mlp_dim=2048, activation=nn.ReLU, attention_downsample_rate=2, skip_first_layer_pe=False)
Dört katmanlı bir dönüştürücü bloğu: (1) seyrek girdilerin kendi kendine dikkati, (2) seyrek girdilerin çapraz dikkati yoğun girdilere, (3) seyrek girdiler üzerinde mlp bloğu ve (4) yoğun girdilerin seyrek girdilere çapraz dikkati Girdiler.
Parametreler:
İsim | Tip | Açıklama | Varsayılan |
---|---|---|---|
embedding_dim |
int
|
gömülmelerin kanal boyutu |
gerekli |
num_heads |
int
|
dikkat katmanlarındaki kafa sayısı |
gerekli |
mlp_dim |
int
|
mlp bloğunun gi̇zli̇ boyutu |
2048
|
activation |
Module
|
mlp bloğunun akti̇vasyonu |
ReLU
|
skip_first_layer_pe |
bool
|
ilk katmandaki PE'yi atlayın |
False
|
Kaynak kodu ultralytics/models/sam/modules/transformer.py
forward(queries, keys, query_pe, key_pe)
Sorgulara ve anahtarlara öz dikkat ve çapraz dikkat uygulayın ve işlenmiş katıştırmaları döndürün.
Kaynak kodu ultralytics/models/sam/modules/transformer.py
ultralytics.models.sam.modules.transformer.Attention
Üsler: Module
Sorgulara, anahtarlara ve projeksiyondan sonra gömme boyutunun küçültülmesine izin veren bir dikkat katmanı değerler.
Kaynak kodu ultralytics/models/sam/modules/transformer.py
__init__(embedding_dim, num_heads, downsample_rate=1)
Attention modelini verilen boyutlar ve ayarlarla başlatır.
Parametreler:
İsim | Tip | Açıklama | Varsayılan |
---|---|---|---|
embedding_dim |
int
|
Giriş katıştırmalarının boyutluluğu. |
gerekli |
num_heads |
int
|
Dikkat kafalarının sayısı. |
gerekli |
downsample_rate |
int
|
İç boyutların küçültüldüğü faktör. Varsayılan değer 1'dir. |
1
|
Zamlar:
Tip | Açıklama |
---|---|
AssertionError
|
'num_heads' dahili boyutu (embedding_dim / downsample_rate) eşit olarak bölmezse. |
Kaynak kodu ultralytics/models/sam/modules/transformer.py
forward(q, k, v)
Giriş sorgusu, anahtar ve değer tensörleri verildiğinde dikkat çıktısını hesaplayın.