زيادة البيانات هي تقنية حاسمة في رؤية الكمبيوتر تعمل على توسيع مجموعة بيانات التدريب الخاصة بك بشكل مصطنع عن طريق تطبيق تحويلات مختلفة على الصور الموجودة. عند تدريب نماذج التعلم العميق مثل Ultralytics YOLO، تساعد زيادة البيانات على تحسين قوة النموذج وتقليل التجاوز وتعزيز التعميم لسيناريوهات العالم الحقيقي.
لماذا تعتبر زيادة البيانات مهمة؟
يخدم تضخيم البيانات أغراضًا حاسمة متعددة في تدريب نماذج رؤية الكمبيوتر:
مجموعة بيانات موسعة: من خلال إنشاء اختلافات للصور الموجودة، يمكنك زيادة حجم مجموعة بيانات التدريب الخاصة بك بشكل فعال دون جمع بيانات جديدة.
تعميم محسّن: تتعلم النماذج التعرف على الكائنات في ظل ظروف مختلفة، مما يجعلها أكثر قوة في التطبيقات الواقعية.
تقليل التجاوز: عن طريق إدخال التباين في بيانات التدريب، تقل احتمالية قيام النماذج بحفظ خصائص صورة معينة.
أداء مُحسّن: تحقق النماذج المدربة بتقوية مناسبة دقة أفضل عادةً على مجموعات التحقق والاختبار.
يوفر تطبيق Ultralytics YOLO مجموعة شاملة من تقنيات الزيادة، تخدم كل منها أغراضًا محددة وتساهم في أداء النموذج بطرق مختلفة. سيستكشف هذا الدليل كل معلمة زيادة بالتفصيل، مما يساعدك على فهم متى وكيفية استخدامها بفعالية في مشاريعك.
أمثلة على التكوينات
يمكنك تخصيص كل معلمة باستخدام Python API أو واجهة سطر الأوامر (CLI) أو ملف التكوين. فيما يلي أمثلة لكيفية إعداد زيادة البيانات في كل طريقة.
أمثلة على التكوين
fromultralyticsimportYOLO# Load a modelmodel=YOLO("yolo11n.pt")# Training with custom augmentation parametersmodel.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
yolodetecttraindata=coco8.yamlmodel=yolo11n.ptepochs=100hsv_h=0.03hsv_s=0.6hsv_v=0.5
باستخدام ملف التكوين
يمكنك تحديد جميع معلمات التدريب، بما في ذلك الزيادات، في ملف تكوين YAML (على سبيل المثال، train_custom.yaml). The mode مطلوبة فقط عند استخدام CLI. سيؤدي ملف YAML الجديد هذا بعد ذلك إلى تجاوز الافتراضي الموجود في ultralytics .
# train_custom.yaml# 'mode' is required only for CLI usagemode:traindata:coco8.yamlmodel:yolo11n.ptepochs:100hsv_h:0.03hsv_s:0.6hsv_v:0.5
ثم ابدأ التدريب باستخدام Python API:
مثال على التدريب
fromultralyticsimportYOLO# Load a COCO-pretrained YOLO11n modelmodel=YOLO("yolo11n.pt")# Train the model with custom configurationmodel.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolodetecttrainmodel="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.
الغرض: مفيد بشكل خاص للسيناريوهات الخارجية حيث يمكن أن تؤثر ظروف الإضاءة بشكل كبير على مظهر الكائن. على سبيل المثال، قد يبدو الموز أكثر صفراء تحت أشعة الشمس الساطعة ولكنه يبدو أكثر خضرة في الداخل.
الاستخدام: يعدل شدة الألوان في الصورة. إن hsv_h تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا بين -hsv_s و hsv_s. على سبيل المثال، مع hsv_s=0.7، يتم تحديد الكثافة عشوائيًا ضمن-0.7 إلى 0.7.
الغرض: يساعد النماذج على التعامل مع الظروف الجوية المتغيرة وإعدادات الكاميرا المختلفة. على سبيل المثال، قد تبدو إشارة المرور الحمراء زاهية للغاية في يوم مشمس ولكنها تبدو باهتة وباهتة في الظروف الضبابية.
الاستخدام: يغير سطوع الصورة. الـ hsv_v تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا بين -hsv_v و hsv_v. على سبيل المثال، مع hsv_v=0.4، يتم تحديد الكثافة عشوائيًا ضمن-0.4 إلى 0.4.
الغرض: ضروري لتدريب النماذج التي تحتاج إلى الأداء في ظروف إضاءة مختلفة. على سبيل المثال، قد تبدو التفاحة الحمراء مشرقة في ضوء الشمس ولكنها أغمق بكثير في الظل.
الاستخدام: يدور الصور عشوائيًا ضمن النطاق المحدد. إن degrees تحدد المعلمة الفائقة زاوية الدوران، مع اختيار التعديل النهائي عشوائيًا بين -degrees و degrees. على سبيل المثال، مع degrees=10.0، يتم تحديد الدوران عشوائيًا ضمن-10.0 إلى 10.0.
الغرض: أمر بالغ الأهمية للتطبيقات التي يمكن أن تظهر فيها الكائنات في اتجاهات مختلفة. على سبيل المثال، في صور الطائرات بدون طيار الجوية، يمكن توجيه المركبات في أي اتجاه، مما يتطلب من النماذج التعرف على الكائنات بغض النظر عن دورانها.
الاستخدام: يزيح الصور أفقيًا وعموديًا بجزء عشوائي من حجم الصورة. إن translate تحدد المعلمة الفائقة مقدار الإزاحة، مع اختيار التعديل النهائي عشوائيًا مرتين (مرة لكل محور) ضمن النطاق -translate و translate. على سبيل المثال، مع translate=0.5، يتم تحديد الانتقال عشوائيًا ضمن-0.5 إلى 0.5 على المحور السيني، ويتم تحديد قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
الغرض: يساعد النماذج على تعلم اكتشاف الكائنات المرئية جزئيًا ويحسن المتانة لموقع الكائن. على سبيل المثال، في تطبيقات تقييم أضرار المركبات، قد تظهر أجزاء السيارة بشكل كامل أو جزئي في الإطار اعتمادًا على موضع المصور والمسافة، وسيعلم تحسين الترجمة النموذج على التعرف على هذه الميزات بغض النظر عن اكتمالها أو موضعها.
ملاحظة: للتبسيط، فإن الترجمات المطبقة أدناه هي نفسها في كل مرة لكل من x و y المحاور. القيم -1.0 و 1.0لا يتم عرضها لأنها ستخرج الصورة تمامًا من الإطار.
-0.5
-0.25
0.0
0.25
0.5
مقياس (scale)
النطاق: ≥0.0
افتراضي: 0.5
الاستخدام: يغير حجم الصور بمعامل عشوائي ضمن النطاق المحدد. إن scale تحدد المعلمة الفائقة عامل القياس، مع اختيار التعديل النهائي عشوائيًا بين 1-scale و 1+scale. على سبيل المثال، مع scale=0.5، يتم تحديد التحجيم عشوائيًا ضمن0.5 إلى 1.5.
الغرض: يمكّن النماذج من التعامل مع الكائنات على مسافات وأحجام مختلفة. على سبيل المثال، في تطبيقات القيادة الذاتية، يمكن أن تظهر المركبات على مسافات مختلفة من الكاميرا، مما يتطلب من النموذج التعرف عليها بغض النظر عن حجمها.
القيمة -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
القص (shear)
النطاق: -180 إلى +180
افتراضي: 0.0
الاستخدام: يقدم تحويلًا هندسيًا يميل الصورة على طول المحورين السيني والصادي، مما يؤدي فعليًا إلى إزاحة أجزاء من الصورة في اتجاه واحد مع الحفاظ على الخطوط المتوازية. إن shear تحدد المعلمة الفائقة زاوية القص، مع اختيار التعديل النهائي عشوائيًا بين -shear و shear. على سبيل المثال، مع shear=10.0، يتم تحديد القص عشوائيًا ضمن-10 إلى 10 على المحور السيني، ويتم تحديد قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
الغرض: يساعد النماذج على التعميم على الاختلافات في زوايا الرؤية الناتجة عن الإمالة الطفيفة أو وجهات النظر المائلة. على سبيل المثال، في مراقبة حركة المرور، قد تظهر الكائنات مثل السيارات وإشارات المرور مائلة بسبب مواضع الكاميرا غير المتعامدة. يضمن تطبيق زيادة القص أن يتعلم النموذج التعرف على الكائنات على الرغم من هذه التشوهات المنحرفة.
shear يمكن للقيم أن تشوه الصورة بسرعة، لذلك يوصى بالبدء بقيم صغيرة وزيادتها تدريجيًا.
على عكس تحويلات المنظور، لا يُدخل القص عمقًا أو نقاط تلاشي، ولكنه يشوه شكل الكائنات عن طريق تغيير زواياها مع الحفاظ على الجوانب المتقابلة متوازية.
-10
-5
0.0
5
10
المنظور (perspective)
النطاق: 0.0 - 0.001
افتراضي: 0.0
الاستخدام: يطبق تحويل منظور كامل على طول المحور السيني والمحور الصادي، مما يحاكي كيف تظهر الكائنات عند رؤيتها من أعماق أو زوايا مختلفة. الـ perspective تحدد المعلمة الفائقة مقدار المنظور، مع اختيار التعديل النهائي عشوائيًا بين -perspective و perspective. على سبيل المثال، مع perspective=0.001، يتم تحديد المنظور عشوائيًا ضمن-0.001 إلى 0.001 على المحور السيني، ويتم تحديد قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي.
الغرض: يعتبر تحسين المنظور أمرًا بالغ الأهمية للتعامل مع التغييرات الشديدة في وجهة النظر، خاصة في السيناريوهات التي تظهر فيها الكائنات مختصرة أو مشوهة بسبب تحولات المنظور. على سبيل المثال، في الكشف عن الكائنات القائمة على الطائرات بدون طيار، يمكن أن تظهر المباني والطرق والمركبات ممتدة أو مضغوطة اعتمادًا على إمالة الطائرة بدون طيار وارتفاعها. من خلال تطبيق تحويلات المنظور، تتعلم النماذج التعرف على الكائنات على الرغم من هذه التشوهات الناتجة عن المنظور، مما يحسن من قوتها في عمليات النشر في العالم الحقيقي.
الاستخدام: ينفذ انعكاسًا رأسيًا عن طريق قلب الصورة على طول المحور الصادي. هذا التحويل يعكس الصورة بأكملها رأسًا على عقب ولكنه يحافظ على جميع العلاقات المكانية بين الكائنات. تحدد المعلمة الفائقة flipud احتمالية تطبيق التحويل، بقيمة flipud=1.0 لضمان قلب جميع الصور وقيمة flipud=0.0 تعطيل التحويل بالكامل. على سبيل المثال، مع flipud=0.5، لكل صورة فرصة بنسبة 50٪ لقلبها رأسًا على عقب.
الغرض: مفيد للسيناريوهات التي يمكن أن تظهر فيها الكائنات رأسًا على عقب. على سبيل المثال، في أنظمة الرؤية الروبوتية، يمكن التقاط الكائنات الموجودة على أحزمة النقل أو الأذرع الروبوتية ووضعها في اتجاهات مختلفة. يساعد التقليب الرأسي النموذج على التعرف على الكائنات بغض النظر عن موضعها من الأعلى إلى الأسفل.
الاستخدام: ينفذ انعكاسًا أفقيًا عن طريق عكس الصورة على طول المحور السيني. هذا التحويل يبادل الجانبين الأيسر والأيمن مع الحفاظ على الاتساق المكاني، مما يساعد النموذج على التعميم على الكائنات التي تظهر في اتجاهات معكوسة. إن fliplr تحدد المعلمة الفائقة احتمالية تطبيق التحويل، بقيمة fliplr=1.0 لضمان قلب جميع الصور وقيمة fliplr=0.0 تعطيل التحويل بالكامل. على سبيل المثال، مع fliplr=0.5، لكل صورة فرصة بنسبة 50٪ لقلبها من اليسار إلى اليمين.
الغرض: يستخدم التقليب الأفقي على نطاق واسع في الكشف عن الكائنات وتقدير الوضع والتعرف على الوجوه لتحسين المتانة ضد الاختلافات من اليسار إلى اليمين. على سبيل المثال، في القيادة الذاتية، يمكن أن تظهر المركبات والمشاة على جانبي الطريق، ويساعد التقليب الأفقي النموذج على التعرف عليهم بالتساوي في كلا الاتجاهين.
الاستخدام: يبادل قنوات الألوان في الصورة من RGB إلى BGR، مما يغير ترتيب تمثيل الألوان. إن bgr تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع bgr=1.0 ضمان خضوع جميع الصور لتبديل القنوات و bgr=0.0 تعطيله. على سبيل المثال، مع bgr=0.5، لكل صورة فرصة بنسبة 50٪ للتحويل من RGB إلى BGR.
الغرض: يزيد من المتانة لترتيبات قنوات الألوان المختلفة. على سبيل المثال، عند تدريب النماذج التي يجب أن تعمل عبر أنظمة كاميرات ومكتبات تصوير مختلفة حيث قد يتم استخدام تنسيقات RGB و BGR بشكل غير متناسق، أو عند نشر النماذج في البيئات التي قد يختلف فيها تنسيق لون الإدخال عن بيانات التدريب.
الاستخدام: يجمع أربع صور تدريبية في صورة واحدة. الـ mosaic تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع mosaic=1.0 ضمان دمج جميع الصور و mosaic=0.0 تعطيل التحويل. على سبيل المثال، مع mosaic=0.5، لكل صورة فرصة بنسبة 50٪ للدمج مع ثلاث صور أخرى.
الغرض: فعال للغاية في تحسين اكتشاف الكائنات الصغيرة وفهم السياق. على سبيل المثال، في مشاريع الحفاظ على الحياة البرية حيث قد تظهر الحيوانات على مسافات ومقاييس مختلفة، يساعد تحسين الفسيفساء النموذج على تعلم التعرف على نفس الأنواع عبر أحجام مختلفة وانسدادات جزئية وسياقات بيئية عن طريق إنشاء عينات تدريب متنوعة بشكل مصطنع من بيانات محدودة.
حتى لو كان mosaic الزيادة تجعل النموذج أكثر قوة، ويمكن أن تجعل عملية التدريب أكثر صعوبة.
في mosaic يمكن تعطيل الزيادة بالقرب من نهاية التدريب عن طريق تعيين close_mosaic إلى عدد الحقب قبل الاكتمال عندما يجب إيقاف تشغيله. على سبيل المثال، إذا epochs تم تعيينه على 200 و close_mosaic تم تعيينه على 20، ستستمر دالة mosaic سيتم تعطيل الزيادة بعد 180 epochs. إذا 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٪ لخلطها مع صورة أخرى.
الغرض: يحسن قوة النموذج ويقلل من التجاوز. على سبيل المثال، في أنظمة التعرف على منتجات البيع بالتجزئة، يساعد المزج النموذج على تعلم ميزات أكثر قوة من خلال مزج صور لمنتجات مختلفة، وتعليمه تحديد العناصر حتى عندما تكون مرئية جزئيًا أو محجوبة بواسطة منتجات أخرى على رفوف المتاجر المزدحمة.
في mixup النسبة هي قيمة عشوائية تم اختيارها من np.random.beta(32.0, 32.0) توزيع بيتا، مما يعني أن كل صورة تساهم بنسبة 50% تقريبًا، مع اختلافات طفيفة.
الصورة الأولى، mixup إيقاف
الصورة الثانية، mixup إيقاف
mixup على
CutMix (cutmix)
النطاق: 0.0 - 1.0
افتراضي: 0.0
الاستخدام: يقطع منطقة مستطيلة من صورة واحدة ويلصقها على صورة أخرى باحتمالية معينة. الـ cutmix تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع cutmix=1.0 لضمان خضوع جميع الصور لهذا التحويل و cutmix=0.0 تعطيله تمامًا. على سبيل المثال، مع cutmix=0.5، لكل صورة فرصة بنسبة 50٪ لاستبدال منطقة منها برقعة من صورة أخرى.
الغرض: يعزز أداء النموذج عن طريق إنشاء سيناريوهات انسداد واقعية مع الحفاظ على سلامة الميزات المحلية. على سبيل المثال، في أنظمة القيادة الذاتية، يساعد cutmix النموذج على تعلم التعرف على المركبات أو المشاة حتى عندما يتم حجبهم جزئيًا بواسطة كائنات أخرى، مما يحسن دقة الاكتشاف في البيئات المعقدة في العالم الحقيقي مع الكائنات المتداخلة.
يتم تحديد حجم وموضع المنطقة المقطوعة عشوائيًا لكل تطبيق.
على عكس mixup الذي يمزج قيم البكسل عالميًا، cutmix يحافظ على شدة البكسل الأصلية داخل المناطق المقطوعة، مما يحافظ على الميزات المحلية.
يتم لصق منطقة في الصورة الهدف فقط إذا لم تتداخل مع أي صندوق محيط موجود. بالإضافة إلى ذلك، فقط الصناديق المحيطة التي تحتفظ على الأقل 0.1 (10٪) من مساحتها الأصلية داخل المنطقة الملصقة.
لا يمكن تغيير الحد الأدنى لمساحة المربع المحيط في التطبيق الحالي، وقد تم تعيينه على 0.1 بشكل افتراضي.
الصورة الأولى، cutmix إيقاف
الصورة الثانية، cutmix إيقاف
cutmix على
تحسينات خاصة بالتجزئة
نسخ-لصق (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٪ لنسخ كائنات من صورة أخرى.
الغرض: مفيد بشكل خاص لمهام تقسيم المثيلات وفئات الكائنات النادرة. على سبيل المثال، في الكشف عن العيوب الصناعية حيث تظهر أنواع معينة من العيوب بشكل غير متكرر، يمكن أن يؤدي تحسين النسخ واللصق إلى زيادة حدوث هذه العيوب النادرة بشكل مصطنع عن طريق نسخها من صورة إلى أخرى، مما يساعد النموذج على تعلم هذه الحالات الممثلة تمثيلاً ناقصًا بشكل أفضل دون الحاجة إلى عينات معيبة إضافية.
كما هو موضح في الصورة المتحركة أدناه، فإن 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' يسمح بنسخ الكائنات من صور مختلفة.
الغرض: يسمح بالمرونة في كيفية دمج الكائنات المنسوخة في الصور المستهدفة.
الاستخدام: يطبق سياسات زيادة تلقائية للتصنيف. الـ 'randaugment' يستخدم هذا الخيار RandAugment، 'autoaugment' يستخدم AutoAugment، و 'augmix' يستخدم AugMix. يتم التعيين إلى None تعطيل الزيادة التلقائية.
الغرض: يحسن استراتيجيات التحسين تلقائيًا لمهام التصنيف. الاختلافات هي كالتالي:
AutoAugment: يطبق هذا الوضع سياسات زيادة البيانات محددة مسبقًا تم تعلمها من مجموعات بيانات مثل ImageNet و CIFAR10 و SVHN. يمكن للمستخدمين تحديد هذه السياسات الحالية ولكن لا يمكنهم تدريب سياسات جديدة داخل Torchvision. لاكتشاف استراتيجيات زيادة البيانات المثلى لمجموعات بيانات معينة، ستكون المكتبات الخارجية أو التطبيقات المخصصة ضرورية. مرجع إلى ورقة AutoAugment.
RandAugment: يطبق تحديدًا عشوائيًا للتحويلات ذات الحجم الموحد. يقلل هذا النهج من الحاجة إلى مرحلة بحث مكثفة، مما يجعله أكثر كفاءة من الناحية الحسابية مع الاستمرار في تعزيز قوة النموذج. مرجع لـ ورقة RandAugment.
AugMix: AugMix هي طريقة لزيادة البيانات تعزز من قوة النموذج عن طريق إنشاء اختلافات متنوعة للصور من خلال تركيبات عشوائية لتحويلات بسيطة. ارجع إلى ورقة AugMix.
بشكل أساسي، الفرق الرئيسي بين الطرق الثلاث هو الطريقة التي يتم بها تحديد سياسات الزيادة وتطبيقها.
يمكنك الرجوع إلى هذه المقالة التي تقارن الطرق الثلاث بالتفصيل.
المسح العشوائي (erasing)
النطاق: 0.0 - 0.9
افتراضي: 0.4
الاستخدام: يمحو عشوائيًا أجزاء من الصورة أثناء تدريب التصنيف. إن erasing تحدد المعلمة الفائقة احتمالية تطبيق التحويل، مع erasing=0.9 لضمان مسح جميع الصور تقريبًا و erasing=0.0 تعطيل التحويل. على سبيل المثال، مع erasing=0.5، لكل صورة فرصة بنسبة 50٪ لمسح جزء منها.
الغرض: يساعد النماذج على تعلم ميزات قوية ويمنع الاعتماد المفرط على مناطق معينة في الصورة. على سبيل المثال، في أنظمة التعرف على الوجوه، يساعد المسح العشوائي النماذج على أن تصبح أكثر قوة في مواجهة الانسدادات الجزئية مثل النظارات الشمسية أو أقنعة الوجه أو الأشياء الأخرى التي قد تغطي ملامح الوجه جزئيًا. هذا يحسن الأداء في العالم الحقيقي من خلال إجبار النموذج على تحديد الأفراد باستخدام خصائص وجه متعددة بدلاً من الاعتماد فقط على الميزات المميزة التي قد تكون مخفية.
في erasing تأتي الزيادة مع scale, ratio، و value المعلمات الفائقة التي لا يمكن تغييرها باستخدام التنفيذ الحالي: قيمها الافتراضية هي (0.02, 0.33), (0.3, 3.3)، و 0، على التوالي، كما هو مذكور في PyTorch. الوثائق.
الحد الأعلى لـ erasing تم تعيين المعلمة الفائقة إلى 0.9 لتجنب تطبيق التحويل على جميع الصور.
erasing إيقاف
erasing تشغيل (مثال 1)
erasing تشغيل (مثال 2)
erasing تشغيل (مثال 3)
الأسئلة الشائعة
هناك الكثير من التحسينات للاختيار من بينها. كيف أعرف أي منها يجب استخدامه؟
يعتمد اختيار التحسينات الصحيحة على حالة الاستخدام ومجموعة البيانات المحددة الخاصة بك. فيما يلي بعض الإرشادات العامة لمساعدتك في اتخاذ القرار:
في معظم الحالات، تكون الاختلافات الطفيفة في اللون والسطوع مفيدة. القيم الافتراضية لـ 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 يومًا