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

يُجري تعزيز البيانات تحويلات على صور التدريب أثناء التشغيل، فيرى النموذج نسخة مختلفة قليلًا من كل صورة في كل حقبة. وعند تطبيقه جيدًا، يحسّن المتانة أمام تغيرات الإضاءة والمقياس والاتجاه، ويحدّ من فرط التكيّف، لأن النموذج لا يستطيع حفظ صور تتغير باستمرار. أما تطبيقه السيئ فيعلّم النموذج مشاهد مستحيلة واقعيًا، ويحجب أوجه النقص في مجموعة البيانات التي ينبغي معالجتها.
انظر إلى لوحة درجة اللون أعلاه: يتحول لون ببغاء المكاو الأحمر إلى الأصفر. وهذا غير ضار عند التمييز بين «المكاو» و«غير المكاو»، لكنه مضر إذا كان اللون هو ما يميّز بين فئتين لديك.
الإعدادات الافتراضية المهمة#
هذه هي الإعدادات الافتراضية في Ultralytics 8.4؛ ويسرد مرجع إعدادات التعزيز جميع الوسائط:
| الوسيط | افتراضي | وظيفته | متى تغيّره |
|---|---|---|---|
hsv_h | 0.015 | تغيير درجة اللون | اضبطه على 0 عندما يحدد اللون فئةً ما |
hsv_s / hsv_v | 0.7 / 0.4 | تغيير التشبّع والسطوع | خفّضه إذا كانت الإضاءة ثابتة ومضبوطة |
degrees | 0.0 | الدوران العشوائي (±درجة) | ارفعه عندما تظهر العناصر بزوايا مختلفة |
translate / scale | 0.1 / 0.5 | الإزاحة والتكبير | خفّضه إذا كان الاقتصاص قد يزيل أجزاء تحدد الفئة |
fliplr | 0.5 | احتمال القلب الأفقي | اضبطه على 0 عندما يكون اليمين واليسار مهمين، كما في النصوص |
flipud | 0.0 | احتمال القلب العمودي | ارفعه للمناظر العلوية أو الجوية أو المجهرية |
mosaic | 1.0 | يدمج أربع صور في صورة واحدة | نادرًا؛ راجع close_mosaic |
close_mosaic | 10 | يعطّل الفسيفساء خلال آخر N حقبة | خفّضه في عمليات التشغيل القصيرة جدًا |
mixup / cutmix | 0.0 / 0.0 | يمزج صورتين أو يلصق جزءًا من إحداهما على الأخرى | جرّبه على مجموعات البيانات الصغيرة بعد إنشاء خط الأساس |
copy_paste | 0.0 | يلصق أمثلة للعناصر بين الصور | مجموعات بيانات التجزئة والتجزئة الدلالية وOBB ذات الفئات النادرة |
تُعد مجموعات بيانات العمق استثناءً: إذ ستنتج mosaic وmixup وcutmix وcopy_paste خرائط عمق مزدوجة غير صالحة، لذا يضبطها محمّل بيانات العمق تلقائيًا على 0.
اختبار ملاءمة النشر#
يجب أن يجتاز كل تحويل مفعّل سؤالًا، ثم سؤالًا ثانيًا:
| التحويل | واقعي؟ | القرار |
|---|---|---|
| سطوع ±30% في كاميرا خارجية | نعم: اختلاف الوقت من اليوم | أبقِه |
| القلب الأفقي في كاميرا أمنية | نعم: يسير الأشخاص في كلا الاتجاهين | أبقِه |
| القلب العمودي في كاميرا مثبتة على الحائط | لا: يبقى السطح الأرضي في الأسفل | تعطيل |
| قلب عمودي لكاميرا ناقل تنظر إلى الأسفل | نعم: لا يوجد «أعلى» في الإطار | تفعيل |
| دوران بزاوية 90° لكاميرا طريق ثابتة | لا: الكاميرا لا تدور مطلقًا | تعطيل |
| تغيير درجة اللون عندما تكون الأجزاء الحمراء والخضراء من فئتين مختلفتين | لا: يدمّر الإشارة | تعطيل |

