تخطي إلى المحتوى

تضخيم البيانات باستخدام Ultralytics YOLO

مثال على زيادة الصور

مقدمة

زيادة البيانات هي تقنية حاسمة في رؤية الكمبيوتر تعمل على توسيع مجموعة بيانات التدريب الخاصة بك بشكل مصطنع عن طريق تطبيق تحويلات مختلفة على الصور الموجودة. عند تدريب نماذج التعلم العميق مثل Ultralytics YOLO، تساعد زيادة البيانات على تحسين قوة النموذج وتقليل التجاوز وتعزيز التعميم لسيناريوهات العالم الحقيقي.

لماذا تعتبر زيادة البيانات مهمة؟

يخدم تضخيم البيانات أغراضًا حاسمة متعددة في تدريب نماذج رؤية الكمبيوتر:

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

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

أمثلة على التكوينات

يمكنك تخصيص كل معلمة باستخدام Python API أو واجهة سطر الأوامر (CLI) أو ملف التكوين. فيما يلي أمثلة لكيفية إعداد زيادة البيانات في كل طريقة.

أمثلة على التكوين

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5

باستخدام ملف التكوين

يمكنك تحديد جميع معلمات التدريب، بما في ذلك الزيادات، في ملف تكوين YAML (على سبيل المثال، train_custom.yaml). The mode مطلوبة فقط عند استخدام CLI. سيؤدي ملف YAML الجديد هذا بعد ذلك إلى تجاوز الافتراضي الموجود في ultralytics .

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

ثم ابدأ التدريب باستخدام Python API:

مثال على التدريب

from ultralytics import YOLO

# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml

تحسينات مساحة الألوان

تعديل تدرج الألوان (hsv_h)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.015
  • الاستخدام: يغير ألوان الصورة مع الحفاظ على علاقاتها. إن hsv_h تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا بين -hsv_h و hsv_h. على سبيل المثال، مع hsv_h=0.3، يتم تحديد الإزاحة عشوائيًا ضمن-0.3 إلى 0.3. بالنسبة للقيم الأعلى من 0.5، يتحول تحول اللون حول عجلة الألوان، وهذا هو السبب في أن الزيادات تبدو متشابهة بين 0.5 و -0.5.
  • الغرض: مفيد بشكل خاص للسيناريوهات الخارجية حيث يمكن أن تؤثر ظروف الإضاءة بشكل كبير على مظهر الكائن. على سبيل المثال، قد يبدو الموز أكثر صفراء تحت أشعة الشمس الساطعة ولكنه يبدو أكثر خضرة في الداخل.
  • تنفيذ Ultralytics: RandomHSV
-0.5 -0.25 0.0 0.25 0.5
تعديل تدرج الألوان (hsv_h_-0.5) تعديل تدرج الألوان (hsv_h_-0.25) augmentation_identity تعديل تدرج الألوان (hsv_h_0.25) تعديل تدرج الألوان (hsv_h_-0.5)

تعديل التشبع (hsv_s)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.7
  • الاستخدام: يعدل شدة الألوان في الصورة. إن hsv_h تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا بين -hsv_s و hsv_s. على سبيل المثال، مع hsv_s=0.7، يتم تحديد الكثافة عشوائيًا ضمن-0.7 إلى 0.7.
  • الغرض: يساعد النماذج على التعامل مع الظروف الجوية المتغيرة وإعدادات الكاميرا المختلفة. على سبيل المثال، قد تبدو إشارة المرور الحمراء زاهية للغاية في يوم مشمس ولكنها تبدو باهتة وباهتة في الظروف الضبابية.
  • تنفيذ Ultralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
تعديل التشبع (hsv_s_-1) تعديل التشبع (hsv_s_-0.5) augmentation_identity تعديل التشبع (hsv_s_0.5) تعديل التشبع (hsv_s_1)

تعديل السطوع (hsv_v)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.4
  • الاستخدام: يغير سطوع الصورة. الـ hsv_v تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا بين -hsv_v و hsv_v. على سبيل المثال، مع hsv_v=0.4، يتم تحديد الكثافة عشوائيًا ضمن-0.4 إلى 0.4.
  • الغرض: ضروري لتدريب النماذج التي تحتاج إلى الأداء في ظروف إضاءة مختلفة. على سبيل المثال، قد تبدو التفاحة الحمراء مشرقة في ضوء الشمس ولكنها أغمق بكثير في الظل.
  • تنفيذ Ultralytics: RandomHSV
