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

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

مثال على تعزيزات الصور

مقدمة

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

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

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

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

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

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

يمكنك تخصيص كل معلمة باستخدام واجهة برمجة تطبيقات Python أو واجهة سطر الأوامر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). إن 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 :

مثال على القطار

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_تقوية_h_0.5 hsv_h_-0.25_augmentation زيادة_الهوية_الهوية hsv_h_0.25_تقوية_h_0.25 hsv_h_0.5_تقوية_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_s_1_augmentation hsv_s_s_0.5_التوسيع زيادة_الهوية_الهوية hsv_s_s_0.5_augmentation hsv_s_1_s_augmentation

ضبط السطوع (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_v_1_augmentation hsv_v_v_-0.5_augmentation زيادة_الهوية_الهوية hsv_v_v_0.5_augmentation hsv_v_1_v_augmentation

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

التناوب (degrees)

  • النطاق: 0.0 إلى 180
  • افتراضي: 0.0
  • الاستخدام: تدوير الصور عشوائياً ضمن النطاق المحدد. يقوم بـ degrees يُحدِّد البارامتر الفائق زاوية الدوران، مع اختيار التعديل النهائي عشوائيًا بين -degrees و degrees. على سبيل المثال، مع degrees=10.0، يتم اختيار الدوران عشوائيًا داخل-10.0 إلى 10.0.
  • الغرض: حاسم للتطبيقات التي يمكن أن تظهر فيها الأجسام في اتجاهات مختلفة. على سبيل المثال، في الصور الجوية للطائرات بدون طيار، يمكن أن تكون المركبات موجهة في أي اتجاه، مما يتطلب نماذج للتعرف على الأجسام بغض النظر عن دورانها.
  • تطبيقUltralytics: RandomPerspective
-180 -90 0.0 90 180
درجة_-180_درجة_مئوية درجة_90_90_درجة_التقدير زيادة_الهوية_الهوية درجة_90_درجة_90_تقدير درجات_180_درجة_80_تقدير

الترجمة (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
ترجمة_0.5_ترجمة_0.5_ترجمة ترجمة_0.25_ترجمة_0.25_ترجمة زيادة_الهوية_الهوية ترجمة_0.25_ترجمة_0.25_ترجمة ترجمة_0.5_ترجمة_0.5_ترجمة

المقياس (scale)

  • النطاق: ≥0.0
  • افتراضي: 0.5
  • الاستخدام: تغيير حجم الصور بمعامل عشوائي ضمن النطاق المحدد. و scale يُحدِّد المُعامِل الفائق عامل القياس، مع اختيار التعديل النهائي عشوائيًا بين 1-scale و 1+scale. على سبيل المثال، مع scale=0.5، يتم اختيار القياس عشوائيًا داخل0.5 إلى 1.5.
  • الغرض: تمكين النماذج من التعامل مع الأجسام على مسافات وأحجام مختلفة. على سبيل المثال، في تطبيقات القيادة الذاتية، يمكن أن تظهر المركبات على مسافات مختلفة من الكاميرا، مما يتطلب من النموذج التعرف عليها بغض النظر عن حجمها.
  • تطبيقUltralytics: RandomPerspective
  • ملاحظة:
    • القيمة -1.0 لا يظهر لأنه سيؤدي إلى اختفاء الصورة، في حين أن 1.0 ينتج عنه ببساطة تكبير بمقدار 2 ضعف.
    • القيم المعروضة في الجدول أدناه هي القيم المطبقة من خلال البارامتر الزائد 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
مقياس_0.5_مقياس_0.5 مقياس_0.25_مقياس_0.25 زيادة_الهوية_الهوية مقياس_0.25_المقياس مقياس_0.5_المقياس

القص (shear)

  • النطاق: -180 إلى +180
  • افتراضي: 0.0
  • الاستخدام: يقدم تحويلًا هندسيًا يحرف الصورة على طول كل من المحور س والمحور ص، مما يؤدي فعليًا إلى إزاحة أجزاء من الصورة في اتجاه واحد مع الحفاظ على الخطوط المتوازية. إن shear يُحدِّد البارامتر الفائق زاوية القص، مع اختيار التعديل النهائي عشوائيًا بين -shear و shear. على سبيل المثال، مع shear=10.0، يتم اختيار القص عشوائيًا داخل-10 إلى 10 على المحور س، ويتم اختيار قيمة عشوائية مستقلة أخرى ضمن النطاق نفسه على المحور ص.
  • الغرض: يساعد النماذج على تعميم النماذج على الاختلافات في زوايا المشاهدة الناتجة عن الميل الطفيف أو وجهات النظر المائلة. على سبيل المثال، في مراقبة حركة المرور، قد تبدو الأجسام مثل السيارات وإشارات الطرق مائلة بسبب مواضع الكاميرا غير المتعامدة. يضمن تطبيق زيادة القص تعلم النموذج التعرف على الأجسام على الرغم من هذه التشوهات المائلة.
  • تطبيقUltralytics: RandomPerspective
  • ملاحظة:
    • shear يمكن للقيم أن تشوه الصورة بسرعة، لذا يوصى بالبدء بقيم صغيرة وزيادتها تدريجيًا.
    • على عكس التحويلات المنظورية، لا يقدم القص العمق أو نقاط التلاشي ولكن بدلاً من ذلك يشوه شكل الأجسام عن طريق تغيير زواياها مع الحفاظ على توازي الجوانب المتقابلة.
-10 -5 0.0 5 10
القص_10_التقسيم القص_5_التقسيم زيادة_الهوية_الهوية القص_5_القص_5_التوسيع القص_10_القص_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
المنظور_0.001_منظور_0.001_التقسيم المنظور_0.0005_منظور_0.0005_التوسيع زيادة_الهوية_الهوية المنظور_0.0005_منظور_0.0005_تقسيم المنظور_0.001_منظور_0.001_التقدير

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

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

انعكاس لليسار لليمين (fliplr)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.5
  • الاستخدام: يقوم بإجراء قلب أفقي عن طريق عكس الصورة على طول المحور السيني. يقوم هذا التحويل بتبديل الجانبين الأيسر والأيمن مع الحفاظ على الاتساق المكاني، مما يساعد النموذج على التعميم على الأجسام التي تظهر في اتجاهات معكوسة. إن fliplr تحدد البارامتر الفائق احتمالية تطبيق التحويل، بقيمة fliplr=1.0 التأكد من أن جميع الصور مقلوبة وقيمة fliplr=0.0 تعطيل التحويل بالكامل. على سبيل المثال، مع fliplr=0.5فإن كل صورة لديها فرصة 50% أن تنقلب من اليسار إلى اليمين.
  • الغرض: يُستخدم التقليب الأفقي على نطاق واسع في اكتشاف الأجسام وتقدير الوضعية والتعرف على الوجه لتحسين المتانة ضد الاختلافات بين اليسار واليمين. على سبيل المثال، في القيادة الذاتية، يمكن أن تظهر المركبات والمشاة على أي من جانبي الطريق، ويساعد التقليب الأفقي النموذج على التعرف عليها بشكل جيد في كلا الاتجاهين.
  • تنفيذUltralytics: RandomFlip
fliplr إيقاف fliplr على
زيادة_الهوية_الهوية fliplr_on_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: التنسيق
bgr إيقاف bgr على
زيادة_الهوية_الهوية bgr_عند_التوسيع

فسيفساء (mosaic)

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

خلط (mixup)

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

CutMix (cutmix)

  • النطاق: 0.0 - 1.0
  • افتراضي: 0.0
  • الاستخدام: قص منطقة مستطيلة من صورة ولصقها على صورة أخرى باحتمالية معينة. يتم استخدام cutmix تُحدِّد البارامتر الفائق احتمال تطبيق التحويل، مع cutmix=1.0 التأكد من أن جميع الصور تخضع لهذا التحويل و cutmix=0.0 تعطيله بالكامل. على سبيل المثال، مع cutmix=0.5فإن كل صورة لديها فرصة بنسبة 50% لاستبدال منطقة ما برقعة من صورة أخرى.
  • الغرض: تحسين أداء النموذج من خلال إنشاء سيناريوهات انسداد واقعية مع الحفاظ على تكامل الميزة المحلية. على سبيل المثال، في أنظمة القيادة الذاتية، يساعد Cutmix النموذج على تعلم التعرف على المركبات أو المشاة حتى عندما تكون محجوبة جزئيًا بأجسام أخرى، مما يحسن دقة الكشف في بيئات العالم الحقيقي المعقدة ذات الأجسام المتداخلة.
  • تنفيذUltralytics: CutMix
  • ملاحظة:
    • يتم تحديد حجم وموضع منطقة القطع بشكل عشوائي لكل تطبيق.
    • على عكس المزج الذي يمزج قيم البكسل على مستوى العالم, cutmix يحافظ على كثافة البكسلات الأصلية داخل مناطق القطع، مع الحفاظ على السمات المحلية.
    • لا يتم لصق المنطقة في الصورة الهدف إلا إذا كانت لا تتداخل مع أي مربع محدد موجود. بالإضافة إلى ذلك، فقط المربعات المحدودة التي تحتفظ على الأقل 0.1 (10%) من مساحتها الأصلية داخل المنطقة الملصقة محفوظة.
    • لا يمكن تغيير الحد الأدنى لمساحة المربع المحدود هذا مع التنفيذ الحالي ويتم تعيينه إلى 0.1 افتراضيًا.
الصورة الأولى, cutmix إيقاف الصورة الثانية, cutmix إيقاف cutmix على
زيادة_قطع_مزيج_الهوية_1 زيادة_قطع_مزيج_الهوية_2 قطع_مزيج_عند_التوسيع

التعزيزات الخاصة بالتقسيمات الخاصة بالتقسيم

نسخ ولصق (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 العملية
زيادة_الهوية_الهوية نسخ_لصق_على_لصق_عند_الإضافة نسخ_لصق_لصق_تصوير_جيف_ديمو

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

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

التعزيزات الخاصة بالتصنيف

التعزيز التلقائي (auto_augment)

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

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

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

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

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

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

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

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

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

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

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

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

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



📅 تم إنشاؤه منذ 1 شهر ✏️ تم التحديث منذ 23 يومًا

التعليقات