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

مقدمة
زيادة البيانات هي تقنية حاسمة في رؤية الكمبيوتر تعمل على توسيع مجموعة بيانات التدريب الخاصة بك بشكل مصطنع عن طريق تطبيق تحويلات مختلفة على الصور الموجودة. عند تدريب نماذج التعلم العميق مثل Ultralytics YOLO، تساعد زيادة البيانات على تحسين قوة النموذج وتقليل التجاوز وتعزيز التعميم لسيناريوهات العالم الحقيقي.
شاهد: كيفية استخدام Mosaic و MixUp والمزيد من تحسينات البيانات لمساعدة نماذج Ultralytics YOLO على التعميم بشكل أفضل 🚀
لماذا تعتبر زيادة البيانات مهمة؟
يخدم تضخيم البيانات أغراضًا حاسمة متعددة في تدريب نماذج رؤية الكمبيوتر:
- مجموعة بيانات موسعة: من خلال إنشاء اختلافات للصور الموجودة، يمكنك زيادة حجم مجموعة بيانات التدريب الخاصة بك بشكل فعال دون جمع بيانات جديدة.
- تعميم محسّن: تتعلم النماذج التعرف على الكائنات في ظل ظروف مختلفة، مما يجعلها أكثر قوة في التطبيقات الواقعية.
- تقليل التجاوز: عن طريق إدخال التباين في بيانات التدريب، تقل احتمالية قيام النماذج بحفظ خصائص صورة معينة.
- أداء مُحسّن: تحقق النماذج المدربة بتقوية مناسبة دقة أفضل عادةً على مجموعات التحقق والاختبار.
يوفر تطبيق Ultralytics YOLO مجموعة شاملة من تقنيات الزيادة، تخدم كل منها أغراضًا محددة وتساهم في أداء النموذج بطرق مختلفة. سيستكشف هذا الدليل كل معلمة زيادة بالتفصيل، مما يساعدك على فهم متى وكيفية استخدامها بفعالية في مشاريعك.
أمثلة على التكوينات
يمكنك تخصيص كل معلمة باستخدام Python API أو واجهة سطر الأوامر (CLI) أو ملف التكوين. فيما يلي أمثلة لكيفية إعداد زيادة البيانات في كل طريقة.
أمثلة على التكوين
import albumentations as A
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 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)
# 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). The 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 API:
مثال على التدريب
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_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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
تعديل السطوع (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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
التحويلات الهندسية
تدوير (degrees)
- النطاق:
0.0إلى180 - افتراضي:
0.0 - الاستخدام: يدور الصور عشوائيًا ضمن النطاق المحدد. إن
degreesتحدد المعلمة الفائقة زاوية الدوران، مع اختيار التعديل النهائي عشوائيًا بين-degreesوdegrees. على سبيل المثال، معdegrees=10.0، يتم تحديد الدوران عشوائيًا ضمن-10.0إلى10.0. - الغرض: أمر بالغ الأهمية للتطبيقات التي يمكن أن تظهر فيها الكائنات في اتجاهات مختلفة. على سبيل المثال، في صور الطائرات بدون طيار الجوية، يمكن توجيه المركبات في أي اتجاه، مما يتطلب من النماذج التعرف على الكائنات بغض النظر عن دورانها.
- تنفيذ Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
الترجمة (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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
مقياس (scale)
- النطاق: ≥
0.0 - افتراضي:
0.5 - الاستخدام: يغير حجم الصور بمعامل عشوائي ضمن النطاق المحدد. إن
scaleتحدد المعلمة الفائقة عامل القياس، مع اختيار التعديل النهائي عشوائيًا بين1-scaleو1+scale. على سبيل المثال، معscale=0.5، يتم تحديد التحجيم عشوائيًا ضمن0.5إلى1.5. - الغرض: يمكّن النماذج من التعامل مع الكائنات على مسافات وأحجام مختلفة. على سبيل المثال، في تطبيقات القيادة الذاتية، يمكن أن تظهر المركبات على مسافات مختلفة من الكاميرا، مما يتطلب من النموذج التعرف عليها بغض النظر عن حجمها.
- تنفيذ Ultralytics: RandomPerspective
- ملاحظة:
- القيمة
-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على المحور س، ويتم اختيار قيمة عشوائية مستقلة أخرى ضمن النطاق نفسه على المحور ص. - الغرض: يساعد النماذج على التعميم على الاختلافات في زوايا الرؤية الناتجة عن الإمالة الطفيفة أو وجهات النظر المائلة. على سبيل المثال، في مراقبة حركة المرور، قد تظهر الكائنات مثل السيارات وإشارات المرور مائلة بسبب مواضع الكاميرا غير المتعامدة. يضمن تطبيق زيادة القص أن يتعلم النموذج التعرف على الكائنات على الرغم من هذه التشوهات المنحرفة.
- تنفيذ Ultralytics: RandomPerspective
- ملاحظة:
shearيمكن للقيم أن تشوه الصورة بسرعة، لذلك يوصى بالبدء بقيم صغيرة وزيادتها تدريجيًا.- على عكس تحويلات المنظور، لا يُدخل القص عمقًا أو نقاط تلاشي، ولكنه يشوه شكل الكائنات عن طريق تغيير زواياها مع الحفاظ على الجوانب المتقابلة متوازية.
-10 | -5 | 0.0 | 5 | 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 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
اقلب للأعلى-للأسفل (flipud)
- النطاق:
0.0-1.0 - افتراضي:
0.0 - الاستخدام: ينفذ انعكاسًا رأسيًا عن طريق قلب الصورة على طول المحور الصادي. هذا التحويل يعكس الصورة بأكملها رأسًا على عقب ولكنه يحافظ على جميع العلاقات المكانية بين الكائنات. تحدد المعلمة الفائقة flipud احتمالية تطبيق التحويل، بقيمة
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 على |
|---|---|
![]() | ![]() |
تبديل قناة 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: Format
bgr إيقاف | bgr على |
|---|---|
![]() | ![]() |
فسيفساء (Mosaic) (mosaic)
- النطاق:
0.0-1.0 - افتراضي:
1.0 - الاستخدام: يجمع أربع صور تدريبية في صورة واحدة. الـ
mosaicتحدد المعلمة الفائقة احتمالية تطبيق التحويل، معmosaic=1.0ضمان دمج جميع الصور وmosaic=0.0تعطيل التحويل. على سبيل المثال، معmosaic=0.5، لكل صورة فرصة بنسبة 50٪ للدمج مع ثلاث صور أخرى. - الغرض: فعال للغاية في تحسين اكتشاف الكائنات الصغيرة وفهم السياق. على سبيل المثال، في مشاريع الحفاظ على الحياة البرية حيث قد تظهر الحيوانات على مسافات ومقاييس مختلفة، يساعد تحسين الفسيفساء النموذج على تعلم التعرف على نفس الأنواع عبر أحجام مختلفة وانسدادات جزئية وسياقات بيئية عن طريق إنشاء عينات تدريب متنوعة بشكل مصطنع من بيانات محدودة.
- تنفيذ Ultralytics: Mosaic
- ملاحظة:
- حتى لو كان
mosaicالزيادة تجعل النموذج أكثر قوة، ويمكن أن تجعل عملية التدريب أكثر صعوبة. - في
mosaicيمكن تعطيل الزيادة بالقرب من نهاية التدريب عن طريق تعيينclose_mosaicإلى عدد الحقب قبل الاكتمال عندما يجب إيقاف تشغيله. على سبيل المثال، إذاepochsتم تعيينه على200وclose_mosaicتم تعيينه على20، ستستمر دالةmosaicسيتم تعطيل الزيادة بعد180epochs. إذا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
- ملاحظة:
- في
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 النموذج على تعلم التعرف على المركبات أو المشاة حتى عندما يتم حجبهم جزئيًا بواسطة كائنات أخرى، مما يحسن دقة الاكتشاف في البيئات المعقدة في العالم الحقيقي مع الكائنات المتداخلة.
- تنفيذ Ultralytics: 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٪ لنسخ كائنات من صورة أخرى. - الغرض: مفيد بشكل خاص لمهام تقسيم المثيلات وفئات الكائنات النادرة. على سبيل المثال، في الكشف عن العيوب الصناعية حيث تظهر أنواع معينة من العيوب بشكل غير متكرر، يمكن أن يؤدي تحسين النسخ واللصق إلى زيادة حدوث هذه العيوب النادرة بشكل مصطنع عن طريق نسخها من صورة إلى أخرى، مما يساعد النموذج على تعلم هذه الحالات الممثلة تمثيلاً ناقصًا بشكل أفضل دون الحاجة إلى عينات معيبة إضافية.
- تنفيذ 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، ولكن طريقة نسخ الكائنات مختلفة. - اعتمادًا على حجم الصورة، قد يتم نسخ الكائنات جزئيًا أو كليًا خارج الإطار في بعض الأحيان.
- اعتمادًا على جودة شروح المضلعات، قد يكون للكائنات المنسوخة اختلافات طفيفة في الشكل مقارنة بالأصول.
- مبدأ IoA هو نفسه لكلا
| صورة مرجعية | الصورة المختارة لـ copy_paste | copy_paste متابعة مع copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
تحسينات خاصة بالتصنيف
زيادة تلقائية (auto_augment)
- خيارات:
'randaugment','autoaugment','augmix',None - افتراضي:
'randaugment' - الاستخدام: يطبق سياسات زيادة تلقائية للتصنيف. الـ
'randaugment'يستخدم هذا الخيار RandAugment،'autoaugment'يستخدم AutoAugment، و'augmix'يستخدم AugMix. يتم التعيين إلىNoneتعطيل الزيادة التلقائية. - الغرض: يحسن استراتيجيات التحسين تلقائيًا لمهام التصنيف. الاختلافات هي كالتالي:
- AutoAugment: يطبق هذا الوضع سياسات زيادة البيانات محددة مسبقًا تم تعلمها من مجموعات بيانات مثل ImageNet و CIFAR10 و SVHN. يمكن للمستخدمين تحديد هذه السياسات الحالية ولكن لا يمكنهم تدريب سياسات جديدة داخل Torchvision. لاكتشاف استراتيجيات زيادة البيانات المثلى لمجموعات بيانات معينة، ستكون المكتبات الخارجية أو التطبيقات المخصصة ضرورية. مرجع إلى ورقة AutoAugment.
- RandAugment: يطبق تحديدًا عشوائيًا للتحويلات ذات الحجم الموحد. يقلل هذا النهج من الحاجة إلى مرحلة بحث مكثفة، مما يجعله أكثر كفاءة من الناحية الحسابية مع الاستمرار في تعزيز قوة النموذج. مرجع لـ ورقة RandAugment.
- AugMix: AugMix هي طريقة لزيادة البيانات تعزز من قوة النموذج عن طريق إنشاء اختلافات متنوعة للصور من خلال تركيبات عشوائية لتحويلات بسيطة. ارجع إلى ورقة AugMix.
- تنفيذ Ultralytics: classify_augmentations()
- ملاحظة:
- بشكل أساسي، الفرق الرئيسي بين الطرق الثلاث هو الطريقة التي يتم بها تحديد سياسات الزيادة وتطبيقها.
- يمكنك الرجوع إلى هذه المقالة التي تقارن الطرق الثلاث بالتفصيل.
المسح العشوائي (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) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
ميزات التعزيز المتقدمة
التحويلات البنائية المخصصة (augmentations)
- النوع:
listمن التحويلات البنائية - افتراضي:
None - الاستخدام: يسمح لك بتوفير تحويلات Albumentations مخصصة لزيادة البيانات باستخدام واجهة برمجة تطبيقات Python . تقبل هذه المعلمة قائمة من كائنات تحويلات Albumentations التي سيتم تطبيقها أثناء التدريب بدلاً من تحويلات Albumentations الافتراضية.
- الغرض: يوفر تحكماً دقيقاً في استراتيجيات زيادة البيانات من خلال الاستفادة من مكتبة واسعة من تحويلات Albumentations. يكون هذا مفيدًا بشكل خاص عندما تحتاج إلى تعزيزات متخصصة تتجاوز خيارات YOLO المدمجة، مثل تعديلات الألوان المتقدمة أو حقن الضوضاء أو التحويلات الخاصة بالمجال.
- تنفيذUltralytics: البومنتات
أمثلة على البراءات المخصصة
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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,
)
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
A.OneOf(
[
A.MotionBlur(blur_limit=7, p=1.0),
A.MedianBlur(blur_limit=7, p=1.0),
A.GaussianBlur(blur_limit=7, p=1.0),
],
p=0.3,
),
A.OneOf(
[
A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
],
p=0.2,
),
A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
A.CoarseDropout(
max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
),
]
# Train with advanced custom transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=advanced_transforms,
imgsz=640,
)
النقاط الرئيسية:
- واجهة برمجة تطبيقاتPython فقط: تحويلات Albumentations المخصصة مدعومة حاليًا فقط من خلال واجهة برمجة تطبيقات Python فقط. لا يمكن تحديدها عبر CLI أو ملفات تكوين YAML.
- يستبدل التحويلات الافتراضية: عندما تقوم بتوفير تحويلات مخصصة عبر
augmentationsفهي تستبدل تحويلات البومنتات الافتراضية بالكامل. زيادات YOLO الافتراضية (مثلmosaic,hsv_h,hsv_s,degrees، إلخ) تظل نشطة ويتم تطبيقها بشكل مستقل. - توافق الصندوق المحيط: كن حذرًا عند استخدام التحويلات المكانية (التحويلات التي تغير هندسة الصورة). تتعامل Ultralytics مع تعديلات المربع المحدود تلقائيًا، ولكن قد تتطلب بعض التحويلات المعقدة تكوينًا إضافيًا.
- مكتبة واسعة النطاق: تقدم Albumentations أكثر من 70 تحويلًا مختلفًا. استكشف وثائق Albumentations لاكتشاف جميع الخيارات المتاحة.
- مراعاة الأداء: يمكن أن تؤدي إضافة الكثير من التعزيزات أو استخدام تحويلات مكلفة حسابيًا إلى إبطاء التدريب. ابدأ بمجموعة صغيرة وراقب سرعة التدريب.
حالات الاستخدام الشائعة:
- التصوير الطبي: تطبيق التحويلات المتخصصة مثل التشوهات المرنة أو تشوهات الشبكة لتكبير صور الأشعة السينية أو التصوير بالرنين المغناطيسي
- الصور الجوية/الأقمار الصناعية: استخدام التحويلات المحسنة للمنظورات العلوية
- ظروف الإضاءة المنخفضة: تطبيق تعديلات التشويش والسطوع لمحاكاة الإضاءة الصعبة
- الفحص الصناعي: إضافة أنماط شبيهة بالعيوب أو اختلافات الملمس لتطبيقات مراقبة الجودة
ملاحظات التوافق:
- يتطلب الإصدار 1.0.3 أو أعلى من Albumentations
- متوافق مع جميع مهام الكشف عن YOLO جزئته
- غير قابل للتطبيق على مهام التصنيف (يستخدم التصنيف خط أنابيب تعزيز مختلف)
للمزيد من المعلومات حول البومنتات والتحويلات المتاحة، قم بزيارة وثائق البومنتات الرسمية.
الأسئلة الشائعة
هناك الكثير من التحسينات للاختيار من بينها. كيف أعرف أي منها يجب استخدامه؟
يعتمد اختيار التحسينات الصحيحة على حالة الاستخدام ومجموعة البيانات المحددة الخاصة بك. فيما يلي بعض الإرشادات العامة لمساعدتك في اتخاذ القرار:
- في معظم الحالات، تكون الاختلافات الطفيفة في اللون والسطوع مفيدة. القيم الافتراضية لـ
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 المخصصة الخاصة بك باستخدام واجهة برمجة تطبيقات Python . راجع قسم ميزات التعزيز المتقدمة لمزيد من التفاصيل.
عند بدء التدريب، لا أرى أي إشارة إلى albumentations. لماذا؟
تحقق مما إذا كان albumentations مثبتة. إذا لم يكن الأمر كذلك، يمكنك تثبيته عن طريق التشغيل pip install albumentations. بمجرد التثبيت، يجب أن يتم الكشف عن الحزمة تلقائيًا واستخدامها بواسطة Ultralytics.
كيف يمكنني تخصيص عمليات الزيادة الخاصة بي؟
يمكنك تخصيص الزيادات عن طريق إنشاء فئة مجموعة بيانات ومدرب مخصصين. على سبيل المثال، يمكنك استبدال زيادات تصنيف Ultralytics الافتراضية بـ torchvision.transforms.Resize من PyTorch أو تحويلات أخرى. راجع مثال التدريب المخصص في وثائق التصنيف للحصول على تفاصيل التنفيذ.
















