-1.0 -0.5 0.0 0.5 1.0
تعديل القيمة (hsv_v_-1) تعديل القيمة (hsv_v_-0.5) augmentation_identity تعديل القيمة (hsv_v_0.5) تعديل القيمة (hsv_v_1)

التحويلات الهندسية

تدوير (degrees)

  • النطاق: 0.0 إلى 180
  • افتراضي: 0.0
  • الاستخدام: يدور الصور عشوائيًا ضمن النطاق المحدد. إن degrees تحدد المعلمة الفائقة زاوية الدوران، مع اختيار التعديل النهائي عشوائيًا بين -degrees و degrees. على سبيل المثال، مع degrees=10.0، يتم تحديد الدوران عشوائيًا ضمن-10.0 إلى 10.0.
  • الغرض: أمر بالغ الأهمية للتطبيقات التي يمكن أن تظهر فيها الكائنات في اتجاهات مختلفة. على سبيل المثال، في صور الطائرات بدون طيار الجوية، يمكن توجيه المركبات في أي اتجاه، مما يتطلب من النماذج التعرف على الكائنات بغض النظر عن دورانها.
  • تنفيذ Ultralytics: RandomPerspective
-180 -90 0.0 90 180
degrees_-180_augmentation degrees_-90_augmentation augmentation_identity degrees_90_augmentation degrees_180_augmentation

الترجمة (translate)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.1
  • الاستخدام: يزيح الصور أفقيًا وعموديًا بجزء عشوائي من حجم الصورة. إن translate تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا مرتين (مرة لكل محور) ضمن النطاق -translate و translate. على سبيل المثال، مع translate=0.5، يتم تحديد الانتقال عشوائيًا ضمن-0.5 إلى 0.5 على المحور السيني، ويتم تحديد قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
  • الغرض: يساعد النماذج على تعلم اكتشاف الكائنات المرئية جزئيًا ويحسن المتانة لموقع الكائن. على سبيل المثال، في تطبيقات تقييم أضرار المركبات، قد تظهر أجزاء السيارة بشكل كامل أو جزئي في الإطار اعتمادًا على موضع المصور والمسافة، وسيعلم تحسين الترجمة النموذج على التعرف على هذه الميزات بغض النظر عن اكتمالها أو موضعها.
  • تنفيذ Ultralytics: RandomPerspective
  • ملاحظة: للتبسيط، فإن الترجمات المطبقة أدناه هي نفسها في كل مرة لكل من x و y المحاور. القيم -1.0 و 1.0لا يتم عرضها لأنها ستخرج الصورة تمامًا من الإطار.
-0.5 -0.25 0.0 0.25 0.5
translate_-0.5_augmentation translate_-0.25_augmentation augmentation_identity translate_0.25_augmentation translate_0.5_augmentation

مقياس (scale)

  • النطاق: ≥0.0
  • افتراضي: 0.5
  • الاستخدام: يغير حجم الصور بمعامل عشوائي ضمن النطاق المحدد. إن scale تحدد المعلمة الفائقة عامل القياس، مع اختيار التعديل النهائي عشوائيًا بين 1-scale و 1+scale. على سبيل المثال، مع scale=0.5، يتم تحديد التحجيم عشوائيًا ضمن0.5 إلى 1.5.
  • الغرض: يمكّن النماذج من التعامل مع الكائنات على مسافات وأحجام مختلفة. على سبيل المثال، في تطبيقات القيادة الذاتية، يمكن أن تظهر المركبات على مسافات مختلفة من الكاميرا، مما يتطلب من النموذج التعرف عليها بغض النظر عن حجمها.
  • تنفيذ Ultralytics: RandomPerspective
  • ملاحظة:
    • القيمة -1.0 غير معروض لأنه سيجعل الصورة تختفي، بينما 1.0 ببساطة يؤدي إلى تكبير 2x.
    • القيم المعروضة في الجدول أدناه هي تلك المطبقة من خلال المعامل الفائق scale، وليس عامل المقياس النهائي.
    • إذا scale أكبر من 1.0، يمكن أن تكون الصورة صغيرة جدًا أو مقلوبة، حيث يتم اختيار عامل القياس عشوائيًا بين 1-scale و 1+scale. على سبيل المثال، مع scale=3.0، يتم تحديد التحجيم عشوائيًا ضمن-2.0 إلى 4.0. إذا تم اختيار قيمة سالبة، فسيتم قلب الصورة.
