مرجع ل ultralytics/models/sam/modules/transformer.py
ملاحظه
هذا الملف متاح في https://github.com/ultralytics/ultralytics/ نقطة / الرئيسية /ultralytics/نماذج/sam/ وحدات / transformer.py. إذا اكتشفت مشكلة ، فيرجى المساعدة في إصلاحها من خلال المساهمة في طلب 🛠️ سحب. شكرا لك 🙏!
ultralytics.models.sam.modules.transformer.TwoWayTransformer
قواعد: Module
وحدة محول ثنائية الاتجاه تتيح الانتباه المتزامن لكل من نقاط الصورة والاستعلام. هذه الفئة يعمل كوحدة فك ترميز محول متخصصة تحضر إلى صورة إدخال باستخدام الاستعلامات التي يتم تضمينها الموضعي يتم توفيرها. هذا مفيد بشكل خاص لمهام مثل اكتشاف الكائنات وتجزئة الصورة وسحابة النقاط تجهيز.
سمات:
اسم | نوع | وصف |
---|---|---|
depth |
int
|
عدد الطبقات في المحول. |
embedding_dim |
int
|
بعد القناة لتضمينات الإدخال. |
num_heads |
int
|
عدد الرؤوس للانتباه متعدد الرؤوس. |
mlp_dim |
int
|
بعد القناة الداخلية لكتلة MLP. |
layers |
ModuleList
|
قائمة طبقات TwoWayAttentionBlock التي تشكل المحول. |
final_attn_token_to_image |
Attention
|
طبقة الاهتمام النهائية المطبقة من الاستعلامات على الصورة. |
norm_final_attn |
LayerNorm
|
تم تطبيق تسوية الطبقة على الاستعلامات النهائية. |
شفرة المصدر في 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)
وحدة فك ترميز المحول التي تهتم بصورة إدخال باستخدام الاستعلامات التي يتم توفير تضمينها الموضعي.
البارامترات:
اسم | نوع | وصف | افتراضي |
---|---|---|---|
depth |
int
|
عدد الطبقات في المحول |
مطلوب |
embedding_dim |
int
|
بعد القناة لتضمينات الإدخال |
مطلوب |
num_heads |
int
|
عدد الرؤوس للانتباه متعدد الرؤوس. يجب قسم embedding_dim |
مطلوب |
mlp_dim |
int
|
بعد القناة الداخلي لكتلة MLP |
مطلوب |
activation |
Module
|
التنشيط المراد استخدامه في كتلة MLP |
ReLU
|
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
forward(image_embedding, image_pe, point_embedding)
البارامترات:
اسم | نوع | وصف | افتراضي |
---|---|---|---|
image_embedding |
Tensor
|
صورة للحضور إليها. يجب أن يكون الشكل B × embedding_dim x h x w لأي h و w. |
مطلوب |
image_pe |
Tensor
|
الترميز الموضعي لإضافته إلى الصورة. يجب أن يكون لها نفس شكل image_embedding. |
مطلوب |
point_embedding |
Tensor
|
التضمين لإضافته إلى نقاط الاستعلام. يجب أن يكون الشكل B × N_points × embedding_dim لأي N_points. |
مطلوب |
ارجاع:
نوع | وصف |
---|---|
Tensor
|
point_embedding المعالجة |
Tensor
|
image_embedding المعالجة |
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
ultralytics.models.sam.modules.transformer.TwoWayAttentionBlock
قواعد: Module
كتلة انتباه تؤدي كلا من الانتباه الذاتي والانتباه المتقاطع في اتجاهين: الاستعلامات إلى المفاتيح و مفاتيح الاستعلامات. تتكون هذه الكتلة من أربع طبقات رئيسية: (1) الانتباه الذاتي على المدخلات المتناثرة ، (2) الانتباه المتقاطع من المدخلات المتفرقة إلى المدخلات الكثيفة ، (3) كتلة MLP على المدخلات المتفرقة ، و (4) الانتباه المتبادل للمدخلات الكثيفة إلى مدخلات متفرقة.
سمات:
اسم | نوع | وصف |
---|---|---|
self_attn |
Attention
|
طبقة الاهتمام الذاتي للاستعلامات. |
norm1 |
LayerNorm
|
تطبيع الطبقة بعد كتلة الانتباه الأولى. |
cross_attn_token_to_image |
Attention
|
طبقة الانتباه المتبادل من الاستعلامات إلى المفاتيح. |
norm2 |
LayerNorm
|
تطبيع الطبقة بعد كتلة الانتباه الثانية. |
mlp |
MLPBlock
|
كتلة MLP التي تحول تضمينات الاستعلام. |
norm3 |
LayerNorm
|
تطبيع الطبقة بعد كتلة MLP. |
norm4 |
LayerNorm
|
تطبيع الطبقة بعد كتلة الانتباه الثالثة. |
cross_attn_image_to_token |
Attention
|
طبقة الانتباه المتقاطع من المفاتيح إلى الاستعلامات. |
skip_first_layer_pe |
bool
|
ما إذا كنت تريد تخطي الترميز الموضعي في الطبقة الأولى. |
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
__init__(embedding_dim, num_heads, mlp_dim=2048, activation=nn.ReLU, attention_downsample_rate=2, skip_first_layer_pe=False)
كتلة محول بأربع طبقات: (1) الانتباه الذاتي للمدخلات المتناثرة ، (2) الانتباه المتقاطع للمتفرق المدخلات إلى المدخلات الكثيفة ، (3) كتلة MLP على المدخلات المتفرقة ، و (4) الانتباه المتقاطع للمدخلات الكثيفة إلى متفرقة المدخلات.
البارامترات:
اسم | نوع | وصف | افتراضي |
---|---|---|---|
embedding_dim |
int
|
بعد القناة للتضمينات |
مطلوب |
num_heads |
int
|
عدد الرؤوس في طبقات الانتباه |
مطلوب |
mlp_dim |
int
|
البعد الخفي لكتلة MLP |
2048
|
activation |
Module
|
تفعيل كتلة MLP |
ReLU
|
skip_first_layer_pe |
bool
|
تخطي PE على الطبقة الأولى |
False
|
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
forward(queries, keys, query_pe, key_pe)
قم بتطبيق الانتباه الذاتي والانتباه المتبادل على الاستعلامات والمفاتيح وأعد عمليات التضمين التي تمت معالجتها.
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
ultralytics.models.sam.modules.transformer.Attention
قواعد: Module
طبقة انتباه تسمح بتصغير حجم التضمين بعد الإسقاط على الاستعلامات والمفاتيح و القيم.
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
__init__(embedding_dim, num_heads, downsample_rate=1)
تهيئة نموذج الانتباه بالأبعاد والإعدادات المحددة.
البارامترات:
اسم | نوع | وصف | افتراضي |
---|---|---|---|
embedding_dim |
int
|
أبعاد تضمين المدخلات. |
مطلوب |
num_heads |
int
|
عدد رؤوس الاهتمام. |
مطلوب |
downsample_rate |
int
|
العامل الذي يتم من خلاله تقليل الأبعاد الداخلية. الإعدادات الافتراضية إلى 1. |
1
|
يثير:
نوع | وصف |
---|---|
AssertionError
|
إذا لم يقسم "num_heads" الخافت الداخلي بالتساوي (embedding_dim / downsample_rate). |
شفرة المصدر في ultralytics/models/sam/modules/transformer.py
forward(q, k, v)
احسب إخراج الانتباه بالنظر إلى استعلام الإدخال والمفتاح وموترات القيمة.