رؤية YOLO لعام 2026:

تكامل Labelbox#

تقرأ منصة Ultralytics صادرات Labelbox بتنسيق NDJSON مباشرةً. لا حاجة إلى لصق مفتاح، ولا إلى إبقاء اتصال نشط، ولا إلى صيانة برنامج نصي للتحويل — صدّر من Labelbox، وحمّل الملف، وستصل تسمياتك كمجموعة بيانات عادية في المنصة.

الاستيراد من Labelbox#

  1. التصدير من Labelbox. افتح مشروع وضع التسميات أو الكتالوج الذي تريد نقله، وانتقل إلى علامة التبويب صفوف البيانات. حدّد الكل، وانقر على تصدير البيانات، واختر الحقول التي تريد تضمينها، ثم أكّد العملية. هل تُصدّر من الكتالوج بدلاً من مشروع؟ فعّل تصدير التسميات من المشروع واختر المشروع، وإلا فسيصل الملف بلا أي تعليقات توضيحية على الإطلاق.
  2. تنزيل الملف. تنفّذ Labelbox عملية التصدير كمهمة في الخلفية. راقبها في الإشعارات، وانقر على تنزيل عند اكتمالها لحفظ ملف .ndjson.
  3. التحميل إلى المنصة. أنشئ مجموعة بيانات جديدة وحمّل ملف .ndjson، أو الصق رابطًا مباشرًا إليه. يمكنك أيضًا البدء من الإعدادات > عمليات التكامل > Labelbox.
  4. التدريب. بعد انتهاء المعالجة، حرّر التعليقات التوضيحية ودرّب تمامًا كما تفعل مع أي مجموعة بيانات أخرى في المنصة.

استيراد مجموعة بيانات Labelbox إلى منصة Ultralytics

بخلاف CVAT وLabel Studio، لا يوجد تنسيق للاختيار — فتصدير Labelbox نفسه هو التنسيق المدعوم.

التصدير باستخدام SDK#

توفّر Labelbox أيضًا مهمة التصدير في SDK الخاص بها بلغة Python، وهي الطريقة الأسهل لإنشاء مسار عمل قابل للتكرار. ابثّ المهمة واكتب كائن JSON واحدًا في كل سطر:

import json

import labelbox

client = labelbox.Client(api_key="YOUR_LABELBOX_API_KEY")
export_task = labelbox.ExportTask.get_task(client, "YOUR_EXPORT_TASK_ID")
export_task.wait_till_done()  # streaming a task that isn't COMPLETE raises

with open("dataset.ndjson", "w") as f:
    f.writelines(json.dumps(data_row.json) + "\n" for data_row in export_task.get_buffered_stream())
اكتب NDJSON، وليس مصفوفة JSON

يتكوّن NDJSON من كائن JSON واحد في كل سطر. يكتب json.dump(list_of_rows, f) مصفوفة واحدة بدلًا من ذلك، وتتجاهل المنصة أي سطر ليس كائن JSON — ولذلك لا يعثر الاستيراد على أي صفوف بيانات على الإطلاق. استخدم الحلقة أعلاه، أو "\n".join(json.dumps(r) for r in rows).

ما الذي يتم استيراده#

تتعرّف المنصة تلقائيًا على تنسيق Labelbox، وتطابق المربعات المحيطة والمضلعات مع نوع مهمة YOLO المطابق:

تعليق Labelbox التوضيحيمُستورَد
مربع محيطالكشف
مضلعالتجزئة
قناع تجزئة، نقطة، خط متعدد، علاقة، تصنيفليس بعد

يصبح name لكل كائن اسم الفئة — لذا يُستورد تعليق توضيحي "name": "Dog" باعتباره الفئة Dog، وليس value المكتوب بأحرف صغيرة — وتُطبَّع إحداثيات البكسل بالاستناد إلى أبعاد media_attributes في التصدير. تُسمّى كل صورة وفقًا لـ data_row.external_id الخاص بها، مع الرجوع إلى اسم الملف في عنوان URL الموقّع عندما لا يتضمن التصدير معرّفًا خارجيًا. ويُستورد تصدير الكتالوج الذي لا يتضمن تعليقات توضيحية كمجموعة بيانات صور غير معنونة، جاهزة لوضع التسميات في محرر التعليقات التوضيحية في المنصة.

يبدو صف بيانات واحد على النحو التالي، بعد اختصاره إلى الحقول التي تقرؤها المنصة:

{
    "data_row": {
        "external_id": "000000000307.jpg",
        "row_data": "https://storage.labelbox.com/...?Expires=...&Signature=..."
    },
    "media_attributes": { "height": 480, "width": 640, "mime_type": "image/jpeg" },
    "projects": {
        "<project-id>": {
            "labels": [
                {
                    "annotations": {
                        "objects": [
                            {
                                "name": "Dog",
                                "annotation_kind": "ImageBoundingBox",
                                "bounding_box": { "top": 200.0, "left": 407.0, "height": 172.0, "width": 176.0 }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

يُتجاهل كل ما عدا ذلك في التصدير — embeddings وmetadata_fields وattachments وproject_details. ومن الأفضل إلغاء تحديد التضمينات عند التصدير: ففي تصدير نموذجي، شكّلت نحو أربعة أخماس الملف، مقابل خُمس للحقول التي تقرؤها المنصة فعليًا.

تُستورد مشاريع الأقنعة والنقاط دون تعليقات توضيحية

تُقرأ المربعات المحيطة والمضلعات فقط حاليًا، ومن تعليقات توضيحية للكائنات فقط — أما التصنيفات على مستوى الصورة فتوجد في موضع آخر من التصدير ويتم تخطيها. ويستورد المشروع الذي وُضعت تسمياته بالكامل باستخدام أداة قناع التجزئة (الفرشاة)، أو النقاط، أو الخطوط المتعددة، أو التصنيفات صوره، لكن دون أي تعليقات توضيحية، ولا يظهر أي خطأ. ويمكنك ملاحظة ذلك في صفحة مجموعة البيانات: إذ تعرض مجموعة البيانات المستوردة التي احتفظت بتسمياتها عدد الصور وعدد الصور ذات التسميات وعدد التعليقات التوضيحية، بينما لا تعرض المجموعة التي فقدتها أيًا من الأخيرين.

حمّل التصدير ما دامت روابطه سارية

يشير تصدير Labelbox إلى كل صورة باستخدام عنوان URL موقّع بدلًا من تضمين وحدات البكسل، وتنتهي صلاحية هذه التوقيعات. تنزّل المنصة الصور من عناوين URL تلك، وتفحص عينة منها قبل البدء، لذا يفشل التصدير الذي انتهت صلاحية جميع روابطه فورًا ويخبرك بالسبب — أعد التصدير من Labelbox وحمّل الملف الجديد. أما التصدير الذي انتهت صلاحية بعض روابطه فقط، فيستورد الصور التي لا يزال قادرًا على الوصول إليها ويتخطى الباقي، لذا احرص على التحميل بعد التصدير بوقت قصير.

في التصدير المختلط، تُسقط المربعات

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

المساهمون

التعليقات