-0.5 -0.25 0.0 0.25 0.5
scale_-0.5_augmentation scale_-0.25_augmentation augmentation_identity scale_0.25_augmentation scale_0.5_augmentation

القص (shear)

  • النطاق: -180 إلى +180
  • افتراضي: 0.0
  • الاستخدام: يقدم تحويلًا هندسيًا يميل الصورة على طول المحورين السيني والصادي، مما يؤدي فعليًا إلى إزاحة أجزاء من الصورة في اتجاه واحد مع الحفاظ على الخطوط المتوازية. إن shear تحدد المعلمة الفائقة زاوية القص، مع اختيار التعديل النهائي عشوائيًا بين -shear و shear. على سبيل المثال، مع shear=10.0، يتم تحديد القص عشوائيًا ضمن-10 إلى 10 على المحور السيني، ويتم تحديد قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
  • الغرض: يساعد النماذج على التعميم على الاختلافات في زوايا الرؤية الناتجة عن الإمالة الطفيفة أو وجهات النظر المائلة. على سبيل المثال، في مراقبة حركة المرور، قد تظهر الكائنات مثل السيارات وإشارات المرور مائلة بسبب مواضع الكاميرا غير المتعامدة. يضمن تطبيق زيادة القص أن يتعلم النموذج التعرف على الكائنات على الرغم من هذه التشوهات المنحرفة.
  • تنفيذ Ultralytics: RandomPerspective
  • ملاحظة:
    • shear يمكن للقيم أن تشوه الصورة بسرعة، لذلك يوصى بالبدء بقيم صغيرة وزيادتها تدريجيًا.
    • على عكس تحويلات المنظور، لا يُدخل القص عمقًا أو نقاط تلاشي، ولكنه يشوه شكل الكائنات عن طريق تغيير زواياها مع الحفاظ على الجوانب المتقابلة متوازية.
-10 -5 0.0 5 10
زيادة_القص_-10 زيادة_القص_-5 augmentation_identity زيادة_القص_5 زيادة_القص_10

المنظور (perspective)

  • النطاق: 0.0 - 0.001
  • افتراضي: 0.0
  • الاستخدام: يطبق تحويل منظور كامل على طول المحور السيني والمحور الصادي، مما يحاكي كيف تظهر الكائنات عند رؤيتها من أعماق أو زوايا مختلفة. الـ perspective تحدد المعلمة الفائقة مقدار المنظور، مع اختيار التعديل النهائي عشوائيًا بين -perspective و perspective. على سبيل المثال، مع perspective=0.001، يتم تحديد المنظور عشوائيًا ضمن-0.001 إلى 0.001 على المحور السيني، ويتم تحديد قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
  • الغرض: يعتبر تحسين المنظور أمرًا بالغ الأهمية للتعامل مع التغييرات الشديدة في وجهة النظر، خاصة في السيناريوهات التي تظهر فيها الكائنات مختصرة أو مشوهة بسبب تحولات المنظور. على سبيل المثال، في الكشف عن الكائنات القائمة على الطائرات بدون طيار، يمكن أن تظهر المباني والطرق والمركبات ممتدة أو مضغوطة اعتمادًا على إمالة الطائرة بدون طيار وارتفاعها. من خلال تطبيق تحويلات المنظور، تتعلم النماذج التعرف على الكائنات على الرغم من هذه التشوهات الناتجة عن المنظور، مما يحسن من قوتها في عمليات النشر في العالم الحقيقي.
  • تنفيذ Ultralytics: RandomPerspective
-0.001 -0.0005 0.0 0.0005 0.001
perspective_-0.001_augmentation perspective_-0.0005_augmentation augmentation_identity perspective_0.0005_augmentation perspective_0.001_augmentation

