Ultralytics YOLO27: انضم إلى قائمة الانتظار.
Get Started
أساسيات الرؤية الحاسوبية·اقرأ المقاييس·الدرس 10/10
الدرسمبتدئ

من المختبر إلى الإنتاج

ثبّت Ultralytics، وشغّل YOLO26 على صورك، وتحقق من توافق المخرجات مع مواصفاتك، ثم اختر خطوتك التالية.

إن قضاء عشر دقائق مع نموذج مُدرَّب مسبقًا يجيب عن السؤال الذي يحدد خطتك بالكامل: هل يغطي نموذج جاهز فئاتك وكاميرتك بالفعل، أم تحتاج إلى بياناتك الخاصة؟ في هذا الدرس، تثبّت Ultralytics، وتشغّل YOLO26 على صور حقيقية، وتتحقق من النتيجة بمقارنتها بالمواصفات التي كتبتها في الدرس الأول.

النتيجة

شغّل YOLO26 على صورك، وحدد من المخرجات ما إذا كنت ستبدأ بنموذج أولي باستخدام أوزان مُدرَّبة مسبقًا أم ستنشئ مجموعة بيانات.

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. التثبيت: pip install ultralytics، ثم yolo checks.

  2. التنبؤ: yolo predict model=yolo26n.pt source=https://ultralytics.com/images/bus.jpg.

  3. تحقّق: أيّ من فئات مواصفاتك دُرّب عليها النموذج مسبقًا؟ وهل تقع المربعات في المواضع الصحيحة على صورك؟

  4. اختر الدورة التالية بناءً على الإجابة.

عملي

التثبيت#

pip install ultralytics
yolo checks

يثبّت السطر الأول حزمة Python ultralytics وأمر yolo، بالإضافة إلى PyTorch إذا لم يكن مثبتًا. يطبع yolo checks إصدارات Python وPyTorch وCUDA، والأجهزة التي ستستخدمها Ultralytics، حتى تتمكن من تأكيد الإعداد قبل تشغيل أي شيء. استخدم بيئة افتراضية جديدة؛ ويتناول دليل البدء السريع إعدادات conda وDocker وGPU.

إصدار Python

تُثبّت حزمة ultralytics على Python 3.8 والإصدارات الأحدث، لكن الإصدارات الحالية من PyTorch تحتاج إلى Python 3.10 أو أحدث. إذا كانت بيئتك أقدم، فأنشئ أولًا بيئة افتراضية جديدة باستخدام إصدار حديث من Python.

محدِّد PyTorch Start Locally، مع اختيار Stable وMac وPip وPython وDefault، ويعرض أمر التثبيت pip3 الخاص بـ torch وtorchvision وtorchaudio

وحدة GPU غير مستخدمة

العَرَض: تعرض yolo checks قيمة CPU على جهاز مزود بوحدة NVIDIA GPU، ويكون الاستدلال بطيئًا. السبب: تثبيت إصدار PyTorch يعمل على CPU فقط — مثل عجلة pip الافتراضية على Windows. الحل: اختر نظام التشغيل ومدير الحزم وإصدار CUDA في محدد PyTorch أعلاه، وشغّل الأمر المعروض، ثم أعد تثبيت ultralytics. على Mac، كما في لقطة الشاشة، يكون الإصدار الافتراضي مناسبًا؛ إذ تعمل Ultralytics على CPU ما لم تمرّر device=mps لاستخدام وحدة Apple GPU.

التنبؤ الأول#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # ⁨ينزّل نموذج nano بحجم ~5 MB عند أول استخدام⁩
results = model("https://ultralytics.com/images/bus.jpg", save=True)

for box in results[0].boxes:
    print(model.names[int(box.cls)], round(float(box.conf), 2))

يطبع كلاهما ملخصًا من سطر واحد لكل صورة، ويحفظ الصورة المشروحة ضمن runs/detect/predict:

image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predict

سطرًا بسطر: أُعيد تحجيم الصورة إلى 640×480 للاستدلال؛ وعثر النموذج على أربعة أشخاص وحافلة؛ واستغرق الاستدلال نحو 20 ms على وحدة CPU في حاسوب محمول. يمثّل السطر Speed أول فحص لزمن الاستجابة؛ قارنه بمعدل الإطارات في سطر الإدخال ضمن مواصفاتك. افتح الصورة المحفوظة: يتضمن كل مربع الفئة والمربع ودرجة الثقة من درس الكشف.

تحقّق من المخرجات بمقارنتها بمواصفاتك#

السؤالإذا كانت الإجابة نعمإذا كانت الإجابة لا
هل فئاتك ضمن فئات COCO الثمانين التي يعرفها النموذج؟أنشئ نموذجًا أوليًا من دون أي تدريبتحتاج إلى بيانات مصنّفة وضبط دقيق (دليل الضبط الدقيق)
هل تقع المربعات التي تتجاوز عتبتك على الكائنات الصحيحة في صورك أنت؟المهمة ووجهة النظر متطابقتانتوقّع وجود فجوة في المجال: اجمع بيانات من كاميراتك
هل نوع المخرجات هو ما يحتاج إليه سطر القرار لديك؟أبقِ على المهمةبدّل الأوزان: -seg، أو -sem، أو -depth، أو -pose، أو -obb، أو -cls
هل السرعة كافية لمعدل الإطارات المطلوب على الأجهزة المستهدفة؟تابعجرّب نموذجًا أصغر أو تنسيق تصدير مُحسّنًا

