Deformable Attention
يتيح الانتباه القابل للتشوه لكل استعلام الانتباه إلى بضع نقاط أخذ عينات متعلّمة حول موقع مرجعي، بدلًا من كل موضع في خريطة السمات.
الانتباه القابل للتشوه آلية انتباه للرؤية الحاسوبية، ينتبه فيها كل استعلام إلى عدد صغير وثابت من نقاط أخذ العينات حول موضع مرجعي، بدلًا من كل موضع في خريطة السمات. ويتنبأ الاستعلام نفسه بمواقع هذه النقاط، بوصفها إزاحات عن الموضع المرجعي، وبأوزان مساهمة كل نقطة، لذلك تزداد التكلفة مع عدد الاستعلامات والنقاط لا مع دقة الصورة. طرح Xizhou Zhu وJifeng Dai وزملاؤهما في SenseTime وUniversity of Science and Technology of China وChinese University of Hong Kong هذا الأسلوب في Deformable DETR، وهي ورقة عُرضت شفهيًا في ICLR 2021. وقد عالجت نقطتي ضعف محوّل كشف DETR الأصلي Transformer: فالانتباه الكامل قيّده بالسمات منخفضة الدقة، واستغرق التدريب 500 عصر. احتاج Deformable DETR إلى أعشار عدد العصور، وكشف الكائنات الصغيرة على نحو أفضل.
آلية عمل الانتباه القابل للتشوه#
توسّع الفكرة الالتفاف القابل للتشوه، الذي شارك Dai أيضًا في تطويره، إذ يتعلم إزاحات نقاط أخذ العينات في نواة الالتفاف. ولكل استعلام ذي نقطة مرجعية، يستخدم كل رأس انتباه طبقتين خطيتين على سمات الاستعلام: تتنبأ إحداهما بإزاحات K لنقاط أخذ العينات، وتتنبأ الأخرى بأوزان انتباه K، ثم تُطبّع باستخدام softmax. وتُقرأ سمات القيم عند كل نقطة مزاحة باستخدام الاستيفاء ثنائي الخطية، لأن الإزاحات كسرية، ثم يعيد الرأس مجموعها الموزون. تستخدم الورقة 8 رؤوس وK = 4 نقاط، لذلك يقرأ الاستعلام 32 موضعًا لكل خريطة سمات، بينما يحسب الانتباه الذاتي القياسي درجات كل بكسل. ويمكن تنفيذ نسخة أحادية الرأس والمقياس في بضعة أسطر من PyTorch:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
dim, n_points, n_queries = 32, 4, 100
value = torch.randn(1, dim, 64, 64) # a 64x64 feature map: 4,096 positions
query = torch.randn(n_queries, dim)
ref = torch.rand(n_queries, 2) * 2 - 1 # reference points in grid_sample's [-1, 1] coordinates
# Each query predicts where to look (offsets) and how much each sample counts (weights)
to_offsets, to_weights = torch.nn.Linear(dim, n_points * 2), torch.nn.Linear(dim, n_points)
offsets = 0.1 * to_offsets(query).view(n_queries, n_points, 2)
weights = to_weights(query).softmax(dim=-1)
# Bilinearly sample the value map at reference + offset, then take the weighted sum
grid = (ref[:, None] + offsets)[None] # (1, n_queries, n_points, 2)
sampled = F.grid_sample(value, grid, align_corners=False)[0] # (dim, n_queries, n_points)
out = (sampled * weights).sum(dim=-1).T # (n_queries, dim)
print(f"Output {tuple(out.shape)} from {n_queries * n_points} samples, not {n_queries * 64 * 64:,} dense scores")يطبع Output (100, 32) from 400 samples, not 409,600 dense scores: إذ يقرأ كل استعلام من الاستعلامات الـ100 أربعة مواضع من أصل 4,096. ويعدّل التدريب طبقتَي الإزاحات والأوزان، فتتحرك النقاط نحو أجزاء الصورة المفيدة للمهمة.
الانتباه القابل للتشوه متعدد المقاييس#
تظهر الكائنات بأحجام مختلفة جدًا، لذلك يأخذ Deformable DETR عينات من نقاط على عدة خرائط سمات في آن واحد. ومع وجود L مستويات، يأخذ كل رأس K نقاط في كل مستوى ويطبّع الأوزان على جميع النقاط L × K معًا، ما يمزج السمات الدقيقة والخشنة في خطوة واحدة، واستُخدم بدلًا من شبكة هرم السمات (FPN) في المشفّر. يطبّقه المشفّر بوصفه انتباهًا ذاتيًا، حيث تكون كل نقطة بكسل في كل مستوى استعلامًا، بينما يطبّقه المفكّك بوصفه انتباهًا تبادليًا بين استعلامات الكائنات وسمات الصورة.
يستخدم RT-DETR، وهو محوّل Baidu للكشف الآني والمتاح في حزمة Ultralytics، الانتباه القابل للتشوه متعدد المقاييس بوصفه الانتباه التبادلي في طبقاته الست للمفكّك: إذ يأخذ كل استعلام من استعلامات الكائنات الـ300 أربع نقاط لكل رأس من الرؤوس الثمانية على خرائط السمات ذات الخطوات 8 و16 و32، أي 96 موضعًا إجمالًا، بينما كان الانتباه التبادلي الكامل على تلك الخرائط لصورة طول ضلعها 640 بكسل سيحسب درجات 8,400 موضع.
التطبيقات#
- كشف الكائنات: تحتفظ النماذج اللاحقة لـDeformable DETR، ومنها DINO وRT-DETR، بالانتباه التبادلي القابل للتشوه في مفكّكاتها، ما يتيح لها قراءة سمات عالية الدقة للكائنات الصغيرة.
- المركبات ذاتية القيادة: يحوّل BEVFormer الصور الملتقطة بكاميرات متعددة في السيارة إلى شبكة بمنظور علوي، حيث تأخذ كل خلية في الشبكة عينات من نقاط قابلة للتشوه ضمن مشاهد الكاميرات التي تراها.
- التقسيم الشامل: ينشئ Mask2Former سمات البكسل متعددة المقاييس باستخدام الانتباه القابل للتشوه قبل التنبؤ بالأقنعة.
الانتباه القابل للتشوه ومصطلحات ذات صلة#
- انتباه النافذة المنزلقة: ينتبه إلى مجموعة جوار ثابتة يحددها الموضع، وتكون المجموعة نفسها لكل المدخلات.
- الانتباه المتناثر: يحسب درجات مجموعة فرعية ثابتة من أزواج الرموز المحددة مسبقًا.
- انتباه Flash: يحسب الانتباه الكثيف العادي بسرعة أكبر عبر تقسيمه إلى كتل في ذاكرة GPU على الشريحة، مع الحفاظ على النتيجة نفسها التي ينتجها الانتباه القياسي.
- انتباه محوّل الرؤية (ViT): يقارن كل رقعة في الصورة بكل رقعة أخرى، لذلك تزداد تكلفته مع مربع عدد الرقع.