اقلب للأعلى-للأسفل (flipud)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.0
  • الاستخدام: ينفذ انعكاسًا رأسيًا عن طريق قلب الصورة على طول المحور الصادي. هذا التحويل يعكس الصورة بأكملها رأسًا على عقب ولكنه يحافظ على جميع العلاقات المكانية بين الكائنات. تحدد المعلمة الفائقة flipud احتمالية تطبيق التحويل، بقيمة flipud=1.0 لضمان قلب جميع الصور وقيمة flipud=0.0 تعطيل التحويل بالكامل. على سبيل المثال، مع flipud=0.5، لكل صورة فرصة بنسبة 50٪ لقلبها رأسًا على عقب.
  • الغرض: مفيد للسيناريوهات التي يمكن أن تظهر فيها الكائنات رأسًا على عقب. على سبيل المثال، في أنظمة الرؤية الروبوتية، يمكن التقاط الكائنات الموجودة على أحزمة النقل أو الأذرع الروبوتية ووضعها في اتجاهات مختلفة. يساعد التقليب الرأسي النموذج على التعرف على الكائنات بغض النظر عن موضعها من الأعلى إلى الأسفل.
  • تنفيذ Ultralytics: RandomFlip
flipud إيقاف flipud على
augmentation_identity flipud_on_augmentation

اقلب لليسار-لليمين (fliplr)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.5
  • الاستخدام: ينفذ انعكاسًا أفقيًا عن طريق عكس الصورة على طول المحور السيني. هذا التحويل يبادل الجانبين الأيسر والأيمن مع الحفاظ على الاتساق المكاني، مما يساعد النموذج على التعميم على الكائنات التي تظهر في اتجاهات معكوسة. إن fliplr تحدد المعلمة الفائقة احتمالية تطبيق التحويل، بقيمة fliplr=1.0 لضمان قلب جميع الصور وقيمة fliplr=0.0 تعطيل التحويل بالكامل. على سبيل المثال، مع fliplr=0.5، لكل صورة فرصة بنسبة 50٪ لقلبها من اليسار إلى اليمين.
  • الغرض: يستخدم التقليب الأفقي على نطاق واسع في الكشف عن الكائنات وتقدير الوضع والتعرف على الوجوه لتحسين المتانة ضد الاختلافات من اليسار إلى اليمين. على سبيل المثال، في القيادة الذاتية، يمكن أن تظهر المركبات والمشاة على جانبي الطريق، ويساعد التقليب الأفقي النموذج على التعرف عليهم بالتساوي في كلا الاتجاهين.
  • تنفيذ Ultralytics: RandomFlip
fliplr إيقاف fliplr على
augmentation_identity fliplr_on_augmentation

تبديل قناة BGR (bgr)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.0
  • الاستخدام: يبادل قنوات الألوان في الصورة من RGB إلى BGR، مما يغير ترتيب تمثيل الألوان. إن bgr تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع bgr=1.0 ضمان خضوع جميع الصور لتبديل القنوات و bgr=0.0 تعطيله. على سبيل المثال، مع bgr=0.5، لكل صورة فرصة بنسبة 50٪ للتحويل من RGB إلى BGR.
  • الغرض: يزيد من المتانة لترتيبات قنوات الألوان المختلفة. على سبيل المثال، عند تدريب النماذج التي يجب أن تعمل عبر أنظمة كاميرات ومكتبات تصوير مختلفة حيث قد يتم استخدام تنسيقات RGB و BGR بشكل غير متناسق، أو عند نشر النماذج في البيئات التي قد يختلف فيها تنسيق لون الإدخال عن بيانات التدريب.
  • تنفيذ Ultralytics: Format
bgr إيقاف bgr على
augmentation_identity bgr_on_augmentation

