
دليل متكامل للمطور يشرح YOLO من المفاهيم والبيانات إلى التدريب والتقييم والنشر الآمن في الإنتاج مع أمثلة Python عملية.
YOLO، اختصار لعبارة You Only Look Once، هو عائلة من نماذج اكتشاف الأجسام أحادية المرحلة. بخلاف تصنيف الصور الذي يعطي الصورة كلها اسماً واحداً، يعيد كاشف الأجسام قائمة من النتائج؛ لكل نتيجة فئة، ودرجة ثقة، وإحداثيات صندوق يحيط بالجسم.
تُستخدم YOLO في مراقبة المرور، وفحص الجودة في المصانع، والروبوتات، والزراعة، وتحليل الرياضة، وتطبيقات المتاجر، ومعالجة الصور والفيديو لحظياً. سبب شعبيتها هو التوازن بين الدقة والسرعة وحجم النموذج وسهولة النشر.
رفع حد الثقة يقلل الإنذارات الخاطئة غالباً، لكنه قد يجعل النموذج يفوّت أجساماً صعبة. لذلك يجب اختيار الحد وفق تكلفة الخطأ في المشروع.
يتكوّن النموذج عادة من Backbone لاستخراج السمات، وNeck لدمج السمات متعددة المقاييس، وDetection Head لإنتاج النتائج.
python -m venv .venv
source .venv/bin/activate
pip install ultralytics opencv-python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
result = model.predict("street.jpg", conf=0.35, imgsz=640)[0]
for box in result.boxes:
class_id = int(box.cls.item())
print({
"class": model.names[class_id],
"confidence": float(box.conf.item()),
"xyxy": box.xyxy[0].tolist(),
})
import cv2
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
camera = cv2.VideoCapture(0)
while camera.isOpened():
ok, frame = camera.read()
if not ok:
break
result = model.predict(frame, conf=0.4, verbose=False)[0]
cv2.imshow("YOLO", result.plot())
if cv2.waitKey(1) & 0xFF == ord("q"):
break
camera.release()
cv2.destroyAllWindows()
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.train(
data="dataset.yaml",
epochs=100,
imgsz=640,
batch=16,
device=0,
project="runs/safety",
name="baseline",
)
path: /absolute/path/to/dataset
train: images/train
val: images/val
test: images/test
names:
0: person
1: helmet
2: safety_vest
ابدأ بنموذج صغير للحصول على خط أساس للزمن واستهلاك الذاكرة، ثم انتقل إلى نموذج أكبر فقط إذا أثبت القياس أن تحسن الدقة يستحق التكلفة.
يحتوي كل سطر في ملف YOLO عادة على:
class_id x_center y_center width height
تكون الإحداثيات نسبية بين 0 و1. اجعل مجلدات الصور والملصقات منفصلة إلى train وval وtest. لا تقسّم إطارات فيديو متجاورة عشوائياً بين التدريب والتحقق؛ فهي شبه متطابقة وتؤدي إلى تسرب بيانات ونتائج مضللة.
استخدم أوزاناً مدرّبة مسبقاً في معظم المشاريع. راقب منحنيات التدريب وصور التنبؤ الفعلية؛ زيادة عدد epochs لا تصلح بيانات خاطئة أو سيناريوهات ناقصة.
لا تعتمد على رقم mAP واحد. حلّل الأداء حسب الفئة، وحجم الجسم، والكاميرا، والإضاءة، والطقس، والضبابية، والحجب، والمسافة. أنشئ معرض أخطاء يضم false positives وfalse negatives وأخطاء تحديد الموقع والنتائج المكررة.
يمكنك المرور على صور مجلد، تشغيل model.predict لكل صورة، ثم حفظ class وconfidence وxyxy في JSON. في الإنتاج أضف التحقق من المدخلات، والسجلات المنظمة، وحدود الموارد، وتسخين النموذج، ومقاييس التشغيل.
حمّل النموذج مرة واحدة عند بدء التطبيق، لا مع كل طلب. افحص حجم الملف ونوعه بعد فك الصورة، وضع حداً للأبعاد. أعد JSON منظم، واستخدم queue للصور الكبيرة والفيديو الطويل. الطلب المتزامن مناسب للصور الصغيرة فقط.
قِس الزمن من البداية إلى النهاية، وليس inference فقط. فك الصورة، وتغيير الحجم، ونقل البيانات، وNMS، والرسم، والتسلسل، والشبكة كلها مهمة. جرّب FP16 على الأجهزة المدعومة، وحدد concurrency، وراقب p50 وp95 وp99 والذاكرة وطول الصف وعدد الإطارات المسقطة.
عند التصدير إلى ONNX أو TensorRT أو OpenVINO، نفّذ اختبار انحدار يقارن النتائج فئة بفئة مع النموذج الأصلي.
قد تحتوي الصور على وجوه ولوحات مركبات وشاشات وعناوين وأماكن خاصة. طبّق تقليل البيانات، وحدود الاحتفاظ، والتحكم بالوصول، والتشفير. لا تثق بامتداد الملف وحده ولا تحمل ملف نموذج غير موثوق. مخرجات YOLO احتمالية، لذلك لا تجعلها القرار الوحيد في حالات طبية أو قانونية أو وظيفية أو سلامة عالية المخاطر.
لأنها تتنبأ بالمواقع والفئات مباشرة دون مرحلة مستقلة لاقتراح المناطق.
قياس مقدار التداخل بين الصندوق المتوقع والصندوق الحقيقي.
يعتمد على تكلفة الخطأ. اكتشاف مخاطر السلامة قد يفضل Recall، بينما الحظر الآلي يحتاج Precision مرتفعاً.
حسّن البيانات عالية الدقة والملصقات، واضبط حجم الإدخال والتعزيزات، واختبر التقسيم إلى بلاطات عند الحاجة.
مشروع YOLO الناجح هو مشروع بيانات وأنظمة، وليس أمر تدريب فقط. ابدأ بخط أساس قابل للقياس، وابنِ بيانات موثوقة، وحلّل الأخطاء حسب السيناريو، ثم حسّن الأداء بعد قياس المسار كاملاً.
لا توجد تعليقات معتمدة بعد. قد تنتظر الردود الجديدة المراجعة.