Meet YOLO26: next-gen vision AI.

Link to this sectionتعزيز البيانات باستخدام Ultralytics YOLO#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionمقدمة#

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



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Link to this sectionلماذا يعد تعزيز البيانات مهماً#

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

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

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

Link to this sectionتكوينات نموذجية#

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

أمثلة على الإعدادات
import albumentations as A

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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 Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

Link to this sectionاستخدام ملف إعدادات#

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

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

ثم ابدأ التدريب باستخدام واجهة برمجة تطبيقات Python:

مثال على التدريب
from ultralytics import YOLO

# Load a COCO-pretrained YOLO26n model
model = YOLO("yolo26n.pt")

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

Link to this sectionتعزيزات مساحة اللون#

Link to this sectionتعديل تدرج اللون (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.250.00.250.5
Hue shift -0.5 augmentationHue shift -0.25 augmentationOriginal image without augmentationHue shift 0.25 augmentationHue shift -0.5 augmentation

Link to this sectionتعديل التشبع (hsv_s)#

  • النطاق: 0.0 - 1.0
  • الافتراضي: 0.7
  • الاستخدام: يعدل كثافة الألوان في الصورة. يحدد المعامل الفائق hsv_s مقدار التغيير، مع اختيار التعديل النهائي عشوائياً بين -hsv_s و hsv_s. على سبيل المثال، مع hsv_s=0.7، يتم اختيار الكثافة عشوائياً ضمن نطاق -0.7 إلى 0.7.
  • الغرض: يساعد النماذج على التعامل مع ظروف الطقس المختلفة وإعدادات الكاميرا. على سبيل المثال، قد تظهر إشارة المرور الحمراء زاهية جداً في يوم مشمس ولكنها تبدو باهتة وخافتة في الظروف الضبابية.
  • تطبيق Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Saturation -1.0 grayscale augmentationSaturation -0.5 augmentationOriginal image without augmentationSaturation 0.5 augmentationSaturation 1.0 vivid augmentation

Link to this sectionتعديل السطوع (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.50.00.51.0
Brightness -1.0 dark augmentationBrightness -0.5 augmentationOriginal image without augmentationBrightness 0.5 augmentationBrightness 1.0 bright augmentation

Link to this sectionالتحويلات الهندسية#

Link to this sectionالدوران (degrees)#

  • النطاق: 0.0 إلى 180
  • الافتراضي: 0
  • الاستخدام: يدور الصور عشوائياً ضمن النطاق المحدد. يحدد المعامل الفائق degrees زاوية الدوران، مع اختيار التعديل النهائي عشوائياً بين -degrees و degrees. على سبيل المثال، مع degrees=10.0، يتم اختيار الدوران عشوائياً ضمن نطاق -10.0 إلى 10.0.
  • الغرض: ضروري للتطبيقات التي يمكن أن تظهر فيها الكائنات باتجاهات مختلفة. على سبيل المثال، في صور الطائرات بدون طيار (الدرونز)، يمكن أن تكون المركبات موجهة في أي اتجاه، مما يتطلب من النماذج التعرف على الكائنات بغض النظر عن دورانها.
  • تطبيق Ultralytics: RandomPerspective
-180-900.090180
Rotation -180 degrees augmentationRotation -90 degrees augmentationOriginal image without augmentationRotation 90 degrees augmentationRotation 180 degrees augmentation

Link to this sectionالترجمة/الإزاحة (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.250.00.250.5
Translation -0.5 shift augmentationTranslation -0.25 shift augmentationOriginal image without augmentationTranslation 0.25 shift augmentationTranslation 0.5 shift augmentation

Link to this sectionالتحجيم (scale)#

  • النطاق: 0.0 - 1.0
  • الافتراضي: 0.5
  • الاستخدام: يغير حجم الصور بمعامل عشوائي ضمن النطاق المحدد. يحدد المعامل الفائق scale معامل التحجيم، مع اختيار التعديل النهائي عشوائياً بين 1-scale و 1+scale. على سبيل المثال، مع scale=0.5، يتم اختيار التحجيم عشوائياً ضمن نطاق 0.5 إلى 1.5.
  • الغرض: يمكن النماذج من التعامل مع الكائنات على مسافات وأحجام مختلفة. على سبيل المثال، في تطبيقات القيادة الذاتية، يمكن أن تظهر المركبات على مسافات مختلفة من الكاميرا، مما يتطلب من النموذج التعرف عليها بغض النظر عن حجمها.
  • تطبيق Ultralytics: RandomPerspective
  • ملاحظة:
    • القيمة -1.0 لا يتم عرضها لأنها ستجعل الصورة تختفي، بينما 1.0 تؤدي ببساطة إلى تكبير مرتين.
    • القيم المعروضة في الجدول أدناه هي القيم المطبقة من خلال المعامل الفائق scale، وليس معامل التحجيم النهائي.
    • إذا كان scale أكبر من 1.0، يمكن أن تكون الصورة صغيرة جداً أو معكوسة، حيث يتم اختيار معامل التحجيم عشوائياً بين 1-scale و 1+scale. على سبيل المثال، مع scale=3.0، يتم اختيار التحجيم عشوائياً ضمن نطاق -2.0 إلى 4.0. إذا تم اختيار قيمة سالبة، يتم عكس الصورة.
-0.5-0.250.00.250.5
Scale 0.5x zoom out augmentationScale 0.75x zoom out augmentationOriginal image without augmentationScale 1.25x zoom in augmentationScale 1.5x zoom in augmentation

Link to this sectionالقص (shear)#

  • النطاق: -180 إلى +180
  • الافتراضي: 0
  • الاستخدام: يقدم تحويلاً هندسياً يقوم بإمالة الصورة على طول المحور السيني والمحور الصادي، مما يؤدي فعلياً إلى إزاحة أجزاء من الصورة في اتجاه واحد مع الحفاظ على الخطوط المتوازية. يحدد المعامل الفائق shear زاوية القص، مع اختيار التعديل النهائي عشوائياً بين -shear و shear. على سبيل المثال، مع shear=10.0، يتم اختيار القص عشوائياً ضمن نطاق -10 إلى 10 على المحور السيني، ويتم اختيار قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
  • الغرض: يساعد النماذج على التعميم على التنويعات في زوايا العرض الناتجة عن الميل الطفيف أو وجهات النظر المائلة. على سبيل المثال، في مراقبة حركة المرور، قد تظهر كائنات مثل السيارات وإشارات المرور مائلة بسبب وضعيات الكاميرا غير العمودية. يضمن تطبيق تعزيز القص أن النموذج يتعلم التعرف على الكائنات على الرغم من هذه التشوهات المائلة.
  • تطبيق Ultralytics: RandomPerspective
  • ملاحظة:
    • يمكن لقيم shear أن تشوه الصورة بسرعة، لذا يوصى بالبدء بقيم صغيرة وزيادتها تدريجياً.
    • على عكس تحويلات المنظور، لا يقدم القص عمقاً أو نقاط تلاشي بل يشوه شكل الكائنات عن طريق تغيير زواياها مع الحفاظ على الجوانب المتقابلة متوازية.
-10-50.0510
Shear -10 degrees augmentationShear -5 degrees augmentationOriginal image without augmentationShear 5 degrees augmentationShear 10 degrees augmentation

Link to this sectionالمنظور (perspective)#

  • النطاق: 0.0 - 0.001
  • الافتراضي: 0
  • الاستخدام: يطبق تحويل منظور كامل على طول محوري x و y، مما يحاكي كيفية ظهور الكائنات عند رؤيتها من أعماق أو زوايا مختلفة. يحدد المعامل التشعبي perspective مقدار المنظور، مع اختيار التعديل النهائي عشوائياً بين -perspective و perspective. على سبيل المثال، مع perspective=0.001 يتم اختيار المنظور عشوائياً ضمن النطاق من -0.001 إلى 0.001 على المحور x، ويتم اختيار قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور y.
  • الغرض: يُعد تعزيز المنظور أمراً بالغ الأهمية للتعامل مع تغيرات زوايا الرؤية المتطرفة، خاصة في السيناريوهات التي تظهر فيها الكائنات قصيرة أو مشوهة بسبب تحولات المنظور. على سبيل المثال، في اكتشاف الكائنات بواسطة الطائرات بدون طيار، يمكن أن تظهر المباني والطرق والمركبات ممدودة أو مضغوطة اعتماداً على ميل الطائرة وارتفاعها. من خلال تطبيق تحويلات المنظور، تتعلم النماذج التعرف على الكائنات على الرغم من هذه التشوهات الناتجة عن المنظور، مما يحسن من متانتها في عمليات النشر في العالم الحقيقي.
  • تطبيق Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
تحويل المنظور -0.001تحويل المنظور -0.0005Original image without augmentationتحويل المنظور 0.0005تحويل المنظور 0.001

Link to this sectionالقلب الرأسي (flipud)#

  • النطاق: 0.0 - 1.0
  • الافتراضي: 0
  • Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of flipud=1.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • الغرض: مفيد للسيناريوهات التي يمكن أن تظهر فيها الكائنات رأساً على عقب. على سبيل المثال، في أنظمة الرؤية الروبوتية، قد يتم التقاط الكائنات الموجودة على أحزمة النقل أو الأذرع الروبوتية ووضعها في اتجاهات مختلفة. يساعد القلب الرأسي النموذج على التعرف على الكائنات بغض النظر عن تموضعها من الأعلى للأسفل.
  • تنفيذ Ultralytics: RandomFlip
flipud معطلflipud مفعل
الصورة الأصلية بدون تعزيزتعزيز القلب الرأسي مفعل

Link to this sectionالقلب الأفقي (fliplr)#

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

Link to this sectionتبديل قنوات BGR (bgr)#

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

Link to this sectionالفسيفساء (mosaic)#

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

Link to this sectionالخلط (mixup)#

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

Link to this sectionالقص واللصق (cutmix)#

  • النطاق: 0.0 - 1.0
  • الافتراضي: 0
  • الاستخدام: يقص منطقة مستطيلة من صورة ويلصقها فوق صورة أخرى باحتمالية معينة. يحدد المعامل التشعبي cutmix احتمالية تطبيق التحويل، حيث تضمن cutmix=1.0 خضوع جميع الصور لهذا التحويل، بينما تؤدي cutmix=0.0 إلى تعطيله تماماً. على سبيل المثال، مع cutmix=0.5 يكون لكل صورة فرصة 50% لاستبدال منطقة منها برقعة من صورة أخرى.
  • Purpose: Enhances model performance by creating realistic occlusion scenarios while maintaining local feature integrity. For example, in autonomous driving systems, cutmix helps the model learn to recognize vehicles or pedestrians even when they're partially occluded by other objects, improving detection accuracy in complex real-world environments with overlapping objects.
  • تنفيذ Ultralytics: CutMix
  • ملاحظة:
    • يتم تحديد حجم وموضع منطقة القص عشوائياً لكل تطبيق.
    • على عكس الخلط الذي يمزج قيم البكسل عالمياً، يحافظ cutmix على كثافات البكسل الأصلية داخل مناطق القص، مما يحافظ على الميزات المحلية.
    • يتم لصق منطقة في الصورة الهدف فقط إذا لم تتداخل مع أي صندوق إحاطة موجود. بالإضافة إلى ذلك، يتم الاحتفاظ فقط بصناديق الإحاطة التي تحتفظ بما لا يقل عن 0.1 (10%) من مساحتها الأصلية داخل المنطقة الملصقة.
    • لا يمكن تغيير حد مساحة صندوق الإحاطة الأدنى هذا باستخدام التنفيذ الحالي وهو مضبوط على 0.1 افتراضياً.
الصورة الأولى، cutmix معطلالصورة الثانية، cutmix معطلcutmix مفعل
الصورة الأولى لـ CutMixالصورة الثانية لـ CutMixتعزيز CutMix مفعل

Link to this sectionتعزيزات خاصة بالتجزئة (Segmentation)#

Link to this sectionالنسخ واللصق (copy_paste)#

  • النطاق: 0.0 - 1.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
الصورة الأصلية بدون تعزيزتعزيز النسخ واللصق مفعلعرض توضيحي متحرك لتعزيز النسخ واللصق

Link to this sectionوضع النسخ واللصق (copy_paste_mode)#

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

Link to this sectionتعزيزات خاصة بالتصنيف (Classification)#

Link to this sectionالتعزيز التلقائي (auto_augment)#

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

Link to this sectionالمحو العشوائي (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)
Original image without augmentationRandom erasing example 1Random erasing example 2Random erasing example 3

Link to this sectionميزات التعزيز المتقدمة#

Link to this sectionتحويلات Albumentations المخصصة (augmentations)#

  • النوع: list من تحويلات Albumentations
  • الافتراضي: None
  • الاستخدام: يسمح لك بتوفير تحويلات Albumentations مخصصة لتعزيز البيانات باستخدام Python API. يقبل هذا المعامل قائمة بكائنات تحويل Albumentations التي سيتم تطبيقها أثناء التدريب بدلاً من تحويلات Albumentations الافتراضية.
  • الغرض: يوفر تحكماً دقيقاً في استراتيجيات تعزيز البيانات من خلال الاستفادة من المكتبة الواسعة لتحويلات Albumentations. هذا مفيد بشكل خاص عندما تحتاج إلى تعزيزات متخصصة تتجاوز خيارات YOLO المدمجة، مثل تعديلات الألوان المتقدمة، أو حقن الضوضاء، أو التحويلات الخاصة بنطاق معين.
  • تنفيذ Ultralytics: Albumentations
مثال على Albumentations مخصص
import albumentations as A

from ultralytics import YOLO

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

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

نقاط رئيسية:

  • Python API فقط: يتم دعم تحويلات Albumentations المخصصة حالياً فقط من خلال Python API. لا يمكن تحديدها عبر CLI أو ملفات تكوين YAML.
  • يستبدل التحويلات الافتراضية: عند توفير تحويلات مخصصة عبر معامل augmentations، فإنها تحل محل تحويلات Albumentations الافتراضية تماماً. تظل تعزيزات YOLO الافتراضية (مثل mosaic و hsv_h و hsv_s و degrees وما إلى ذلك) نشطة ويتم تطبيقها بشكل مستقل.
  • توافق مربع الإحاطة (BBox): كن حذراً عند استخدام التحويلات المكانية (التحويلات التي تغير هندسة الصورة). يتعامل Ultralytics مع تعديلات مربع الإحاطة تلقائياً، ولكن قد تتطلب بعض التحويلات المعقدة تكويناً إضافياً.
  • مكتبة واسعة: تقدم Albumentations أكثر من 70+ تحويلاً مختلفاً. استكشف توثيق Albumentations لاكتشاف جميع الخيارات المتاحة.
  • اعتبارات الأداء: إضافة الكثير من التعزيزات أو استخدام تحويلات مكلفة حسابياً يمكن أن يبطئ التدريب. ابدأ بمجموعة صغيرة وراقب سرعة التدريب.

حالات الاستخدام الشائعة:

  • التصوير الطبي: تطبيق تحويلات متخصصة مثل التشوهات المرنة أو تشوهات الشبكة لتعزيز صور الأشعة السينية أو التصوير بالرنين المغناطيسي
  • التصوير الجوي/الأقمار الصناعية: استخدام تحويلات محسنة للمنظور العلوي
  • ظروف الإضاءة المنخفضة: تطبيق تعديلات الضوضاء والسطوع لمحاكاة ظروف الإضاءة الصعبة
  • الفحص الصناعي: إضافة أنماط تشبه العيوب أو تنويعات القوام لتطبيقات مراقبة الجودة

ملاحظات التوافق:

  • يتطلب Albumentations إصدار 1.0.3 أو أحدث
  • متوافق مع جميع مهام الكشف والتجزئة في YOLO
  • لا ينطبق على مهام التصنيف (يستخدم التصنيف خط تعزيز مختلف)

لمزيد من المعلومات حول Albumentations والتحويلات المتاحة، قم بزيارة توثيق Albumentations الرسمي.

Link to this sectionالأسئلة الشائعة#

Link to this sectionهناك الكثير من التعزيزات للاختيار من بينها. كيف أعرف أياً منها يجب استخدامه؟#

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

  • في معظم الحالات، تكون التغييرات الطفيفة في اللون والسطوع مفيدة. القيم الافتراضية لـ hsv_h و hsv_s و hsv_v هي نقطة بداية جيدة.
  • إذا كانت زاوية رؤية الكاميرا ثابتة ولن تتغير بمجرد نشر النموذج، فمن المحتمل أن تتمكن من تخطي التحويلات الهندسية مثل rotation أو translation أو scale أو shear أو perspective. ومع ذلك، إذا كانت زاوية الكاميرا قد تختلف وتحتاج إلى أن يكون النموذج أكثر متانة، فمن الأفضل الاحتفاظ بهذه التعزيزات.
  • Use the mosaic augmentation only if having partially occluded objects or multiple objects per image is acceptable and does not change the label value. Alternatively, you can keep mosaic active but increase the close_mosaic value to disable it earlier in the training process.

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

Link to this sectionعند بدء التدريب، أرى مرجعاً لـ albumentations: Blur[...]. هل يعني ذلك أن Ultralytics YOLO يقوم بتشغيل تعزيز إضافي مثل التمويه؟#

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

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

يمكنك أيضاً توفير تحويلات Albumentations مخصصة خاصة بك باستخدام Python API. راجع قسم ميزات التعزيز المتقدمة لمزيد من التفاصيل.

Link to this sectionعند بدء التدريب، لا أرى أي مرجع لـ albumentations. لماذا؟#

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

Link to this sectionكيف أقوم بتخصيص تعزيزاتي؟#

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

التعليقات