فسيفساء (Mosaic) (mosaic)

  • النطاق: 0.0 - 1.0
  • افتراضي: 1.0
  • الاستخدام: يجمع أربع صور تدريبية في صورة واحدة. الـ mosaic تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع mosaic=1.0 ضمان دمج جميع الصور و mosaic=0.0 تعطيل التحويل. على سبيل المثال، مع mosaic=0.5، لكل صورة فرصة بنسبة 50٪ للدمج مع ثلاث صور أخرى.
  • الغرض: فعال للغاية في تحسين اكتشاف الكائنات الصغيرة وفهم السياق. على سبيل المثال، في مشاريع الحفاظ على الحياة البرية حيث قد تظهر الحيوانات على مسافات ومقاييس مختلفة، يساعد تحسين الفسيفساء النموذج على تعلم التعرف على نفس الأنواع عبر أحجام مختلفة وانسدادات جزئية وسياقات بيئية عن طريق إنشاء عينات تدريب متنوعة بشكل مصطنع من بيانات محدودة.
  • تنفيذ Ultralytics: Mosaic
  • ملاحظة:
    • حتى لو كان mosaic الزيادة تجعل النموذج أكثر قوة، ويمكن أن تجعل عملية التدريب أكثر صعوبة.
    • في mosaic يمكن تعطيل الزيادة بالقرب من نهاية التدريب عن طريق تعيين close_mosaic إلى عدد الحقب قبل الاكتمال عندما يجب إيقاف تشغيله. على سبيل المثال، إذا epochs تم تعيينه على 200 و close_mosaic تم تعيينه على 20، ستستمر دالة mosaic سيتم تعطيل الزيادة بعد 180 epochs. إذا close_mosaic تم تعيينه على 0، ستستمر دالة mosaic سيتم تفعيل الزيادة لعملية التدريب بأكملها.
    • يتم تحديد مركز الفسيفساء التي تم إنشاؤها باستخدام قيم عشوائية، ويمكن أن يكون إما داخل الصورة أو خارجها.
    • التنفيذ الحالي لـ mosaic تجمع الزيادة بين 4 صور تم اختيارها عشوائيًا من مجموعة البيانات. إذا كانت مجموعة البيانات صغيرة، فقد يتم استخدام نفس الصورة عدة مرات في نفس الفسيفساء.
mosaic إيقاف mosaic على
augmentation_identity mosaic_on_augmentation

ميكس أب (mixup)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.0
  • الاستخدام: يمزج صورتين وتسمياتهما باحتمالية معينة. الـ mixup تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع mixup=1.0 لضمان خلط جميع الصور و mixup=0.0 تعطيل التحويل. على سبيل المثال، مع mixup=0.5، لكل صورة فرصة بنسبة 50٪ لخلطها مع صورة أخرى.
  • الغرض: يحسن قوة النموذج ويقلل من التجاوز. على سبيل المثال، في أنظمة التعرف على منتجات البيع بالتجزئة، يساعد المزج النموذج على تعلم ميزات أكثر قوة من خلال مزج صور لمنتجات مختلفة، وتعليمه تحديد العناصر حتى عندما تكون مرئية جزئيًا أو محجوبة بواسطة منتجات أخرى على رفوف المتاجر المزدحمة.
  • تنفيذ Ultralytics: Mixup
  • ملاحظة:
    • في mixup النسبة هي قيمة عشوائية تم اختيارها من np.random.beta(32.0, 32.0) توزيع بيتا، مما يعني أن كل صورة تساهم بنسبة 50% تقريبًا، مع اختلافات طفيفة.
الصورة الأولى، mixup إيقاف الصورة الثانية، mixup إيقاف mixup على
augmentation_mixup_identity_1 augmentation_mixup_identity_2 mixup_on_augmentation

