تقنيات المعالجة المسبقة لبيانات الرؤية الحاسوبية المشروحة#
تحوّل المعالجة المسبقة للبيانات الصور الخام المشروحة إلى مدخلات نظيفة ومتسقة يحتاج إليها نموذج الرؤية الحاسوبية للتدريب بكفاءة. باستخدام Ultralytics YOLO26، تُنفَّذ عمليات البكسل الأساسية — تحويل RGB، والتحجيم إلى [0, 1]، وتغيير الحجم — تلقائيًا داخل مسار التدريب، لذلك يقتصر العمل المتبقي على تقسيم مجموعة البيانات بشكل صحيح، وموازنة الفئات، واختيار عمليات زيادة البيانات. يغطي هذا الدليل هذه التقنيات الأساسية: تغيير الحجم، والتطبيع، وتقسيم مجموعة البيانات، وزيادة البيانات، وتحليل البيانات الاستكشافي (EDA).
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
تأتي هذه الخطوة بعد تحديد أهداف مشروعك وجمع بياناتك وشرحها، وتقع في مرحلة مبكرة من سير عمل مشروع الرؤية الحاسوبية.
لماذا تُعدّ المعالجة المسبقة مهمة؟#
تُهيّئ المعالجة المسبقة بياناتك في صيغة تقلل الحمل الحاسوبي وتحسّن أداء النموذج. وهي تعالج ثلاث مشكلات شائعة في البيانات الخام:
- الضوضاء: اختلافات غير ذات صلة أو عشوائية في البيانات.
- عدم الاتساق: اختلافات في أحجام الصور وتنسيقاتها وجودتها.
- عدم التوازن: توزيع غير متساوٍ للفئات أو التصنيفات عبر مجموعة البيانات.
تقنيات المعالجة المسبقة#
التقنيات الرئيسية هي تغيير الحجم، والتطبيع، وتقسيم مجموعة البيانات، وزيادة البيانات. باستخدام YOLO26، تُنفَّذ التقنيتان الأوليان تلقائيًا، بينما يكون لاختياراتك التأثير الأكبر في التقسيم وزيادة البيانات.
تغيير حجم الصور#
تتطلب نماذج كثيرة حجم إدخال متسقًا، لذا يجعل تغيير الحجم الصور موحّدة ويقلل التعقيد الحاسوبي. طريقتا الاستيفاء الشائعتان هما:
- الاستيفاء ثنائي الخطية: ينعّم قيم البكسلات من خلال حساب متوسط موزون لأقرب أربعة بكسلات.
- أقرب جار: ينسخ قيمة أقرب بكسل من دون حساب متوسط — وهو أسرع، لكنه ينتج صورة أكثر تكتلًا.
توفر مكتبات مثل OpenCV وPIL (Pillow) هذه الوظائف، لكنك لا تحتاج عادةً إلى تغيير الحجم يدويًا مع YOLO26. وتتولى وسيطة imgsz ذلك. في المسار المربع ذي الحجم الثابت، تعمل التحققات والاستدلالات على تطبيق letterbox للصور باتجاه إدخال imgsz × imgsz مثل 640 × 640، مع الحفاظ على نسبة العرض إلى الارتفاع وإضافة حشو رمادي (القيمة 114). تُصغَّر الصور الأكبر لتناسب الحجم، بينما لا تُكبَّر الصور الأصغر عند تعطيل التكبير. في مسار التدريب الافتراضي، تعمل mosaic=1.0 بدلًا من ذلك على تبليط أربع صور على لوحة أكبر ثم قصها إلى imgsz؛ وبعد أن تعطل close_mosaic الفسيفساء في العصور التدريبية النهائية، تُطبَّق عملية letterbox على الصور ثم تُحوَّل عشوائيًا أيضًا بدل تمريرها من دون تغيير. تستخدم الدُفعات المستطيلة (rect=True) وmulti_scale أشكال إدخال مختلفة.
تطبيع قيم البكسلات#
يعمل التطبيع على تحجيم قيم البكسلات إلى نطاق قياسي، مما يساعد النموذج على التقارب بسرعة أكبر أثناء التدريب. الطريقتان الشائعتان هما:
- تحجيم Min-Max: يحجّم قيم البكسلات إلى نطاق من 0 إلى 1.
- تطبيع Z-Score: يحجّم قيم البكسلات استنادًا إلى متوسطها وانحرافها المعياري.
يتولى YOLO26 التطبيع تلقائيًا بوصفه جزءًا من مسار المعالجة المسبقة: إذ يحوّل الصور إلى RGB ويحجّم قيم البكسلات إلى النطاق [0, 1] من خلال القسمة على 255 (تحجيم min-max). ولا يطبّق YOLO تطبيع المتوسط والانحراف المعياري على نمط ImageNet (z-score) بشكل افتراضي، لذلك لا حاجة إلى خطوة تطبيع يدوية.
تقسيم مجموعة البيانات#
يتيح تقسيم البيانات إلى مجموعات تدريب وتحقق واختبار تقييم النموذج على بيانات لم يرها من قبل وقياس قدرته على التعميم. ومن التقسيمات الشائعة تخصيص 70% للتدريب، و20% للتحقق، و10% للاختبار. وتجعل أدوات مثل scikit-learn أو TensorFlow هذه العملية مباشرة.
ضع النقاط التالية في الاعتبار عند التقسيم:
- الحفاظ على توزيع الفئات: تأكد من تمثيل كل فئة بنسب متناسبة في مجموعات التدريب والتحقق والاختبار.
- موازنة الفئات: في مجموعات البيانات غير المتوازنة، فكّر في الإفراط في أخذ عينات من الفئة الأقل تمثيلًا أو تقليل أخذ العينات من الفئة الأكثر تمثيلًا — وذلك ضمن مجموعة التدريب فقط.
قسّم مجموعة البيانات قبل تطبيق أي زيادة للبيانات أو أي معالجة مسبقة أخرى، وطبّق تلك التحويلات على مجموعة التدريب فقط. فزيادة البيانات قبل التقسيم تتيح لمعلومات من صور التحقق أو الاختبار التأثير في التدريب، مما ينتج درجات مرتفعة مضللة تنهار عند التعامل مع بيانات العالم الحقيقي.
زيادة مجموعة البيانات#
تعمل زيادة البيانات على زيادة حجم مجموعة البيانات اصطناعيًا من خلال إنشاء نسخ معدّلة من الصور الموجودة. وهي تساعد على تقليل فرط التكيّف وتحسين التعميم، مع فوائد متعددة:
- نماذج أكثر متانة: تجعل الاختلافات في الإضاءة والاتجاه والمقياس النموذج أكثر قدرة على مقاومة التشوهات الواقعية.
- فعّالة من حيث التكلفة: توسّع مجموعة التدريب من دون جمع بيانات جديدة ووسمها.
- استخدام أفضل للبيانات: تنتج كل صورة مشروحة عدة تنويعات تدريبية.
مع YOLO26، تُضبط شدة زيادة البيانات من خلال وسائط التدريب المُمرَّرة إلى model.train() أو إلى علامات CLI المكافئة، وليس عبر تحرير YAML الخاص بمجموعة البيانات، الذي يعرّف البيانات الوصفية للمجموعة مثل المسارات وأسماء الفئات والتقسيمات. والاستثناء الوحيد هو flip_idx: إذ تعلن مجموعات بيانات الوضعية عنه في YAML الخاص بمجموعة البيانات لربط أزواج النقاط المفتاحية اليسرى واليمنى، ويعطل YOLO كليًا fliplr وflipud عند غيابه. وتشمل عمليات زيادة البيانات المضمّنة ما يلي:
- Mosaic وMixUp وCutMix (
mosaic،mixup،cutmix): تجمع عدة صور في عينة تدريب واحدة. - القلب (
fliplr،flipud): يعكس الصور أفقيًا أو رأسيًا. - التحويلات الهندسية (
degrees،translate،scale،shear،perspective): تدير الصور وتحركها وتكبّرها وتشوهها. - التغيير العشوائي لألوان HSV (
hsv_h،hsv_s،hsv_v): يغيّر درجة اللون والتشبّع والسطوع. - النسخ واللصق (
copy_paste): يلصق نسخًا إضافية من الكائنات المجزأة، ويعكسها داخل الصورة نفسها افتراضيًا أو يأخذها من صورة أخرى باستخدامcopy_paste_mode=mixup. - تبديل القنوات (
bgr): يبدّل ترتيب قنوات RGB إلى BGR. - تحويلات التصنيف (
auto_augment،erasing): تطبّق سياسة زيادة بيانات آلية والمحو العشوائي عند تدريب مصنّف.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)للاطلاع على القائمة الكاملة لوسائط زيادة البيانات وقيمها الافتراضية، راجع مرجع إعدادات زيادة البيانات ودليل YOLO المخصص لزيادة البيانات. وإذا كانت حزمة albumentations مثبّتة، يفعّل YOLO أيضًا عمليات زيادة البيانات المضمّنة المستندة إلى Albumentations تلقائيًا.
دراسة حالة: المعالجة المسبقة لاكتشاف المركبات#
لنفترض مشروعًا لاكتشاف المركبات وتصنيفها في صور حركة المرور باستخدام YOLO26، بدءًا من صور مشروحة بـمربعات إحاطة وتسميات. إليك شكل كل قرار من قرارات المعالجة المسبقة:
- تغيير الحجم: لا حاجة إلى عمل يدوي — يغيّر YOLO26 الحجم إلى
imgszأثناء التدريب. - التطبيع: لا حاجة إلى عمل يدوي — يحجّم YOLO26 قيم البكسلات إلى
[0, 1]تلقائيًا. - التقسيم: قسّم مجموعة البيانات إلى 70% للتدريب، و20% للتحقق، و10% للاختبار، مع الحفاظ على اتساق توزيع الفئات بين التقسيمات.
- زيادة البيانات: اضبط وسائط التدريب بما يناسب مشاهد حركة المرور — مثل
fliplrلتحقيق عدم التأثر بالاتجاه، وhsv_vلإضاءة النهار والليل، وmosaicلتنوّع كثافة الكائنات.
بعد اتخاذ هذه القرارات، تصبح مجموعة البيانات جاهزة لتحليل البيانات الاستكشافي (EDA).
تحليل البيانات الاستكشافي (EDA)#
يستخدم تحليل البيانات الاستكشافي (EDA) الإحصاءات والتصورات المرئية لكشف الأنماط والتوزيعات في بياناتك، مما يساعدك على اكتشاف مشكلات مثل عدم توازن الفئات أو القيم الشاذة قبل التدريب.
تقنيات تحليل البيانات الاستكشافي الإحصائية#
يبدأ تحليل البيانات الاستكشافي الإحصائي بمقاييس أساسية — المتوسط والوسيط والانحراف المعياري والمدى — تُحسب على خصائص مثل توزيعات شدة البكسلات. وتقدم هذه المقاييس نظرة سريعة على جودة مجموعة البيانات وتكشف المخالفات مبكرًا.
تقنيات تحليل البيانات الاستكشافي المرئية#
تكشف التصورات المرئية أنماطًا لا تُظهرها الإحصاءات الموجزة، مثل عدم توازن الفئات والقيم الشاذة. وتشمل الأدوات الشائعة ما يلي:
- المدرجات التكرارية والمخططات الصندوقية: تعرض توزيع قيم البكسلات وتحدد القيم الشاذة في توزيعات الشدة أو الخصائص.
- المخططات الشريطية: تكشف عدم توازن الفئات من خلال مقارنة عدد الأمثلة التي تملكها كل فئة.
- المخططات المبعثرة: تستكشف العلاقات بين خصائص الصور أو الشروحات.
- الخرائط الحرارية: تصوّر توزيعات شدة البكسلات أو التوزيع المكاني للشروحات عبر الصور.
منصة Ultralytics لتحليل البيانات الاستكشافي#
للحصول على نهج لتحليل البيانات الاستكشافي من دون كتابة تعليمات برمجية، ارفع مجموعة بياناتك إلى منصة Ultralytics. تنشئ علامة التبويب Charts الخاصة بمجموعة البيانات تلقائيًا تصورات رئيسية لتحليل البيانات الاستكشافي: توزيع التقسيمات، وعدد الفئات الأعلى، ومدرجات تكرارية لعرض الصور وارتفاعها، وخرائط حرارية ثنائية الأبعاد لمواضع الشروحات وأبعاد الصور. وتتيح لك علامة التبويب Images استعراض بياناتك في عروض شبكية أو مضغوطة أو جدولية مع تراكبات الشروحات، مما يسهل اكتشاف الأمثلة ذات التسميات الخاطئة أو الفئات غير المتوازنة من دون كتابة أي تعليمات برمجية.
الخلاصة#
يقلل تقسيم البيانات وتطبيعها وزيادتها بصورة صحيحة الضوضاء ويحسن التعميم، محولًا مجموعة خامًا من الصور إلى مجموعة تدريب موثوقة. بعد معالجة مجموعة بياناتك مسبقًا، تتمثل الخطوة التالية في تدريب نموذجك. وإذا ظهرت أسئلة أثناء ذلك، فاطرحها على المجتمع في مستودع Ultralytics على GitHub أو خادم Ultralytics على Discord.
الأسئلة الشائعة#
تضمن المعالجة المسبقة أن تكون بياناتك نظيفة ومتسقة وفي صيغة محسّنة للتدريب. ومن خلال معالجة الضوضاء وعدم الاتساق وعدم توازن الفئات في البيانات الخام، تقلل خطوات مثل تغيير الحجم والتطبيع وزيادة البيانات وتقسيم مجموعة البيانات الحمل الحاسوبي وتحسّن أداء النموذج. راجع خطوات مشروع الرؤية الحاسوبية لمعرفة موضعها ضمن سير العمل الأوسع.
اضبط زيادة البيانات من خلال وسائط التدريب بدلًا من YAML الخاص بمجموعة البيانات. مرّر وسائط مثل
fliplrوmosaicوhsv_hوdegreesإلىmodel.train()(أو علامات CLI المكافئة) لتحديد احتمال كل تحويل وشدته. وتُعرَّف هذه الوسائط في إعدادات زيادة البيانات ويُشرح استخدامها في دليل YOLO لزيادة البيانات. وتُعد مجموعات بيانات الوضعية استثناءً: إذ يوجد تعيين النقاط المفتاحيةflip_idxالخاص بها في YAML لمجموعة البيانات، وتُعطَّل عمليات القلب عند غيابه.التقنيتان الأكثر شيوعًا هما تحجيم min-max (إعادة تحجيم البكسلات إلى نطاق من 0 إلى 1) وتطبيع z-score (إعادة التحجيم استنادًا إلى المتوسط والانحراف المعياري). يطبّق YOLO26 تحجيم min-max تلقائيًا — إذ يحوّل الصور إلى RGB ويقسم قيم البكسلات على 255 — لذلك لا تحتاج إلى خطوة تطبيع يدوية. ولا يطبّق تطبيع z-score افتراضيًا.
من الممارسات الشائعة تخصيص 70% للتدريب، و20% للتحقق، و10% للاختبار. حافظ على توزيع الفئات عبر التقسيمات الثلاثة، وتجنب تسرّب البيانات بتطبيق زيادة البيانات على مجموعة التدريب فقط بعد التقسيم. وتتولى أدوات مثل scikit-learn أو TensorFlow تنفيذ التقسيم بكفاءة. راجع دليل جمع البيانات وشرحها لمعرفة إعداد مجموعة البيانات في المراحل السابقة.
نعم. تتحكم وسيطة
imgszفي حجم الإدخال المستهدف من دون عمل يدوي. في المسار المربع ذي الحجم الثابت، تطبّق عمليتا التحقق والاستدلال letterbox على الصور باتجاه الشكل المحدد مع الحفاظ على نسبة العرض إلى الارتفاع؛ وتُصغَّر الصور الأكبر لتناسب الحجم، بينما لا تُكبَّر الصور الأصغر عند تعطيل التكبير. وأثناء التدريب، تحقق زيادة البيانات الفسيفسائية الافتراضية الحجم المستهدف من خلال تبليط أربع صور وقصها بدلًا من ذلك. وتستخدم الدُفعات المستطيلة (rect=True) وmulti_scaleأشكال إدخال مختلفة. راجع وثائق تدريب النموذج لمزيد من التفاصيل.