Data Augmentation
يدرّب تعزيز البيانات النماذج على نسخ محوّلة عشوائيًا من الصور الموجودة، مثل الصور المعكوسة والمقتطعة وتغييرات الألوان، لتحسين قدرتها على التعميم.
يزيد تعزيز البيانات تنوع مجموعة بيانات التدريب من خلال تطبيق تحويلات عشوائية على الأمثلة التي تحتوي عليها المجموعة، مثل القلب والاقتصاص وإعادة التحجيم وتحولات الألوان ومزج الصور. تحتفظ كل نسخة محوّلة بوسمها الأصلي، لذا يتعلم النموذج أن الجسم يظل الجسم نفسه رغم تغيّر زاوية الرؤية والإضاءة والموضع. يستغرق جمع صور جديدة ووسمها وقتًا طويلًا ويكلف كثيرًا، ما يجعل تعزيز البيانات أرخص وسيلة لمكافحة فرط التكيّف، وتستخدمه في التدريب تقريبًا جميع نماذج الرؤية الحاسوبية الحديثة.
آلية عمل تعزيز البيانات#
تعزّز معظم مسارات التدريب البيانات آنيًا: إذ يحوّل محمّل البيانات كل صورة أثناء إنشاء دفعة، ويسحب معلمات عشوائية جديدة في كل مرة، بحيث يرى كل حقبة نسخة مختلفة من كل صورة. أما التعزيز غير الآني فيكتب عددًا ثابتًا من النسخ المحوّلة على القرص قبل التدريب، ما يضاعف مساحة التخزين ويتيح للنموذج عددًا أقل بكثير من التنويعات المميزة.
تحول قاعدتان دون إفساد زيادة البيانات. أولًا، يجب أن تتحرك التسميات مع البكسلات: في كشف الأجسام وتقسيم المثيلات وتقدير الوضعيات، يجب أن يحدّث التحويل الهندسي كل مربع إحاطة وقناع ونقطة مفتاحية، كما يجب أن يعكس القلب الأفقي أيضًا موضعي النقطتين المفتاحيتين اليمنى واليسرى. ثانيًا، يجب أن يكون التحويل مما يمكن أن يحدث في العالم الحقيقي: يناسب القلب الرأسي الصور الجوية والمجهرية، لكنه ينشئ في مشاهد الشوارع سيارات مقلوبة لا تظهر وقت الاستدلال. وتتعامل تحويلات Torchvision تلقائيًا مع القاعدة الأولى عند تمرير المربعات إلى جانب الصورة:
from urllib.request import urlopen
from PIL import Image
from torchvision import tv_tensors
from torchvision.transforms import v2
image = Image.open(urlopen("https://ultralytics.com/images/bus.jpg")) # 810 x 1080 pixels
boxes = tv_tensors.BoundingBoxes([[50, 400, 250, 900]], format="XYXY", canvas_size=(1080, 810))
# Flip every time (p=1.0) and shift colors; the box must move with the pixels
augment = v2.Compose([v2.RandomHorizontalFlip(p=1.0), v2.ColorJitter(brightness=0.4, saturation=0.7)])
new_image, new_boxes = augment(image, boxes)
print(f"Original box: {boxes.tolist()}")
print(f"Flipped box: {new_boxes.tolist()}")ينتقل الصندوق المحيط بالرجل على يسار الصورة من [50, 400, 250, 900] إلى [560, 400, 760, 900]، وينعكس عبر العرض البالغ 810 بكسلات، بينما يغيّر اضطراب الألوان البكسلات دون المساس بالصندوق.
التقنيات الشائعة#
- التحويلات الهندسية: تحاكي عمليات القلب والتدوير والتحجيم والإزاحة والقص والقص المائل والتشويه المنظوري مواضع الكاميرا وأحجام الأجسام المختلفة.
- التحويلات الضوئية: تحاكي التغييرات في السطوع والتباين والتشبّع وتدرج اللون، إلى جانب التمويه والضوضاء، اختلاف الإضاءة والمستشعرات وجودة الصور.
- الحجب: يمحو المحو العشوائي والاقتطاع مستطيلات، كيلا يعتمد النموذج على أي جزء منفرد من الجسم.
- مزج الصور: يمزج MixUp صورتين وتسميتيهما، ويلصق CutMix رقعة من صورة داخل أخرى، وتُرتّب الفسيفساء أربع صور في عينة تدريب واحدة، بينما ينقل النسخ واللصق أجسامًا مقسّمة إلى خلفيات جديدة.
- السياسات المؤتمتة: يطبّق RandAugment تسلسلًا عشوائيًا من التحويلات يتحكم فيه إعدادان فقط: عدد التحويلات وشدتها؛ ما يلغي عملية البحث المكلفة التي تطلبتها السياسات المتعلّمة السابقة.
مسارات تعزيز البيانات لاكتشاف الأجسام#
تربط مسارات الكشف عدة تحويلات متتابعة، يُطبّق كل منها باحتمال خاص به، بحيث تحصل كل صورة تدريب على تركيبة عشوائية مختلفة.
ينفّذ تدريب Ultralytics YOLO هذا المسار افتراضيًا، مع تطبيق الفسيفساء على كل صورة (mosaic=1.0)، واحتمال 50% للقلب الأفقي (fliplr=0.5)، وتحجيم يصل إلى ±50%، وتحولات ألوان HSV، كما يوقف الفسيفساء خلال آخر 10 حقب (close_mosaic=10) كي ينتهي تدريب النموذج على صور كاملة ذات مظهر طبيعي.
from ultralytics import YOLO
# حمّل نموذج YOLO26n مدرّبًا مسبقًا
model = YOLO("yolo26n.pt")
# fliplr: احتمال القلب الأفقي؛ scale: نطاق التكبير (+/- 70%)؛ degrees: نطاق التدوير (+/- 5)
results = model.train(data="coco8.yaml", epochs=10, fliplr=0.5, scale=0.7, degrees=5.0)أثناء هذا التشغيل، يحفظ مدرّب YOLO26 أول ثلاث دفعات معزّزة باسم train_batch0.jpg وtrain_batch1.jpg وtrain_batch2.jpg، مع رسم الصناديق، بحيث يمكن التحقق من أثر كل إعداد قبل بدء تشغيل طويل.
تعزيز البيانات والمصطلحات ذات الصلة#
- البيانات الاصطناعية: تُولّد من الصفر باستخدام محركات التصيير أو المحاكيات أو نماذج الانتشار. أما التعزيز فيعدّل صورًا حقيقية موجودة مسبقًا.
- المعالجة المسبقة للبيانات: خطوات حتمية مثل تغيير الحجم والتطبيع، تُطبّق بالطريقة نفسها على كل صورة أثناء التدريب والاستدلال. أما التعزيز فعشوائي ولا يُنفّذ إلا أثناء التدريب.
- التعزيز وقت الاختبار (TTA): ينفّذ الاستدلال على نسخ معززة عدة من المُدخل نفسه، مثل النسخ المقلوبة والمُعاد تحجيمها، ثم يدمج التنبؤات، مقابل زيادة الحسابات لتحقيق تحسن طفيف في الدقة.










