Object Detection Architectures
استكشف بنيات اكتشاف الكائنات، من الأجزاء الأساسية إلى الرؤوس. وتعلّم كيف يقدّم Ultralytics YOLO26 سرعة ودقة متميزتين للرؤية الحاسوبية في الوقت الفعلي.
بنى اكتشاف الأجسام هي المخططات الهيكلية للشبكات العصبية المستخدمة لتحديد العناصر داخل البيانات المرئية وتحديد مواقعها. وفي المجال الأوسع لـالرؤية الحاسوبية (CV)، تحدد هذه البنى كيفية "رؤية" الآلة من خلال معالجة بيانات البكسلات الخام وتحويلها إلى رؤى مفيدة. وعلى خلاف نماذج التصنيف الأساسية التي تكتفي بتسمية الصورة، صُممت بنية اكتشاف الأجسام لإخراج صندوق إحاطة إلى جانب تسمية الفئة ودرجة ثقة لكل جسم مميز تعثر عليه. ويحدد هذا التصميم الهيكلي سرعة النموذج ودقته وكفاءته الحسابية، ما يجعله العامل الحاسم عند اختيار نموذج من أجل الاستدلال في الوقت الفعلي أو التحليل عالي الدقة.
المكونات الأساسية للبنية#
رغم اختلاف التصميمات المحددة، تشترك معظم البنى الحديثة في ثلاثة مكونات أساسية: العمود الفقري، والعنق، والرأس. يعمل العمود الفقري كمستخرج أساسي للسمات. وعادةً ما يكون شبكة عصبية التفافية (CNN) مدرَّبة مسبقًا على مجموعة بيانات كبيرة مثل ImageNet، وتتولى تحديد الأشكال الأساسية والحواف والقوامات. ومن الخيارات الشائعة للأعمدة الفقرية ResNet وCSPDarknet.
يربط العنق العمود الفقري بطبقات الإخراج النهائية. ويتمثل دوره في مزج السمات من المراحل المختلفة للعمود الفقري ودمجها، لضمان قدرة النموذج على اكتشاف الأجسام بمختلف أحجامها—وهو مفهوم يُعرف باسم دمج السمات متعدد المقاييس. وغالبًا ما تستخدم البنى شبكة هرم السمات (FPN) أو شبكة تجميع المسارات (PANet) هنا لإثراء المعلومات الدلالية التي تُمرَّر إلى طبقات التنبؤ. وأخيرًا، يعالج رأس الاكتشاف هذه السمات المدمجة للتنبؤ بالفئة المحددة والإحداثيات المكانية لكل جسم.
التطور: الكاشفات ذات المرحلتين مقابل ذات المرحلة الواحدة#
تاريخيًا، قُسّمت البنى إلى فئتين رئيسيتين. إذ تقترح الكاشفات ذات المرحلتين، مثل عائلة R-CNN، أولًا مناطق الاهتمام (RoIs) التي قد توجد فيها الأجسام، ثم تصنّف تلك المناطق في خطوة ثانية. وعلى الرغم من دقتها عمومًا، فإنها غالبًا ما تكون مكلفة حسابيًا بدرجة تفوق قدرة الأجهزة الطرفية.
وعلى النقيض من ذلك، تتعامل الكاشفات ذات المرحلة الواحدة مع الاكتشاف باعتباره مسألة انحدار بسيطة، إذ تربط بكسلات الصورة مباشرةً بإحداثيات صناديق الإحاطة واحتمالات الفئات في تمريرة واحدة. وقد أحدث هذا النهج، الذي ابتكرته عائلة YOLO (انظر مرة واحدة فقط)، ثورة في المجال من خلال تمكين الأداء في الوقت الفعلي. وتُوِّجت التطورات الحديثة بنماذج مثل YOLO26، التي لا توفر سرعة فائقة فحسب، بل اعتمدت أيضًا بنى شاملة من البداية إلى النهاية وخالية من NMS. ومن خلال إزالة الحاجة إلى المعالجة اللاحقة الخاصة بـقمع غير الأعظم (NMS)، تقلل هذه البنى الأحدث تباين زمن الاستجابة، وهو أمر بالغ الأهمية للأنظمة الحساسة للسلامة.
التطبيقات الواقعية#
يؤثر اختيار البنية تأثيرًا مباشرًا في نجاح حلول الذكاء الاصطناعي عبر مختلف القطاعات.
- أتمتة البيع بالتجزئة: في المتاجر الذكية، تتيح البنى الفعالة ذات المرحلة الواحدة أنظمة دفع آلية تتعرف فورًا على المنتجات الموجودة على حزام ناقل أو داخل عربة تسوق، مما يقلل أوقات الانتظار والأخطاء البشرية.
- التشخيص الطبي: تُستخدم البنى عالية الدقة في تحليل الصور الطبية لاكتشاف الشذوذات، مثل الأورام، في صور الأشعة السينية أو فحوصات التصوير بالرنين المغناطيسي. وهنا تكون قدرة البنية على الاحتفاظ بالتفاصيل الدقيقة أكثر أهمية من سرعة المعالجة الخام.
التمييز بين المصطلحات ذات الصلة#
من المهم التمييز بين بنى الاكتشاف ومهام الرؤية الحاسوبية المماثلة:
- مقابل تصنيف الصور: تسند بنية تصنيف الصور (مثل VGG أو EfficientNet) تسمية واحدة إلى الصورة بأكملها (مثل "قطة"). لكنها لا تخبرك بمكان القطة أو بوجود عدة قطط، وهذه هي الوظيفة الأساسية لبنى الاكتشاف.
- مقابل تجزئة المثيلات: في حين يضع الاكتشاف صندوقًا حول الجسم، تحدد تجزئة المثيلات المخطط الدقيق لكل بكسل (القناع) لكل جسم. وغالبًا ما تكون بنى التجزئة امتدادات لبنى الاكتشاف (مثل إضافة فرع قناع إلى رأس الاكتشاف).
التنفيذ باستخدام Ultralytics#
جرّدت أطر العمل الحديثة هذه البنى من تعقيداتها، مما يتيح للمطورين الاستفادة من أحدث التصميمات بأقل قدر من التعليمات البرمجية. وباستخدام الحزمة ultralytics، يمكنك تحميل نموذج YOLO26 مدرَّب مسبقًا وتشغيل الاستدلال فورًا. وبالنسبة إلى الفرق التي تتطلع إلى إدارة مجموعات بياناتها وتدريب بنى مخصصة في السحابة، تعمل منصة Ultralytics على تبسيط مسار MLOps بأكمله.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Run inference on an image source
# This uses the model's architecture to detect objects
results = model("https://ultralytics.com/images/bus.jpg")
# Display the results
results[0].show()








