Ultralytics YOLO27: انضم إلى قائمة الانتظار.
Get Started
الدرسمبتدئ

استخدم التعزيز بحذر

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

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

النتيجة

اختر ملفًا تعريفيًا للتعزيز، وقدّم تبريرًا من سطر واحد لكل وسيط تغيّره يوضح ملاءمته للنشر، ودرّب النموذج به، ثم تحقّق منه في train_batch0.jpg.

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. ابدأ التدريب باستخدام إعدادات التعزيز الافتراضية وسجّل خط الأساس.

  2. عطّل التحويلات التي يستحيل على الكاميرا إنتاجها، مثل تغييرات درجة اللون عندما تحدد اللون فئةً ما.

  3. فعّل التحويلات التي يمكن للكاميرا إنتاجها، مثل flipud للمناظر العلوية.

  4. افتح train_batch0.jpg وتحقّق من بقاء مربعات الإحاطة محكمة ومن وضوح السمات المميّزة للفئات.

عملي

آلية عمل التعزيز#

تعزيزات لصورة واحدة لببغاء مكاو: قلب أفقي، واقتصاص، وتمويه وسيطي، وتباين، وتغيير درجات اللون والتشبّع والقيمة، وغاما

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

انظر إلى لوحة درجة اللون أعلاه: يتحول لون ببغاء المكاو الأحمر إلى الأصفر. وهذا غير ضار عند التمييز بين «المكاو» و«غير المكاو»، لكنه مضر إذا كان اللون هو ما يميّز بين فئتين لديك.

الإعدادات الافتراضية المهمة#

هذه هي الإعدادات الافتراضية في Ultralytics 8.4؛ ويسرد مرجع إعدادات التعزيز جميع الوسائط:

الوسيطافتراضيوظيفتهمتى تغيّره
hsv_h0.015تغيير درجة اللوناضبطه على 0 عندما يحدد اللون فئةً ما
hsv_s / hsv_v0.7 / 0.4تغيير التشبّع والسطوعخفّضه إذا كانت الإضاءة ثابتة ومضبوطة
degrees0.0الدوران العشوائي (±درجة)ارفعه عندما تظهر العناصر بزوايا مختلفة
translate / scale0.1 / 0.5الإزاحة والتكبيرخفّضه إذا كان الاقتصاص قد يزيل أجزاء تحدد الفئة
fliplr0.5احتمال القلب الأفقياضبطه على 0 عندما يكون اليمين واليسار مهمين، كما في النصوص
flipud0.0احتمال القلب العموديارفعه للمناظر العلوية أو الجوية أو المجهرية
mosaic1.0يدمج أربع صور في صورة واحدةنادرًا؛ راجع close_mosaic
close_mosaic10يعطّل الفسيفساء خلال آخر N حقبةخفّضه في عمليات التشغيل القصيرة جدًا
mixup / cutmix0.0 / 0.0يمزج صورتين أو يلصق جزءًا من إحداهما على الأخرىجرّبه على مجموعات البيانات الصغيرة بعد إنشاء خط الأساس
copy_paste0.0يلصق أمثلة للعناصر بين الصورمجموعات بيانات التجزئة والتجزئة الدلالية وOBB ذات الفئات النادرة

تُعد مجموعات بيانات العمق استثناءً: إذ ستنتج mosaic وmixup وcutmix وcopy_paste خرائط عمق مزدوجة غير صالحة، لذا يضبطها محمّل بيانات العمق تلقائيًا على 0.

اختبار ملاءمة النشر#

يجب أن يجتاز كل تحويل مفعّل سؤالًا، ثم سؤالًا ثانيًا:

التحويلواقعي؟القرار
سطوع ±30% في كاميرا خارجيةنعم: اختلاف الوقت من اليومأبقِه
القلب الأفقي في كاميرا أمنيةنعم: يسير الأشخاص في كلا الاتجاهينأبقِه
القلب العمودي في كاميرا مثبتة على الحائطلا: يبقى السطح الأرضي في الأسفلتعطيل
قلب عمودي لكاميرا ناقل تنظر إلى الأسفلنعم: لا يوجد «أعلى» في الإطارتفعيل
دوران بزاوية 90° لكاميرا طريق ثابتةلا: الكاميرا لا تدور مطلقًاتعطيل
تغيير درجة اللون عندما تكون الأجزاء الحمراء والخضراء من فئتين مختلفتينلا: يدمّر الإشارةتعطيل