CutMix (cutmix)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.0
  • الاستخدام: يقطع منطقة مستطيلة من صورة واحدة ويلصقها على صورة أخرى باحتمالية معينة. الـ cutmix تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع cutmix=1.0 لضمان خضوع جميع الصور لهذا التحويل و cutmix=0.0 تعطيله تمامًا. على سبيل المثال، مع cutmix=0.5، لكل صورة فرصة بنسبة 50٪ لاستبدال منطقة منها برقعة من صورة أخرى.
  • الغرض: يعزز أداء النموذج عن طريق إنشاء سيناريوهات انسداد واقعية مع الحفاظ على سلامة الميزات المحلية. على سبيل المثال، في أنظمة القيادة الذاتية، يساعد cutmix النموذج على تعلم التعرف على المركبات أو المشاة حتى عندما يتم حجبهم جزئيًا بواسطة كائنات أخرى، مما يحسن دقة الاكتشاف في البيئات المعقدة في العالم الحقيقي مع الكائنات المتداخلة.
  • تنفيذ Ultralytics: CutMix
  • ملاحظة:
    • يتم تحديد حجم وموضع المنطقة المقطوعة عشوائيًا لكل تطبيق.
    • على عكس mixup الذي يمزج قيم البكسل عالميًا، cutmix يحافظ على شدة البكسل الأصلية داخل المناطق المقطوعة، مما يحافظ على الميزات المحلية.
    • يتم لصق منطقة في الصورة الهدف فقط إذا لم تتداخل مع أي صندوق محيط موجود. بالإضافة إلى ذلك، فقط الصناديق المحيطة التي تحتفظ على الأقل 0.1 (10٪) من مساحتها الأصلية داخل المنطقة الملصقة.
    • لا يمكن تغيير الحد الأدنى لمساحة المربع المحيط في التطبيق الحالي، وقد تم تعيينه على 0.1 بشكل افتراضي.
الصورة الأولى، cutmix إيقاف الصورة الثانية، cutmix إيقاف cutmix على
augmentation_cutmix_identity_1 augmentation_cutmix_identity_2 cutmix_on_augmentation

تحسينات خاصة بالتجزئة

نسخ-لصق (copy_paste)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.0
  • الاستخدام: يعمل فقط لمهام التقسيم، هذا التحسين ينسخ الكائنات داخل الصور أو بينها بناءً على احتمال محدد، يتم التحكم فيه بواسطة copy_paste_mode. إن copy_paste تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع copy_paste=1.0 لضمان نسخ جميع الصور و copy_paste=0.0 تعطيل التحويل. على سبيل المثال، مع copy_paste=0.5، لكل صورة فرصة بنسبة 50٪ لنسخ كائنات من صورة أخرى.
  • الغرض: مفيد بشكل خاص لمهام تقسيم المثيلات وفئات الكائنات النادرة. على سبيل المثال، في الكشف عن العيوب الصناعية حيث تظهر أنواع معينة من العيوب بشكل غير متكرر، يمكن أن يؤدي تحسين النسخ واللصق إلى زيادة حدوث هذه العيوب النادرة بشكل مصطنع عن طريق نسخها من صورة إلى أخرى، مما يساعد النموذج على تعلم هذه الحالات الممثلة تمثيلاً ناقصًا بشكل أفضل دون الحاجة إلى عينات معيبة إضافية.
  • تنفيذ Ultralytics: CopyPaste
  • ملاحظة:
    • كما هو موضح في الصورة المتحركة أدناه، فإن copy_paste يمكن استخدام الزيادة لنسخ الكائنات من صورة إلى أخرى.
    • بمجرد نسخ الكائن، بغض النظر عن copy_paste_mode، يتم حساب تقاطعها على المساحة (IoA) مع جميع كائنات الصورة المصدر. إذا كانت جميع قيم IoA أقل من 0.3 (30٪)، يتم لصق الكائن في الصورة الهدف. إذا كان أحد IoA فقط أعلى من 0.3، لا يتم لصق الكائن في الصورة الهدف.
    • لا يمكن تغيير حد IoA مع التنفيذ الحالي ويتم تعيينه على 0.3 بشكل افتراضي.
copy_paste إيقاف copy_paste متابعة مع copy_paste_mode=flip تصور copy_paste معالجة
augmentation_identity copy_paste_on_augmentation copy_paste_augmentation_gif_demo

وضع النسخ واللصق (copy_paste_mode)

  • خيارات: 'flip', 'mixup'
  • افتراضي: 'flip'
  • الاستخدام: يحدد الطريقة المستخدمة لـ نسخ-لصق الزيادة. إذا تم تعيينه على 'flip'، تأتي الكائنات من نفس الصورة، بينما 'mixup' يسمح بنسخ الكائنات من صور مختلفة.
  • الغرض: يسمح بالمرونة في كيفية دمج الكائنات المنسوخة في الصور المستهدفة.
  • تنفيذ Ultralytics: CopyPaste
  • ملاحظة:
    • مبدأ IoA هو نفسه لكلا copy_paste_mode، ولكن طريقة نسخ الكائنات مختلفة.
    • اعتمادًا على حجم الصورة، قد يتم نسخ الكائنات جزئيًا أو كليًا خارج الإطار في بعض الأحيان.
    • اعتمادًا على جودة شروح المضلعات، قد يكون للكائنات المنسوخة اختلافات طفيفة في الشكل مقارنة بالأصول.
