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

مجموعات بيانات تعكس الواقع

دقّق مجموعة بيانات حقيقية بحثًا عن فجوات التغطية قبل إضافة مزيد من التسميات، وحوّل الفجوات إلى خطة لجمع البيانات تتضمن أمثلة سلبية صعبة.

معظم نماذج الرؤية المخيبة للآمال ليست نماذج رديئة؛ بل هي نماذج جيدة دُرّبت على مجموعة بيانات لا تشبه المكان الذي تُنشر فيه. لم يكتشف كاشف COCO في الدرس السابق أي قوارب من طائرة مسيّرة، لأن القوارب في COCO تُصوّر من الجانب. يكشف تدقيق يستغرق خمس دقائق هذه الفجوات قبل أن تنفق المال على وضع التسميات.

النتيجة

نفّذ تدقيقًا للتغطية على مجموعة بيانات YOLO، وحوّل أرقامها إلى خطة جمع بيانات مرتبة حسب الأولوية.

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. خذ عينات من كاميرات بيئة النشر الفعلية قبل وضع أي تسميات.

  2. غطِّ عمدًا ظروف الإضاءة والطقس والحجب ومواضع الكاميرات.

  3. إحصاءات التدقيق: الصور لكل تقسيم، والعناصر لكل فئة، وصور الخلفية، وأحجام المربعات، والدقة، والسطوع.

  4. أضف صور خلفية بنسبة 0–10%، واختَرها من بيئتك لتكون أمثلة سلبية صعبة.

  5. الخلايا الفارغة في شبكة الفئات والظروف هي خطة جمع البيانات.

عملي

تتعلّم النماذج من مجموعة البيانات، لا من العالم#

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

الحل بنيوي لا خوارزمي: خذ عينات من بيئة النشر عمدًا قبل وضع التسميات. يشرح دليل جمع البيانات والتعليق عليها آليات ذلك.

تدقيق مجموعة بيانات حقيقية#

صفحة مجموعة البيانات medical-pills في منصة Ultralytics: شبكة من صور عبوات الأقراص، مع مربعات زرقاء حول الأقراص، وأعداد الفئات والصور، وشريط تقسيمات التدريب والتحقق والاختبار

تُعد مجموعة بيانات medical-pills أعلاه — وهي لقطات مقرّبة لعبوات الأقراص، مع وضع مربع حول كل قرص — موضوعًا مناسبًا للتدقيق. تعرض منصة Ultralytics الأعداد الرئيسية في صفحة مجموعة البيانات؛ ويحسب النص البرمجي أدناه الأرقام التي تكشف التغطية، باستخدام النسخة المرفقة مع ultralytics:

from collections import Counter
from pathlib import Path

from PIL import Image, ImageStat
from ultralytics.data.utils import check_det_dataset

data = check_det_dataset("medical-pills.yaml")  # downloads the dataset on first use

for split in ("train", "val"):
    images = sorted(Path(data[split]).glob("*.jpg"))
    labels = [Path(str(p).replace("/images/", "/labels/")).with_suffix(".txt") for p in images]
    rows = [line.split() for f in labels if f.exists() for line in f.read_text().splitlines()]
    classes = Counter(data["names"][int(r[0])] for r in rows)
    backgrounds = sum(not f.exists() or not f.read_text().strip() for f in labels)
    areas = sorted(float(r[3]) * float(r[4]) for r in rows)  # box area as a share of the image
    sizes = Counter(Image.open(p).size for p in images)
    brightness = [ImageStat.Stat(Image.open(p).convert("L")).mean[0] for p in images]
    print(f"{split}: {len(images)} images, {backgrounds} backgrounds, {dict(classes)}, sizes {dict(sizes)}")
    print(f"  boxes: median {areas[len(areas) // 2]:.1%} of the image, {sum(a < 0.01 for a in areas)} of {len(areas)} under 1%")
    print(f"  brightness: {min(brightness):.0f} to {max(brightness):.0f} (0 = black, 255 = white)")
train: 92 images, 0 backgrounds, {'pill': 1623}, sizes {(1920, 1080): 92}
  boxes: median 1.4% of the image, 320 of 1623 under 1%
  brightness: 171 to 198 (0 = black, 255 = white)
val: 23 images, 0 backgrounds, {'pill': 399}, sizes {(1920, 1080): 23}
  boxes: median 1.4% of the image, 79 of 399 under 1%
  brightness: 171 to 198 (0 = black, 255 = white)

اقرأ النتائج بوصفها تقريرًا عن التغطية، بحيث يُعرض اكتشاف واحد في كل سطر:

النتيجةدلالتهاالقرار
دقة واحدة، 1920×1080كاميرا واحدة، وإعداد واحداجمع بيانات من كل طراز كاميرا ستنشر النموذج عليه
السطوع بين 171 و198 فقطإضاءة استوديو ساطعة ومتجانسة، بلا ظروف خافتةاجمع لقطات في ظروف خافتة وإضاءة خلفية وإضاءة مختلطة قبل النشر عند منضدة صيدلية
0 صورة خلفيةلم يرَ النموذج قط مشهدًا بلا أقراصأضف عبوات أقراص فارغة وأقراصًا أخرى ومناضد خالية بوصفها أمثلة سلبية صعبة
وسيط حجم المربع 1.4% من الصورة؛ ومربع واحد من كل خمسة أصغر من 1%أجسام صغيرةأبقِ imgsz مرتفعًا بما يكفي، وأدرج عمدًا لقطات للأجسام البعيدة
فئة واحدة، pillلا توجد أنواع مختلفة للأقراصهذا مناسب للعدّ؛ ولا تضف فئات إلا إذا تطلب القرار ذلك