للسؤال الأول إجابة محددة: يعرض model.names كل فئة يعرفها النموذج المُدرَّب مسبقًا. في مواصفات الرافعة الشوكية، تُعد person فئةً ضمن COCO، أما forklift فليست كذلك؛ لذا لن تجعل أي عتبة النموذج المُدرَّب مسبقًا يعثر على رافعة شوكية. هذه أكثر نتائج التشغيل الأول شيوعًا؛ إذ يغطي النموذج جزءًا من المواصفات. والخطوة الصحيحة هي إنشاء نموذج أولي لمنطق القرار باستخدام الفئات المتاحة، مع بناء مجموعة بيانات لبقية الفئات.

ما الذي يتغير في الإنتاج#

يواجه النموذج المنشور ظروفًا لم تُعتمد عليها عينات مجموعة بياناته، مثل الكاميرات والفصول والمنتجات والزيّات الجديدة. ومن دون إعادة التدريب، تتراجع الدقة؛ أما إعادة التدريب بانتظام على ما تكشفه بيئة الإنتاج فتُعيدها إلى التحسن:

مخططان لدقة النموذج بمرور الوقت: نموذج تتراجع دقته من دون إعادة تدريب، ونموذج يُعاد تدريبه بانتظام فتتعافى دقته مع كل تحديث

يسهم كل درس في هذه الدورة في دعم هذه الحلقة: تحدد المواصفات موضع الإخفاق، ويبيّن تدقيق التغطية أين ينبغي البحث، ويجعل مدقق التسميات والإرشادات البيانات الجديدة مفيدة، بينما توضح التقسيمات والمقاييس الصادقة ما إذا كان النموذج الذي أُعيد تدريبه أفضل بالفعل. وتساعد عادتان على إنجاح ذلك منذ اليوم الأول: سجّل عينة من المدخلات والتنبؤات، بما فيها منخفضة الثقة، واحتفظ بمجموعة الاختبار المجمّدة كي تُقارَن النماذج جميعها على الصور نفسها. يتناول الرصد والانحراف مراقبة انحراف البيانات بالتفصيل.

إلى أين تتابع#

الدورةالوقت المناسب لأخذها
بناء مجموعات بيانات YOLO عالية الأداءإذا لم تكن فئاتك مدرّبة مسبقًا، أو كانت مشاهدك تختلف عن COCO
درّب أول نموذج YOLO لكإذا كانت لديك مجموعة بيانات مصنّفة وتريد ضبطًا دقيقًا
Ultralytics YOLO في الإنتاجإذا كان لديك نموذج وتحتاج إلى التصدير والتتبع والمراقبة
أنشئ باستخدام منصة Ultralyticsإذا أردت البيانات والتصنيف والتدريب والنشر في مكان واحد

هل تفضّل سير عمل قائمًا على المتصفح؟ تنفّذ منصة Ultralytics الحلقة نفسها — رفع البيانات، والتعليق عليها، والتدريب، والنشر — من دون تثبيت محلي:

جرّبه

عدّل نص الحل: ضع فئات مواصفاتك في spec_classes ومسارات صورك في sources، ثم شغّله وافتح النتائج المحفوظة. أنشئ جدولًا يضم الصورة والفئات المكتشفة ومدى تطابقها مع مواصفاتك (نعم أو لا)، واختتم بجملة واحدة تحدد خطوتك التالية والدورة التي تغطيها.

التزام
git add -A && git commit -m "docs(academy): completed Computer Vision Foundations"
متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • شغّلت YOLO26 على ثلاث صور خاصة بك على الأقل، وفتحت النتائج المحفوظة.

  • تعرف أيّ فئات مواصفاتك مدرّبة مسبقًا، وأيّها يحتاج إلى بياناتك الخاصة.

  • لديك جملة واحدة تحدد خطوتك التالية والدورة التي ستأخذها لتحقيقها.

عرض الحل
from pathlib import Path

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)}  needs your own data: {sorted(spec_classes - known)}")

# 2. What does it find on your images?
sources = [
    "https://ultralytics.com/images/bus.jpg",  # replace with your own images
    "https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
    names = [result.names[int(c)] for c in result.boxes.cls]
    print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")
pretrained: ['person']  needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']

في مواصفات الرافعة الشوكية: الفئة person مشمولة، أما forklift فغير مشمولة. الخطوة التالية: أنشئ الآن نموذجًا أوليًا لقاعدة المنطقة على الأشخاص باستخدام النموذج المُدرَّب مسبقًا، وابدأ دورة بناء مجموعات بيانات YOLO عالية الأداء لجمع صور الرافعات الشوكية من كاميرات المستودع وتصنيفها.

ما الخطوة التالية

اكتملت الدورة — أجب عن الاختبار النهائي لتحصل على شهادتك، ثم تابع دورة بناء مجموعات بيانات YOLO عالية الأداء لتحويل مواصفاتك إلى مجموعة بيانات جاهزة للتدريب.

سجّل الدخول لحفظ التقدم