RT-DETR من Baidu: كاشف أجسام في الوقت الفعلي يعتمد على Transformer رؤية

نظرة عامة

يعد Real-Time Detection Transformer (RT-DETR)، الذي طورته Baidu، كاشف أجسام متطورًا وشاملًا (end-to-end) يوفر أداءً في الوقت الفعلي مع الحفاظ على دقة عالية. يعتمد النموذج على فكرة DETR (هيكل بدون NMS)، مع تقديم backbone يعتمد على التلافيف ومشفر هجين فعال لاكتساب سرعة في الوقت الفعلي. يعالج RT-DETR الميزات متعددة النطاقات بكفاءة من خلال فصل التفاعل داخل النطاق والدمج بين النطاقات. يتميز النموذج بقابلية تكيف عالية، حيث يدعم الضبط المرن لسرعة الاستدلال باستخدام طبقات مفكك ترميز مختلفة دون الحاجة لإعادة التدريب. يتفوق RT-DETR على الأنظمة المسرعة مثل CUDA مع TensorRT، متجاوزًا العديد من كاشفات الأجسام الأخرى التي تعمل في الوقت الفعلي.



Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀

نظرة عامة على بنية نموذج RT-DETR من Baidu نظرة عامة على RT-DETR من Baidu. يوضح مخطط بنية نموذج RT-DETR المراحل الثلاث الأخيرة من الـ backbone {S3, S4, S5} كمدخل للمشفر. يقوم المشفر الهجين الفعال بتحويل الميزات متعددة النطاقات إلى سلسلة من ميزات الصورة من خلال تفاعل الميزات داخل النطاق (AIFI) ووحدة دمج الميزات عبر النطاقات (CCFM). يتم استخدام اختيار الاستعلام المدرك لـ IoU لتحديد عدد ثابت من ميزات الصورة لتكون بمثابة استعلامات أولية للأجسام في مفكك الترميز. أخيرًا، يقوم مفكك الترميز المزود برؤوس تنبؤ مساعدة بتحسين استعلامات الأجسام تكراريًا لتوليد الصناديق ودرجات الثقة (المصدر).

الميزات الرئيسية

  • مشفر هجين فعال: يستخدم RT-DETR من Baidu مشفرًا هجينًا فعالًا يعالج الميزات متعددة النطاقات من خلال فصل التفاعل داخل النطاق والدمج بين النطاقات. هذا التصميم الفريد القائم على Vision Transformers يقلل من التكاليف الحسابية ويسمح بـ اكتشاف الأجسام في الوقت الفعلي.
  • اختيار الاستعلام المدرك لـ IoU: يعمل RT-DETR من Baidu على تحسين تهيئة استعلام الأجسام باستخدام اختيار الاستعلام المدرك لـ IoU. هذا يسمح للنموذج بالتركيز على الأجسام الأكثر صلة في المشهد، مما يعزز دقة الاكتشاف.
  • سرعة استدلال قابلة للتكيف: يدعم RT-DETR من Baidu تعديلات مرنة لسرعة الاستدلال باستخدام طبقات مفكك ترميز مختلفة دون الحاجة إلى إعادة التدريب. تسهل هذه القابلية للتكيف التطبيق العملي في سيناريوهات اكتشاف الأجسام المختلفة في الوقت الفعلي.
  • إطار عمل بدون NMS: بناءً على DETR، يلغي RT-DETR الحاجة إلى معالجة لاحقة عبر non-maximum suppression، مما يبسط خط أنابيب الاكتشاف وربما يحسن الكفاءة.
  • اكتشاف بدون مرساة (Anchor-Free): بصفتها anchor-free detector، يبسط RT-DETR عملية الاكتشاف وقد يحسن التعميم عبر مجموعات بيانات مختلفة.

النماذج المدربة مسبقاً

توفر واجهة Ultralytics Python API نماذج RT-DETR المدربة مسبقًا من PaddlePaddle بمقاييس مختلفة:

  • RT-DETR-L: دقة 53.0% AP على COCO val2017، و114 إطارًا في الثانية على T4 GPU
  • RT-DETR-X: دقة 54.8% AP على COCO val2017، و74 إطارًا في الثانية على T4 GPU

بالإضافة إلى ذلك، أصدرت Baidu نموذج RTDETRv2 في يوليو 2024، والذي يحسن البنية الأصلية بشكل أكبر مع مقاييس أداء معززة.

