Ultralytics YOLO27: انضم إلى قائمة الانتظار.
Get Started
الإنشاء باستخدام Ultralytics Platform·أنشئ مجموعة البيانات·الدرس 3/10
الدرسمتوسط

التعليق التوضيحي الذكي وإسناد التسميات على دفعات

اختر نموذجًا لإسناد التسميات وحدًّا للثقة بقياس حجم عمل المراجعة، ثم شغّل التعليق التوضيحي على دفعات وتحقق من النتيجة بمعدل التعديلات.

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

النتيجة

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

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. اضغط على S في المحرر: SAM للأشكال التي تُحدَّد بالنقر، وYOLO أو النماذج التي تعتمد على الفئات في الصور كاملةً.

  2. اختبر مجموعة من مستويات الثقة على صور عليها تسميات، واختر الحدّ الذي يحقق أقل عدد من التعديلات لكل صورة.

  3. شغّل المزيد من الإجراءات > التعليق التوضيحي على دفعات؛ فسيحفظ إصدارًا من مجموعة البيانات قبل البدء.

  4. راجع كل صورة، واحفظ إصدارًا ثانيًا، واحسب معدل التعديلات باستخدام مقارنة الإصدارات.

عملي

ثلاث طرق لإسناد التسميات الأولية#

في محرر التعليقات التوضيحية، يكون وضع Draw (V) يدويًا، بينما يتيح وضع Smart (S) للنموذج اقتراح التسميات:

محرر التعليقات التوضيحية في Ultralytics Platform لمجموعة بيانات medical-pills، مع زري Draw وSmart mode في شريط الأدوات وصناديق زرقاء حول حبوب على شريط تغليف

العائلةآلية العملالمهامالتكلفة
SAM (SAM 2.1 من Tiny إلى Large، وSAM 3، وSAM 3.1 افتراضيًا)انقر على عنصر لإنشاء قناع؛ وانقر خارجه للإضافة، أو داخله للطرح؛ ويتحكم A في التفعيل التلقائيالكشف، والتجزئة، والدلالي، وOBBFree
YOLO (النماذج الرسمية أو نماذجك الخاصة)يضيف Predict اكتشافات النموذج؛ وتُحاذي Map classes بين فئات النموذج وفئات مجموعة البيانات؛ ويُتجاوز التكرار عند IoU 0.7 فأعلىالكشف، والتجزئة، والدلالي، وOBB، وتقدير الوضعيةمجانًا في المحرر
النماذج المعتمدة على الفئات (Moondream 3.1 افتراضيًا، وYOLOE-26x، وSAM 3 Text، وغيرها)يعثر على أسماء فئات مجموعة البيانات في الصورة؛ وتعمل نماذج المزوّدين المدفوعة باستخدام مفتاح API الخاص بكمجموعات بيانات الكشف التي تضم من 1 إلى 200 فئةالنماذج المستضافة مجانية

محرر التعليقات التوضيحية في Ultralytics Platform في الوضع الذكي، مع نموذج YOLO وزر Predict في شريط الأدوات، فوق صناديق الحبوب في الصورة

يتطلب SAM نقرة لكل عنصر ويعطي أدق الأشكال. أما توقعات النموذج فتتطلب نقرة واحدة لكل صورة، وتعتمد جودتها على النموذج؛ لذا يركز بقية هذا الدرس على اختيار النموذج وضبطه.

اختر نموذج إسناد التسميات#

يتفوق نموذج v0 ضعيف، دُرّب على 100–200 تسمية يدوية، على البدء من الصفر بالرسم، وبحلول v1 يكون عادةً شريكًا مفيدًا في التعلم النشط. يختلف أداء النماذج المعتمدة على الفئات كثيرًا باختلاف المجال: فبعضها يعثر على كل شيء تقريبًا في الصور اليومية، لكنه يفوّت معظم العناصر في صور لوحات الدارات المطبوعة أو الأشعة السينية أو البيع بالتجزئة؛ لذا افحص عشرة توقعات قبل الوثوق بأحدها.

مثال تطبيقي: قياس عمل المراجعة عند كل حدّ#

يحدد حدّ الثقة المهام التي يقضي المراجعون وقتهم فيها: إذا كان منخفضًا جدًا، حذفوا الصناديق الإيجابية الكاذبة؛ وإذا كان مرتفعًا جدًا، رسموا الصناديق التي أغفلها النموذج. قِس ذلك على صور تحمل تسميات صحيحة بالفعل؛ وفي هذا المثال نستخدم الصور الـ128 التي تحمل تسميات من COCO128، مع YOLO26n مُدرّب مسبقًا بوصفه نموذج إسناد التسميات:

from pathlib import Path

import torch

from ultralytics import YOLO
from ultralytics.data.utils import check_det_dataset
from ultralytics.utils.metrics import box_iou
from ultralytics.utils.ops import xywhn2xyxy

data = check_det_dataset("coco128.yaml")  # 128 labeled images, downloaded on first use
images = sorted(Path(data["train"]).glob("*.jpg"))
results = YOLO("yolo26n.pt").predict(images, conf=0.05, verbose=False)  # your labeling model

def review_work(result, image, conf):
    """Return (kept, delete, draw): correct pre-labels, false positives to delete, missed objects to draw."""
    label = Path(str(image).replace("images", "labels")).with_suffix(".txt")
    lines = label.read_text().splitlines() if label.exists() else []  # no label file = background image
    gt = torch.tensor([[float(x) for x in line.split()] for line in lines]).reshape(-1, 5)
    h, w = result.orig_shape
    gt_boxes, gt_cls = xywhn2xyxy(gt[:, 1:], w=w, h=h), gt[:, 0]
    boxes = result.boxes[result.boxes.conf >= conf]
    iou = box_iou(boxes.xyxy, gt_boxes) * (boxes.cls[:, None] == gt_cls[None])  # IoU with same-class boxes only
    matched = set()
    for row in iou:  # greedily match each prediction to its best unmatched ground-truth box
        for j in row.argsort(descending=True).tolist():
            if row[j] >= 0.5 and j not in matched:
                matched.add(j)
                break
    return len(matched), len(boxes) - len(matched), len(gt) - len(matched)

print("conf  kept  delete  draw  edits/image")
for conf in (0.1, 0.25, 0.4, 0.5, 0.7):
    kept, delete, draw = (sum(t) for t in zip(*(review_work(r, i, conf) for r, i in zip(results, images))))
    print(f"{conf:<5} {kept:>4} {delete:>7} {draw:>5} {(delete + draw) / len(images):>12.1f}")
conf  kept  delete  draw  edits/image
0.1    590     490   339          6.5
0.25   468     138   461          4.7
0.4    386      58   543          4.7
0.5    328      35   601          5.0
0.7    230       6   699          5.5

آلية العمل وما توضحه النتائج:

  1. يُجري النموذج التوقع مرة واحدة عند قيمة منخفضة لـconf=0.05؛ ثم يرشّح كل حدّ التوقعات نفسها، لذا يكون الاختبار سريعًا.
  2. يطابق review_work كل توقع مع صندوق الحقيقة الأساسية من الفئة نفسها عند IoU يبلغ 0.5 أو أكثر. التوقعات غير المطابقة هي صناديق يحذفها المراجع؛ والعناصر غير المطابقة في الحقيقة الأساسية هي عناصر يرسمها المراجع.
  3. يصل عدد التعديلات لكل صورة إلى أدنى مستوى له عند 0.25–0.4 (4.7). ودون هذا النطاق، تتزايد عمليات الحذف بشدة؛ وفوقه، تكثر العناصر التي يفوتها النموذج.
  4. حتى عند أفضل حدّ، يرسم المراجعون نحو 3.6 صندوقًا لكل صورة، لأن ذيل COCO الطويل من العناصر الصغيرة يصعب على نموذج نانو اكتشافه.

قواعد اتخاذ القرار: اختر الحدّ الذي يحقق أقل عدد من التعديلات لكل صورة. إذا كانت عمليات الرسم هي الغالبة عند كل حدّ، فنموذج إسناد التسميات أضعف من أن يلائم البيانات؛ لذا استخدم نموذجًا أكبر أو نموذجك المحسّن بدقة. وإذا كانت عمليات الحذف هي الغالبة حتى عند 0.5، فالنموذج يخلط بين الفئات المتشابهة؛ لذا افحص مصفوفة الالتباس قبل إسناد مزيد من التسميات. في مشروعك، نفّذ الاختبار باستخدام نموذجك المحسّن بدقة على 50–100 صورة سبق أن وضعت لها تسميات.

شغّل التعليق التوضيحي على دفعات#

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