صورة مرجعية الصورة المختارة لـ copy_paste copy_paste متابعة مع copy_paste_mode=mixup
augmentation_mixup_identity_2 augmentation_identity copy_paste_mode_mixup_augmentation

تحسينات خاصة بالتصنيف

زيادة تلقائية (auto_augment)

  • خيارات: 'randaugment', 'autoaugment', 'augmix', None
  • افتراضي: 'randaugment'
  • الاستخدام: يطبق سياسات زيادة تلقائية للتصنيف. الـ 'randaugment' يستخدم هذا الخيار RandAugment، 'autoaugment' يستخدم AutoAugment، و 'augmix' يستخدم AugMix. يتم التعيين إلى None تعطيل الزيادة التلقائية.
  • الغرض: يحسن استراتيجيات التحسين تلقائيًا لمهام التصنيف. الاختلافات هي كالتالي:
    • AutoAugment: يطبق هذا الوضع سياسات زيادة البيانات محددة مسبقًا تم تعلمها من مجموعات بيانات مثل ImageNet و CIFAR10 و SVHN. يمكن للمستخدمين تحديد هذه السياسات الحالية ولكن لا يمكنهم تدريب سياسات جديدة داخل Torchvision. لاكتشاف استراتيجيات زيادة البيانات المثلى لمجموعات بيانات معينة، ستكون المكتبات الخارجية أو التطبيقات المخصصة ضرورية. مرجع إلى ورقة AutoAugment.
    • RandAugment: يطبق تحديدًا عشوائيًا للتحويلات ذات الحجم الموحد. يقلل هذا النهج من الحاجة إلى مرحلة بحث مكثفة، مما يجعله أكثر كفاءة من الناحية الحسابية مع الاستمرار في تعزيز قوة النموذج. مرجع لـ ورقة RandAugment.
    • AugMix: ‏AugMix هي طريقة لزيادة البيانات تعزز من قوة النموذج عن طريق إنشاء اختلافات متنوعة للصور من خلال تركيبات عشوائية لتحويلات بسيطة. ارجع إلى ورقة AugMix.
  • تنفيذ Ultralytics: classify_augmentations()
  • ملاحظة:
    • بشكل أساسي، الفرق الرئيسي بين الطرق الثلاث هو الطريقة التي يتم بها تحديد سياسات الزيادة وتطبيقها.
    • يمكنك الرجوع إلى هذه المقالة التي تقارن الطرق الثلاث بالتفصيل.

المسح العشوائي (erasing)

  • النطاق: 0.0 - 0.9
  • افتراضي: 0.4
  • الاستخدام: يمحو عشوائيًا أجزاء من الصورة أثناء تدريب التصنيف. إن erasing تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع erasing=0.9 لضمان مسح جميع الصور تقريبًا و erasing=0.0 تعطيل التحويل. على سبيل المثال، مع erasing=0.5، لكل صورة فرصة بنسبة 50٪ لمسح جزء منها.
  • الغرض: يساعد النماذج على تعلم ميزات قوية ويمنع الاعتماد المفرط على مناطق معينة في الصورة. على سبيل المثال، في أنظمة التعرف على الوجوه، يساعد المسح العشوائي النماذج على أن تصبح أكثر قوة في مواجهة الانسدادات الجزئية مثل النظارات الشمسية أو أقنعة الوجه أو الأشياء الأخرى التي قد تغطي ملامح الوجه جزئيًا. هذا يحسن الأداء في العالم الحقيقي من خلال إجبار النموذج على تحديد الأفراد باستخدام خصائص وجه متعددة بدلاً من الاعتماد فقط على الميزات المميزة التي قد تكون مخفية.
  • تنفيذ Ultralytics: classify_augmentations()
  • ملاحظة:
    • في erasing تأتي الزيادة مع scale, ratio، و value المعلمات الفائقة التي لا يمكن تغييرها باستخدام التنفيذ الحالي: قيمها الافتراضية هي (0.02, 0.33), (0.3, 3.3)، و 0، على التوالي، كما هو مذكور في PyTorch. الوثائق.
    • الحد الأعلى لـ erasing تم تعيين المعلمة الفائقة إلى 0.9 لتجنب تطبيق التحويل على جميع الصور.