أمثلة الاستخدام

يقدم هذا المثال أمثلة بسيطة لتدريب واستدلال RT-DETR. للحصول على التوثيق الكامل حول هذه الأوضاع وغيرها، راجع صفحات توثيق التنبؤ، التدريب، التحقق، والتصدير. يمكن أيضًا تدريب النماذج على وحدات معالجة الرسومات السحابية من خلال منصة Ultralytics.

مثال
from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
مقايضات سرعة الاستدلال

تدعم الأوزان المدربة مسبقًا لـ RT-DETR إعدادين أثناء الاستدلال لتقليل التأخير دون إعادة التدريب:

  • eval_idx: إيقاف فك الترميز مبكرًا. بالنسبة لمفكك الترميز الافتراضي المكون من 6 طبقات، استخدم فهرسًا يبدأ من الصفر (05). يستخدم eval_idx=5 جميع الطبقات؛ ويستخدم eval_idx=3 4 طبقات. على T4 GPU مع TensorRT v10.11، يتحسن RT-DETR-L من 8.0 مللي ثانية / 52.7 mAP إلى 7.4 مللي ثانية / 52.5 mAP مع 4 طبقات.
  • num_queries: تقليل استعلامات الأجسام (الافتراضي: 300). يمكن أن يؤدي خفضها إلى 100 إلى الوصول إلى 7.4 مللي ثانية / 51.7 mAP على COCO في نفس الإعداد. في مجموعات البيانات التي تحتوي على عدد أقل من الأجسام لكل صورة، يكون انخفاض mAP أصغر عادةً، ولكن حافظ على القيمة أعلى من الحد الأقصى المتوقع للأجسام لكل صورة.

كلا الإعدادين يمكن أن يخفضا mAP — تحقق من المقايضة على مجموعة بياناتك قبل النشر.

from ultralytics import RTDETR

rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]

# Choose one or both settings after validating the speed/accuracy trade-off.
head.decoder.eval_idx = 3  # Use 4 of 6 decoder layers.
head.num_queries = 100  # Use fewer object queries.

results = rtdetr("path/to/image.jpg")

# Export uses the same decoder and query settings, including TensorRT exports.
rtdetr.export(format="engine", device=0, half=True)

المهام والأنماط المدعومة

يقدم هذا الجدول أنواع النماذج، والأوزان المدربة مسبقًا المحددة، والمهام التي يدعمها كل نموذج، والأوضاع المختلفة (التدريب، التحقق، التنبؤ، التصدير) المدعومة، والمشار إليها برموز ✅.

نوع النموذجالأوزان المدربة مسبقاًالمهام المدعومةالاستدلالالتحققالتدريبتصدير
RT-DETR كبير (Large)rtdetr-l.ptاكتشاف الكائنات
RT-DETR كبير جدًا (Extra-Large)rtdetr-x.ptاكتشاف الكائنات
متغيرات البنية فقط

يتم شحن rtdetr-resnet50.yaml وrtdetr-resnet101.yaml كبنيات YAML فقط. تصدر Ultralytics أوزانًا مدربة مسبقًا فقط لـ rtdetr-l وrtdetr-x. قم بإنشاء متغيرات ResNet من YAML (على سبيل المثال، RTDETR("rtdetr-resnet50.yaml")) وقم بتدريبها أو ضبطها بدقة حسب الحاجة.

حالات الاستخدام المثالية

يعتبر RT-DETR مناسبًا بشكل خاص للتطبيقات التي تتطلب كلاً من الدقة العالية والأداء في الوقت الفعلي:

الاقتباسات والشكر

إذا كنت تستخدم RT-DETR من Baidu في عملك البحثي أو التطويري، يرجى الاستشهاد بـ الورقة الأصلية:

اقتباس
@misc{lv2023detrs,
      title={DETRs Beat YOLOs on Real-time Object Detection},
      author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
      year={2023},
      eprint={2304.08069},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

بالنسبة لـ RTDETRv2، يمكنك الاستشهاد بـ ورقة 2024:

اقتباس
@misc{lv2024rtdetrv2,
      title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
      author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
      year={2024},
      eprint={2407.17140},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

نود أن نشكر Baidu وفريق PaddlePaddle لإنشاء والحفاظ على هذا المورد القيم لمجتمع رؤية الكمبيوتر. إن مساهمتهم في المجال من خلال تطوير كاشف الأجسام في الوقت الفعلي القائم على Vision Transformers، RT-DETR، محل تقدير كبير.

الأسئلة الشائعة

ما هو نموذج RT-DETR من Baidu وكيف يعمل؟

RT-DETR من Baidu (Real-Time Detection Transformer) هو كاشف أجسام متطور في الوقت الفعلي مبني على بنية Vision Transformer. يقوم بمعالجة الميزات متعددة النطاقات بكفاءة من خلال فصل التفاعل داخل النطاق والدمج بين النطاقات عبر المشفر الهجين الفعال الخاص به. من خلال استخدام اختيار الاستعلام المدرك لـ IoU، يركز النموذج على الأجسام الأكثر صلة، مما يعزز دقة الاكتشاف. إن سرعة الاستدلال القابلة للتكيف، التي يتم تحقيقها عن طريق ضبط طبقات مفكك الترميز دون إعادة التدريب، تجعل RT-DETR مناسبًا لمختلف سيناريوهات اكتشاف الأجسام في الوقت الفعلي. تعرف على المزيد حول ميزات RT-DETR في ورقة RT-DETR Arxiv.

كيف يمكنني استخدام نماذج RT-DETR المدربة مسبقًا التي توفرها Ultralytics؟

يمكنك الاستفادة من واجهة Ultralytics Python API لاستخدام نماذج RT-DETR المدربة مسبقًا من PaddlePaddle. على سبيل المثال، لتحميل نموذج RT-DETR-l مدرب مسبقًا على COCO val2017 وتحقيق إطارات عالية في الثانية على T4 GPU، يمكنك استخدام المثال التالي:

مثال
from ultralytics import RTDETR

# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

لماذا يجب أن أختار RT-DETR من Baidu على كاشفات الأجسام الأخرى في الوقت الفعلي؟

يتميز RT-DETR من Baidu بمشفره الهجين الفعال واختيار الاستعلام المدرك لـ IoU، مما يقلل التكاليف الحسابية بشكل كبير مع الحفاظ على دقة عالية. إن قدرته الفريدة على ضبط سرعة الاستدلال باستخدام طبقات مختلفة من مفكك الترميز دون إعادة التدريب تضيف مرونة كبيرة. وهذا يجعله مفيدًا بشكل خاص للتطبيقات التي تتطلب أداءً في الوقت الفعلي على أنظمة مسرعة مثل CUDA مع TensorRT، متفوقًا على العديد من كاشفات الأجسام الأخرى في الوقت الفعلي. توفر بنية transformer أيضًا فهمًا أفضل للسياق العالمي مقارنة بالكاشفات التقليدية المعتمدة على CNN.

كيف يدعم RT-DETR سرعة الاستدلال القابلة للتكيف لتطبيقات الوقت الفعلي المختلفة؟

يسمح RT-DETR من Baidu بتعديلات مرنة لسرعة الاستدلال باستخدام طبقات مفكك ترميز مختلفة دون الحاجة إلى إعادة التدريب. تعد هذه القابلية للتكيف حاسمة لتوسيع نطاق الأداء عبر مهام اكتشاف الأجسام المختلفة في الوقت الفعلي. سواء كنت بحاجة إلى معالجة أسرع لاحتياجات دقة أقل أو اكتشافات أبطأ وأكثر دقة، يمكن تخصيص RT-DETR لتلبية متطلباتك المحددة. هذه الميزة ذات قيمة خاصة عند نشر النماذج عبر أجهزة ذات قدرات حسابية متفاوتة.

هل يمكنني استخدام نماذج RT-DETR مع أوضاع Ultralytics الأخرى، مثل التدريب والتحقق والتصدير؟

نعم، نماذج RT-DETR متوافقة مع أوضاع Ultralytics المختلفة بما في ذلك التدريب والتحقق والتنبؤ والتصدير. يمكنك الرجوع إلى التوثيق الخاص بكل وضع للحصول على تعليمات مفصلة حول كيفية استخدام هذه الأوضاع: التدريب، التحقق، التنبؤ، والتصدير. وهذا يضمن سير عمل شامل لتطوير ونشر حلول اكتشاف الأجسام الخاصة بك. يوفر إطار عمل Ultralytics واجهة برمجة تطبيقات متسقة عبر بنيات النماذج المختلفة، مما يسهل العمل مع نماذج RT-DETR.

التعليقات