مهام الرؤية السبع
طابق سطر المخرجات مع التصنيف أو الكشف أو تجزئة الكائنات أو التجزئة الدلالية أو تقدير العمق أو تقدير الوضعية أو OBB، واختر أوزان YOLO26 التي تبدأ بها.
يُعد اختيار المهمة أغلى قرار تتخذه قبل التدريب. اختر التجزئة مع أن المربعات تكفي، فتتضاعف تكلفة وضع التسميات؛ أو اختر المربعات القائمة للأعلى للسفن المصوّرة بطائرة مسيّرة، فسيكون معظم كل مربع ماءً. يدعم Ultralytics YOLO سبع مهام عبر API واحدة، لذا يتعلق الاختيار بالمخرجات التي تحتاج إليها — لا بالأدوات.
عملي
المهام السبع في لمحة#

اقرأ الجدول بالاستناد إلى عمود المخرجات — فهذا ما يجب أن يطابقه سطر المخرجات في مواصفاتك.
| المهمة | المخرجات | ما الذي تجيب عنه | أوزان YOLO26 |
|---|---|---|---|
| التصنيف | تسمية واحدة لكل صورة، مع احتمال | «ما الذي تعرضه هذه الصورة؟» | yolo26n-cls.pt |
| الكشف | الفئة والمربع ودرجة الثقة لكل كائن | «ما الشيء وأين يوجد؟» | yolo26n.pt |
| تجزئة الكائنات | الفئة وقناع البكسلات لكل كائن | "ما الشكل الدقيق لكل كائن؟" | yolo26n-seg.pt |
| التجزئة الدلالية | فئة واحدة لكل بكسل | "ما نوع المنطقة التي يمثّلها كل بكسل؟" | yolo26n-sem.pt |
| تقدير العمق | المسافة بالأمتار لكل بكسل | "ما بُعد كل بكسل؟" | yolo26n-depth.pt |
| تقدير الوضعية | صندوق ونقاط مفتاحية لكل شخص أو كائن | "ما وضعية الجسم؟" | yolo26n-pose.pt |
| الصناديق المحيطة الموجّهة | صندوق مُدار لكل كائن | "ما الكائن الموجود، وأين، وبأي زاوية؟" | yolo26n-obb.pt |
هناك التباسان يربكان الناس. تجزئة الكائنات مقابل التجزئة الدلالية: تفصل تجزئة الكائنات كل كائن على حدة (ثلاث سيارات، وثلاثة أقنعة)؛ أما التجزئة الدلالية فتُصنّف البكسلات حسب الفئة فقط (منطقة واحدة لـ"سيارة"، بلا عدد). الكشف مقابل OBB: يعيد كلاهما صندوقًا واحدًا لكل كائن، لكن OBB يدور مع الكائن، وهو أمر مهم عندما تكون الكائنات بزاوية في الصور الملتقطة من الأعلى.
واجهة API واحدة، وسبعة أنواع من المخرجات#
لا يعني تبديل المهام تبديل الأدوات. يحدد ملف الأوزان ما ستستعيده، ويملأ كائن Results الخاصية المطابقة:
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
outputs = ["probs", "boxes", "masks", "semantic_mask", "depth", "keypoints", "obb"]
for suffix in ["-cls", "", "-seg", "-sem", "-depth", "-pose", "-obb"]:
weights = f"yolo26n{suffix}.pt"
model = YOLO(weights)
result = model(image, verbose=False)[0]
filled = [name for name in outputs if getattr(result, name) is not None]
print(f"{weights:18} task={model.task:9} -> {', '.join(filled)}")yolo26n-cls.pt task=classify -> probs
yolo26n.pt task=detect -> boxes
yolo26n-seg.pt task=segment -> boxes, masks
yolo26n-sem.pt task=semantic -> semantic_mask
yolo26n-depth.pt task=depth -> depth
yolo26n-pose.pt task=pose -> boxes, keypoints
yolo26n-obb.pt task=obb -> obbاقرأ العمود الأيمن: تعيد التجزئة وتقدير الوضعية الصناديق أيضًا، لأنهما يجمعان الكشف مع ميزة إضافية. أما التجزئة الدلالية وتقدير العمق فلا يعيدان أي مخرجات لكل كائن — بل يصفان كل بكسل بدلًا من ذلك. يقرأ الكود اللاحق إحدى هذه الخصائص تحديدًا، لذا ينبغي أن يذكر سطر المخرجات في مواصفاتك الخاصية المطلوبة.
الاختيار عمليًا#
ابدأ بما يجب أن يصفه كل تنبؤ، ثم اختر أقل المهام كلفةً للإجابة عن سؤال القرار:
- تسمية واحدة للصورة بأكملها ← التصنيف.
- فئة لكل بكسل، دون الحاجة إلى فصل الكائنات ← التجزئة الدلالية.
- مسافة لكل بكسل ← تقدير العمق.
- شيء يتعلق بكل كائن:
- موضعه، لعدّه أو تحديد موقعه أو تصفيته ← الكشف (أضف التتبّع لمعرفة الهوية عبر الإطارات)؛
- شكله الدقيق أو حدوده أو مساحته ← تجزئة الكائنات؛
- وضعيته ← تقدير الوضعية؛
- دورانه في الصور الملتقطة من الأعلى ← OBB.
عندما تلائم مهمتان احتياجك، اختر الأقل كلفةً في الوسم والتشغيل. يُعد الكشف الخيار الافتراضي لمعظم المنتجات: فمن السهل رسم الصناديق ومراجعتها، ومع إضافة التتبّع فإنها تتيح بالفعل العدّ والتنبيهات عند دخول المناطق والتحليلات المرورية، كما في مشهد الطريق السريع هذا:

العمق: المهمة التي تجيب عن سؤال «ما المسافة؟»#
يعيد تقدير العمق خريطةً بحجم الصورة، تتضمن مسافة واحدة بالأمتار لكل بكسل — من دون فئات أو صناديق. استخدمه عندما تؤثر المسافة في القرار: كروبوت يتفادى العوائق، أو مركبة تُبطئ عندما يقترب منها شيء، أو تقدير تقريبي لحجم كومة.
from ultralytics import YOLO
model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg", verbose=False)[0]
depth = result.depth.data # meters, one value per pixel
print(f"depth map {tuple(depth.shape)}, nearest {float(depth.min()):.1f} m, farthest {float(depth.max()):.1f} m")depth map (1080, 810), nearest 2.0 m, farthest 14.9 mتستنتج الكاميرا الواحدة العمق من مؤشرات متعلّمة مثل المنظور وحجم الكائن، لذا قِس خطأها في مشاهدك قبل استخدامها لتحديد مسافات بالغة الأهمية للسلامة. ويعمل العمق جيدًا مع الكشف: اكشف الكائن، ثم اقرأ خريطة العمق داخل صندوقه.
مواطن الخلل#
| الالتباس | العَرَض | الخيار الأفضل |
|---|---|---|
| استخدام التجزئة حين تكفي الصناديق | لا يقرأ أي كود لاحق القناع مطلقًا | الكشف |
| صناديق قائمة في صور ملتقطة من الأعلى | تغطي الصناديق الخلفية في معظمها، ويثبط بعضها بعضًا عند التجاور | OBB |
| استخدام التصنيف لمشهد متعدد الكائنات | تعتمد التسمية على كائن صغير واحد | الكشف مع قاعدة |
| استخدام التجزئة الدلالية عندما تحتاج إلى العدّ | تندمج الكائنات المتلامسة في منطقة واحدة | تجزئة الكائنات |
| استخدام حجم الصندوق بديلًا عن المسافة | تفشل القواعد عندما تختلف أحجام الكائنات | تقدير العمق، أو الكشف مع تقدير العمق |
| استخدام تقدير الوضعية للتحقق من الوجود | لا تقرأ أي نقطة مفتاحية مطلقًا | الكشف |
تزيد تكلفة المخرجات الأكثر تفصيلًا في كل مرحلة: يستغرق رسم الأقنعة والنقاط المفتاحية وقتًا أطول، ومراجعتها وقتًا أطول، كما تتطلب قواعد أكثر صرامة لوضع التسميات. ابدأ بأقل المهام تكلفةً مما يجيب عن سطر القرار، ولا تنتقل إلى مستوى أعلى إلا عندما يحتاج مستهلك فعلي إلى التفاصيل الإضافية.
عرض الحل
بالنسبة إلى مواصفات الرافعة الشوكية، الإجابة هي الكشف باستخدام yolo26n.pt، مع القراءة من result.boxes.
يجب أن يحدد سطر القرار موضع الرافعات الشوكية والأشخاص، حتى يتمكن الكود من التحقق من مدى قربهم. والصناديق تفي بذلك. تضيف تجزئة الكائنات كلفةً للوسم من دون أن تغيّر التنبيه، لأن الحافة السفلية للصندوق تحدد موضع الكائن على الأرض بالفعل. ولا حاجة إلى تقدير الوضعية لأن وضعية الجسم ليست جزءًا من القرار. قد يساعد العمق على تحويل مواضع الصور إلى أمتار، لكن كاميرا ثابتة ومعايرة تستطيع رسم خريطة لمستوى الأرض من دونه. ولا يستحق اختبار OBB إلا إذا كانت الكاميرات تنظر إلى الأسفل مباشرةً وكانت الرافعات الشوكية تظهر بزوايا قطرية حادة.