تعزيز الدوران بمقدار 180 درجة: ببغاء مكاو مقلوب، وهو مشهد لا تنتجه كاميرا ثابتة ومعتدلة أبدًا

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

ملف إعدادات تطبيقي#

تفرز كاميرا علوية موضوعة فوق ناقل أجزاءً تختلف فئاتها باللون فقط. يجب إيقاف تغيير درجة اللون، في حين يصبح القلب العمودي والدورانات الصغيرة واقعية. يُشغَّل هذا كما هو موضح على مجموعة العرض 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 أربع صور في صورة واحدة، ويكون مفعّلًا افتراضيًا. وهو أقوى تعزيز من حيث الأثر في اكتشاف الأجسام: إذ تحتوي كل صورة تدريب على عدة مشاهد ومقاييس وسياقات للأجسام. لكن صور Mosaic لا تشبه إطارات النشر، لذا يوقف close_mosaic=10 تشغيله خلال آخر 10 حقب، وينهي النموذج تدريبه على مدخلات واقعية. كما يؤدي إيقاف Mosaic إلى إيقاف mixup وcutmix وcopy_paste، بينما يستمر تشغيل القلب وتحويلات HSV والتحويلات الهندسية.

عمليات التشغيل القصيرة لا تستخدم الفسيفساء مطلقًا

في عمليات التشغيل التي لا تتجاوز close_mosaic حقبة، بما في ذلك إعداد الحقبة الواحدة أعلاه، تكون الفسيفساء متوقفة منذ الحقبة الأولى. قيّم الفسيفساء استنادًا إلى train_batch0.jpg من عملية تشغيل كاملة المدة، لا من اختبار سريع.

ما الذي لا يستطيع التعزيز إصلاحه#

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

رفع جميع عناصر الضبط إلى أقصى حد يخفي المشكلة الحقيقية

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

عندما تمحو عمليات الاقتصاص الفئة

إذا كانت الفئة معرّفة بجزء صغير من الكائن، مثل رمز الزاوية على ورقة اللعب، فقد تقتطع mosaic وtranslate وscale ذلك الجزء، فتنشئ صورة تدريب تبدو مطابقة تمامًا لفئة أخرى. خفّض تلك القيم لمجموعة البيانات هذه، وتأكد من نجاح الإصلاح في train_batch0.jpg.

جرّبه

ضع علامة «إبقاء» أو «تغيير» أو «تعطيل» أمام كل وسيطة في جدول القيم الافتراضية وفقًا لعملية النشر لديك، مع سطر واحد يبرر كل تغيير. درّب مرة باستخدام القيم الافتراضية ومرة باستخدام ملف الإعدادات الخاص بك على التقسيم نفسه، وسجّل قيمة val mAP50-95 لكل منهما. المطلوب: الجدول المشروح، والنتيجتان، وtrain_batch0.jpg من التشغيل المخصص.

متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • لكل وسيطة تم تغييرها مبرر من سطر واحد يتعلق بالنشر.

  • تُقارن ملفات الإعدادات الافتراضية والمخصصة باستخدام تقسيم val نفسه.

  • يُظهر train_batch0.jpg من التشغيل المخصص صناديق محكمة وسمات فئة سليمة.

عرض الحل

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

الوسيطالخيارالتبرير
flipud0.5يبدو المنظر العلوي كما هو عند قلبه رأسيًا
degrees180تظهر السفن باتجاهات مختلفة
hsv_hافتراضيتختلف ألوان هياكل السفن ولا تدل على الفئة
mosaicافتراضيأجسام صغيرة كثيرة في كل صورة؛ يفيد Mosaic

على مجموعة العرض الجوي DOTA8:

yolo obb train data=dota8.yaml model=yolo26n-obb.pt epochs=1 imgsz=320 flipud=0.5 degrees=180

بالنسبة إلى كاميرا شارع ثابتة، لن يجتاز التغييران نفسيهما اختبار النشر: فالسيارات لا تظهر مقلوبة رأسًا على عقب في بث كاميرا مثبتة على جدار.

ما الخطوة التالية

أصبحت مجموعة البيانات وتقسيماتها وتعزيزاتها جاهزة؛ والدرس التالي يحدد بموضوعية ما إذا كانت مجموعة البيانات جاهزة للتدريب.

سجّل الدخول لحفظ التقدم