erasing إيقاف erasing تشغيل (مثال 1) erasing تشغيل (مثال 2) erasing تشغيل (مثال 3)
augmentation_identity erasing_ex1_augmentation erasing_ex2_augmentation erasing_ex3_augmentation

الأسئلة الشائعة

هناك الكثير من التحسينات للاختيار من بينها. كيف أعرف أي منها يجب استخدامه؟

يعتمد اختيار التحسينات الصحيحة على حالة الاستخدام ومجموعة البيانات المحددة الخاصة بك. فيما يلي بعض الإرشادات العامة لمساعدتك في اتخاذ القرار:

  • في معظم الحالات، تكون الاختلافات الطفيفة في اللون والسطوع مفيدة. القيم الافتراضية لـ hsv_h, hsv_s، و hsv_v هي نقطة انطلاق قوية.
  • إذا كانت وجهة نظر الكاميرا ثابتة ولن تتغير بمجرد نشر النموذج، فمن المحتمل أن تتمكن من تخطي التحويلات الهندسية مثل rotation, translation, scale, shear، أو perspective. ومع ذلك، إذا كانت زاوية الكاميرا قد تختلف، وكنت بحاجة إلى أن يكون النموذج أكثر قوة، فمن الأفضل الاحتفاظ بهذه التحسينات.
  • استخدم mosaic الزيادة فقط إذا كان وجود كائنات مسدودة جزئيًا أو كائنات متعددة لكل صورة مقبولًا ولا يغير قيمة التصنيف. بدلاً من ذلك، يمكنك الاحتفاظ بـ mosaic نشطة ولكن تزيد من close_mosaic قيمة لتعطيلها في وقت مبكر من عملية التدريب.

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

عند بدء التدريب، أرى albumentations: Blur[...] مرجع. هل يعني هذا أن Ultralytics YOLO يقوم بتنفيذ زيادة إضافية مثل التمويه؟

إذا كان albumentations ، تقوم Ultralytics تلقائيًا بتطبيق مجموعة من الزيادات الإضافية للصور باستخدامها. تتم معالجة هذه الزيادات داخليًا ولا تتطلب أي تكوين إضافي.

يمكنك العثور على القائمة الكاملة للتحويلات المطبقة في وثائق فنية، وكذلك في دليل تكامل Albumentations. لاحظ أنه فقط التحسينات ذات الاحتمالية p أكبر من 0 نشطة. يتم تطبيقها عن قصد بترددات منخفضة لتقليد القطع الأثرية المرئية في العالم الحقيقي، مثل تأثيرات التمويه أو التدرج الرمادي.

عند بدء التدريب، لا أرى أي إشارة إلى albumentations. لماذا؟

تحقق مما إذا كان albumentations مثبتة. إذا لم يكن الأمر كذلك، يمكنك تثبيته عن طريق التشغيل pip install albumentations. بمجرد التثبيت، يجب أن يتم الكشف عن الحزمة تلقائيًا واستخدامها بواسطة Ultralytics.

كيف يمكنني تخصيص عمليات الزيادة الخاصة بي؟

يمكنك تخصيص الزيادات عن طريق إنشاء فئة مجموعة بيانات ومدرب مخصصين. على سبيل المثال، يمكنك استبدال زيادات تصنيف Ultralytics الافتراضية بـ torchvision.transforms.Resize من PyTorch أو تحويلات أخرى. راجع مثال التدريب المخصص في وثائق التصنيف للحصول على تفاصيل التنفيذ.



📅 تم الإنشاء منذ 3 أشهر ✏️ تم التحديث منذ 26 يومًا

تعليقات