لن يظهر أيٌّ من ذلك في درجة التحقق، لأن مجموعة التحقق تشترك في كل هذه السمات.

محاور التغطية الأربعة#

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

كان موضع الرؤية هو المحور الذي أغفلته تجربة المرسى: الفئة نفسها من زاوية جديدة، فانخفض الاستدعاء إلى الصفر.

الأمثلة السلبية الصعبة وصور الخلفية#

يجب أن يتعلم الكاشف أيضًا ما ليس الهدف. تبدو الأمثلة السلبية الصعبة مشابهةً للهدف ظاهريًا: ففي حالة كاشف الرافعات الشوكية، تشمل الأمثلة عربة نقل المنصات ورافعة المقص وانعكاس رافعة شوكية على أرضية مصقولة وملصق سلامة مطبوع عليه رسم رافعة شوكية.

في تنسيق YOLO، صورة الخلفية هي ببساطة صورة لا يوجد لها ملف تسميات — أي لا شيء يُرسم عليها. توصي نصائح التدريب من Ultralytics بنحو 0–10% من صور الخلفية للحد من الإيجابيات الكاذبة؛ وتشكل صور الخلفية نحو 1% من COCO نفسها. خصص هذه النسبة لأمثلة سلبية صعبة من بيئتك بدلًا من إطارات فارغة عشوائية. يمكن لـزيادة البيانات تغيير السطوع والزاوية، لكنها لا تستطيع ابتكار عربة نقل منصات لم يرها النموذج من قبل.

مواطن الخلل#

وضع التسميات قبل أخذ العينات

العَرَض: 10,000 صورة تحمل تسميات، كلها نهارية ومن كاميرا تجريبية واحدة. الحل: سجّل من كاميرات النشر طوال أسبوعين تقريبًا وفي كامل نطاق الظروف، ودقّق التغطية، ثم ادفع مقابل وضع التسميات. يمكن أن تسدّ البيانات الاصطناعية فجوة معروفة، لكنها لا تحل محل التسجيلات الحقيقية.

الاعتماد على التحقق لاكتشاف فجوات التغطية

العَرَض: قيمة mAP مرتفعة على التحقق، ونتائج ضعيفة في أول موقع جديد. الحل: تذكّر أن مجموعة التحقق تشترك مع مجموعة البيانات في نقاطها العمياء. استخرج عشر صور تدريب عشوائية وعشرة إطارات من الإنتاج، واطلب من زميل تمييزها؛ إذا استطاع ذلك، فلديك فجوة نطاق.

لإنشاء خطة أخذ عينات بأعداد مستهدفة لكل حالة، تابع إلى جمع بيانات عالية الجودة وممثلة في بناء مجموعات بيانات YOLO عالية الأداء.

جرّبه

شغّل نص التدقيق البرمجي على مجموعة بياناتك (غيّر مسار YAML) أو على medical-pills. حوّل المخرجات إلى شبكة للفئات حسب الحالات: تمثل الصفوف الفئات، وتمثل الأعمدة الحالات المهمة عند النشر (الإضاءة، والكاميرا، والحجب، والطقس)، مع الأعداد أو التقديرات في كل خلية. أدرج الخلايا الفارغة مرتبة حسب مدى تكرار الحالة في بيئة الإنتاج، بالإضافة إلى فئتين من السلبيات الصعبة التي ستجمعها.

متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • لديك مخرجات تدقيق لمجموعة بيانات حقيقية: الصور والخلفيات والفئات وأحجام المربعات والدقة والسطوع.

  • لديك شبكة للفئات حسب الحالات، مع ترتيب الخلايا الفارغة حسب مدى تكرارها في بيئة الإنتاج.

  • تتضمن خطتك فئتين على الأقل من السلبيات الصعبة المستمدة من بيئة النشر.

عرض الحل

بالنسبة إلى medical-pills المنشورة على منضدة صيدلية تحت إضاءة متجر مختلطة، املأ الشبكة اعتمادًا على التدقيق (سطوع 171–198، ومصدر واحد بدقة 1920×1080، وصفر من الخلفيات) وتصفح سريع للصور، يكشف عن العبوات نفسها على السطح الساطع نفسه من دون أيدٍ:

الفئةإضاءة استوديو ساطعةإضاءة متجر خافتة أو دافئةإضاءة خلفية / وهجمغطى جزئيًا بيدكاميرا هاتف
pill2,0220000
الخلفية000—0

خطة الجمع حسب الأولوية:

  1. إضاءة متجر خافتة أو دافئة — الحالة المعتادة للمنضدة، ولا توجد لها صور حاليًا.
  2. مغطى جزئيًا بيد — يحدث ذلك في كل تفاعل فعلي تقريبًا.
  3. كاميرا هاتف — مستشعر ثانٍ ودقة مختلفة.
  4. إضاءة خلفية / وهج — تعكس العبوات المغلفة بورق القصدير ضوء النوافذ والمصابيح السقفية.

السلبيات الصعبة: عبوات فقاعات فارغة (ورق القصدير نفسه، بلا حبوب) وأغراض دائرية أخرى على المنضدة — عملات وأزرار وحلوى. أضفها كصور خلفية، بنسبة تقارب 5–10% من مجموعة البيانات.

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

التالي: وضع تسميات لهذه البيانات بحيث يرسم كل معلّق الشيء نفسه — واكتشاف الملفات التي لم يحدث فيها ذلك.

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