مربع حوار التعليق التوضيحي على دفعات في Ultralytics Platform، مع تحديد Moondream 3.1، ومعاينات لتوقعات على ست صور لعمّال، ومفتاح تبديل Include annotated images، وتكلفة تقديرية تبلغ $0.05

  1. اختر النموذج. تفتح مجموعات بيانات الكشف مع تحديد Moondream 3.1؛ بدّله بنموذجك المحسّن بدقة أو نموذج YOLO.
  2. لنموذج YOLO، عيّن قيمة الثقة إلى الحدّ الذي اخترته في الاختبار (الافتراضي هو 0.25) وقيمة IoU (0.7)، ثم افحص معاينات العينات.
  3. اترك Include annotated images غير مفعّل لإسناد التسميات إلى الصور التي لا تحمل تسميات فقط.
  4. تحقق من التكلفة المقدّرة (1.00 دولار لكل 1,000 صورة، بحد أدنى 0.01 دولار)، ثم انقر على Start.

يؤدي بدء التشغيل إلى حفظ إصدار من مجموعة البيانات أولًا، لتتمكن من استعادة الحالة السابقة للتشغيل. ويحتفظ Stop بالصور التي عولجت حتى ذلك الوقت، وتُحتسب تكلفتها.

راجع النتائج، ثم قِس معدل التعديلات#

تُضاف التوقعات باعتبارها تعليقات توضيحية عادية، لذا لا توجد علامة تشير إلى أنها لم تُراجع. رشّح النتائج حسب الفئة للتحقق من الفئات النادرة أولًا، ورتّب حسب التعليقات التوضيحية تصاعديًا (لاحتمال وجود عناصر فائتة) وتنازليًا (للمشاهد المزدحمة التي قد تندمج فيها الصناديق). ثم أنشئ إصدارًا، وافتح مقارنة الإصدارات في علامة التبويب Versions، واختر v_auto بوصفه إصدار From:

العددالمعنى
المضافةالعناصر التي أغفلها النموذج، مضافًا إليها النسخة المصححة من كل صندوق جرى إصلاحه
المحذوفةالإيجابيات الكاذبة، مضافًا إليها النسخة الأصلية من كل صندوق جرى إصلاحه
معدل التعديلات(المضاف + المحذوف) ÷ التعليقات التوضيحية في v_auto؛ وهو حد أعلى لأن الصندوق المصحح يُحتسب مرتين

تابع معدل التعديلات لكل دفعة. فارتفاع المعدل إنذار مبكر بأن الصور الجديدة قد ابتعدت عن نطاق ما يعرفه نموذج إسناد التسميات. ويتناول درس أفضل ممارسات التعليق التوضيحي أدلة إسناد التسميات وتوافق المراجعين.

مواطن الخلل#

التدريب على تنبؤات لم تُراجع

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

الوثوق بنموذج موجَّه بالفئات في مجال متخصص

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

فئات النموذج ومجموعة البيانات غير متطابقة

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

جرّبه

شغّل threshold_sweep.py باستخدام نموذج التوسيم على 50–100 صورة سبق أن وسمتها، واختر العتبة التي تحقق أقل عدد من التعديلات لكل صورة. شغّل Batch Annotation عند تلك العتبة على 50 صورة غير موسومة على الأقل، وراجعها كلها، واحفظ إصدارًا، ثم احسب معدل التعديل باستخدام Compare versions.

متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • لديك جدول مسح لنموذج التوسيم وعتبة مختارة، مع توضيح السبب.

  • تمت مراجعة كل صورة موسومة مسبقًا، ويحيط إصداران بالمراجعة.

  • حسبت معدل التعديل وحددت الخطأ الأكثر شيوعًا في نموذج التوسيم.

عرض الحل

مثال تطبيقي: يختار المسح القيمة 0.35 لضبط دقيق لفحص الحبوب. يحفظ Batch Annotation الإصدار v4 الذي يحتوي على 1,240 تعليقًا توضيحيًا. بعد المراجعة، يعرض Compare versions v4 → v5 إضافة 96 تعليقًا وإزالة 152، لذا يكون معدل التعديل (96 + 152) ÷ 1,240 = 20%. تجاوز عدد العناصر المحذوفة عدد العناصر المضافة، ما يشير إلى الإفراط في التنبؤ: ويُظهر فحص المربعات المحذوفة أن النموذج يضع علامات على انعكاسات الضوء في عبوات الأقراص على أنها حبوب. وينتج عن ذلك إجراءان: ارفع مستوى الثقة خطوة واحدة (0.35 → 0.45) للدفعة التالية وتأكد من انخفاض المعدل، وأضف 30 صورة لعبوات لامعة تمت مراجعتها إلى إصدار التدريب التالي كي يتعلم الضبط الدقيق التمييز بينها.

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

الوسوم جاهزة. ستثبت بعد ذلك خلو مجموعة البيانات من التسرب بين التقسيمات، ثم تجمّد إصدارًا.

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