تُعد صورة ببغاء مكاو مقلوب صورة تدريب مناسبة لطائرة مسيّرة تنظر مباشرة إلى الأسفل، لكنها صورة مهدرة لكاميرا مثبتة على جدار. تنتج التحويلات التي لا تجتاز الاختبار إشارة تدريب سلبية: إذ يتعلم النموذج التعرّف على صور لن يراها مطلقًا، على حساب قدرته على التعامل مع الصور التي سيواجهها.
ملف إعدادات تطبيقي#
تفرز كاميرا علوية موضوعة فوق ناقل أجزاءً تختلف فئاتها باللون فقط. يجب إيقاف تغيير درجة اللون، في حين يصبح القلب العمودي والدورانات الصغيرة واقعية. يُشغَّل هذا كما هو موضح على مجموعة العرض COCO8؛ استبدل ملف YAML الخاص ببياناتك وعدد حقب التدريب الفعلي:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(
data="coco8.yaml",
epochs=1,
imgsz=320,
hsv_h=0.0, # اللون هو إشارة الفئة: حافظ على دقة درجات الألوان
flipud=0.5, # منظور علوي: لا يوجد «أعلى» في الإطار
degrees=10.0, # تظهر القطع بزوايا صغيرة مختلفة
)افتح train_batch0.jpg في مجلد التشغيل وتحقق من ثلاثة أمور: بقاء الصناديق محكمة بعد التحويل، وصمود السمات التي تحدد الفئة (اللون والشكل والنص)، وعدم ظهور أي شيء مستحيل ماديًا. خفّف أي تحويل يخلّ بأحد هذه الأمور. يتناول تدريب نموذجك الأول عملية التدريب نفسها.
Mosaic و close_mosaic#

يدمج Mosaic أربع صور في صورة واحدة، ويكون مفعّلًا افتراضيًا. وهو أقوى تعزيز من حيث الأثر في اكتشاف الأجسام: إذ تحتوي كل صورة تدريب على عدة مشاهد ومقاييس وسياقات للأجسام. لكن صور Mosaic لا تشبه إطارات النشر، لذا يوقف close_mosaic=10 تشغيله خلال آخر 10 حقب، وينهي النموذج تدريبه على مدخلات واقعية. كما يؤدي إيقاف Mosaic إلى إيقاف mixup وcutmix وcopy_paste، بينما يستمر تشغيل القلب وتحويلات HSV والتحويلات الهندسية.
في عمليات التشغيل التي لا تتجاوز close_mosaic حقبة، بما في ذلك إعداد الحقبة الواحدة أعلاه، تكون الفسيفساء متوقفة منذ الحقبة الأولى. قيّم الفسيفساء استنادًا إلى train_batch0.jpg من عملية تشغيل كاملة المدة، لا من اختبار سريع.
ما الذي لا يستطيع التعزيز إصلاحه#
التعزيز مضاعف لما هو موجود بالفعل. إذا لم تتضمن مجموعة البيانات صورًا ليلية، فلن ينتج أي إعداد مشاهد ليلية؛ بل سينتج نسخًا أكثر سطوعًا وأخرى أغمق من مشاهد النهار. إذا لم تنجح فئة إلا مع تعزيز مكثف، فهذا يعني أن عينات تلك الفئة غير كافية. ارجع إلى جمع بيانات عالية الجودة وممثلة.
عند تطبيق جميع عمليات زيادة البيانات بأقصى إعداداتها على مجموعة بيانات صغيرة، يتدرب النموذج على صور تبتعد أكثر فأكثر عن ظروف النشر، وغالبًا ما تنخفض قيمة mAP على التحقق. غيّر وسيطًا واحدًا في كل مرة، مع وجود سبب، وقارن بالخط الأساس الافتراضي على التقسيم نفسه.
إذا كانت الفئة معرّفة بجزء صغير من الكائن، مثل رمز الزاوية على ورقة اللعب، فقد تقتطع mosaic وtranslate وscale ذلك الجزء، فتنشئ صورة تدريب تبدو مطابقة تمامًا لفئة أخرى. خفّض تلك القيم لمجموعة البيانات هذه، وتأكد من نجاح الإصلاح في train_batch0.jpg.
عرض الحل
تمسح طائرة مسيّرة ميناءً من الأعلى مباشرة، وتكتشف السفن باستخدام صناديق موجّهة. من هذا المنظور، لا يوجد «أعلى»، وتتجه السفن في جميع الاتجاهات، ولا يحدد اللون الفئة:
| الوسيط | الخيار | التبرير |
|---|---|---|
flipud | 0.5 | يبدو المنظر العلوي كما هو عند قلبه رأسيًا |
degrees | 180 | تظهر السفن باتجاهات مختلفة |
hsv_h | افتراضي | تختلف ألوان هياكل السفن ولا تدل على الفئة |
mosaic | افتراضي | أجسام صغيرة كثيرة في كل صورة؛ يفيد Mosaic |
على مجموعة العرض الجوي DOTA8:
yolo obb train data=dota8.yaml model=yolo26n-obb.pt epochs=1 imgsz=320 flipud=0.5 degrees=180بالنسبة إلى كاميرا شارع ثابتة، لن يجتاز التغييران نفسيهما اختبار النشر: فالسيارات لا تظهر مقلوبة رأسًا على عقب في بث كاميرا مثبتة على جدار.