Link to this sectionتعزيز البيانات باستخدام Ultralytics YOLO#
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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Link to this sectionالقص (shear)#
- النطاق:
-180إلى+180 - الافتراضي:
0 - الاستخدام: يقدم تحويلاً هندسياً يقوم بإمالة الصورة على طول المحور السيني والمحور الصادي، مما يؤدي فعلياً إلى إزاحة أجزاء من الصورة في اتجاه واحد مع الحفاظ على الخطوط المتوازية. يحدد المعامل الفائق
shearزاوية القص، مع اختيار التعديل النهائي عشوائياً بين-shearوshear. على سبيل المثال، معshear=10.0، يتم اختيار القص عشوائياً ضمن نطاق-10إلى10على المحور السيني، ويتم اختيار قيمة عشوائية مستقلة أخرى ضمن نفس النطاق على المحور الصادي. - الغرض: يساعد النماذج على التعميم على التنويعات في زوايا العرض الناتجة عن الميل الطفيف أو وجهات النظر المائلة. على سبيل المثال، في مراقبة حركة المرور، قد تظهر كائنات مثل السيارات وإشارات المرور مائلة بسبب وضعيات الكاميرا غير العمودية. يضمن تطبيق تعزيز القص أن النموذج يتعلم التعرف على الكائنات على الرغم من هذه التشوهات المائلة.
- تطبيق Ultralytics: RandomPerspective
- ملاحظة:
- يمكن لقيم
shearأن تشوه الصورة بسرعة، لذا يوصى بالبدء بقيم صغيرة وزيادتها تدريجياً. - على عكس تحويلات المنظور، لا يقدم القص عمقاً أو نقاط تلاشي بل يشوه شكل الكائنات عن طريق تغيير زواياها مع الحفاظ على الجوانب المتقابلة متوازية.
- يمكن لقيم
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
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.0005 | 0.0 | 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.0ensuring that all images are flipped and a value offlipud=0.0disabling the transformation entirely. For example, withflipud=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 مفعل |
|---|---|
![]() | ![]() |
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 مفعل |
|---|---|
![]() | ![]() |
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 مفعل |
|---|---|---|
![]() | ![]() | ![]() |
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 مفعل |
|---|---|---|
![]() | ![]() | ![]() |
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ولكن الطريقة التي يتم بها نسخ الكائنات مختلفة. - اعتماداً على حجم الصورة، قد يتم أحياناً نسخ الكائنات جزئياً أو كلياً خارج الإطار.
- اعتماداً على جودة التعليقات التوضيحية للمضلعات، قد يكون للكائنات المنسوخة اختلافات طفيفة في الشكل مقارنة بالأصول.
- مبدأ IoA هو نفسه لكلا وضعي
| الصورة المرجعية | الصورة المختارة لـ copy_paste | copy_paste مفعل مع copy_paste_mode=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) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Link to this sectionميزات التعزيز المتقدمة#
Link to this sectionتحويلات Albumentations المخصصة (augmentations)#
- النوع:
listمن تحويلات Albumentations - الافتراضي:
None - الاستخدام: يسمح لك بتوفير تحويلات Albumentations مخصصة لتعزيز البيانات باستخدام Python API. يقبل هذا المعامل قائمة بكائنات تحويل Albumentations التي سيتم تطبيقها أثناء التدريب بدلاً من تحويلات Albumentations الافتراضية.
- الغرض: يوفر تحكماً دقيقاً في استراتيجيات تعزيز البيانات من خلال الاستفادة من المكتبة الواسعة لتحويلات Albumentations. هذا مفيد بشكل خاص عندما تحتاج إلى تعزيزات متخصصة تتجاوز خيارات YOLO المدمجة، مثل تعديلات الألوان المتقدمة، أو حقن الضوضاء، أو التحويلات الخاصة بنطاق معين.
- تنفيذ Ultralytics: 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
mosaicaugmentation only if having partially occluded objects or multiple objects per image is acceptable and does not change the label value. Alternatively, you can keepmosaicactive but increase theclose_mosaicvalue 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 أو تحويلات أخرى. راجع مثال التدريب المخصص في توثيق التصنيف للحصول على تفاصيل التنفيذ.
















































