ml.preprocessing --- المعالجة المسبقة للتعلم الآلي

تحتوي الوحدة ml.preprocessing على فئات للمعالجة المسبقة للصور لاستخدامها مع نماذج التعلم الآلي.

class Normalization -- تطبيع الصورة

يحوّل كائن Normalization كائنات image.Image إلى موترات إدخال ndarray لاستخدامها مع ml.Model.predict(). يُنشَأ تلقائيًا بواسطة كائن ml.Model عند تمرير صورة إلى ml.Model.predict()، لكن يمكن إنشاؤه يدويًا للتحكم في التحويل (المقياس، المتوسط/الانحراف المعياري، منطقة الاهتمام).

class ml.preprocessing.Normalization(scale: tuple[float, float] = (0.0, 1.0), mean: tuple[float, float, float] = (0.0, 0.0, 0.0), stdev: tuple[float, float, float] = (1.0, 1.0, 1.0), roi: tuple[int, int, int, int] = None)

ينشئ كائن Normalization.

scale هو نطاق القيم (min, max) الذي تتوقعه موترات الإدخال ذات الفاصلة العائمة بعد التطبيع (مثل (0.0, 1.0) أو (-1.0, 1.0)). يُتجاهَل لموترات الإدخال uint8 وint8.

mean هو المتوسط لكل قناة (R, G, B) الذي يُطرَح من الصورة بعد القياس. بالنسبة لموترات تدرج الرمادي يُختزَل المتوسط إلى قيمة لمعان (luma) واحدة باستخدام 0.299*R + 0.587*G + 0.114*B. يُتجاهَل لموترات الإدخال uint8 وint8.

stdev هو الانحراف المعياري لكل قناة (R, G, B) الذي تُقسَم عليه الصورة بعد طرح المتوسط. بالنسبة لموترات تدرج الرمادي يُختزَل الانحراف المعياري إلى قيمة لمعان (luma) واحدة باستخدام 0.299*R + 0.587*G + 0.114*B. يُتجاهَل لموترات الإدخال uint8 وint8.

roi هي منطقة اهتمام اختيارية (x, y, w, h) داخل صورة الإدخال لاقتصاصها. إذا كانت None، تُستخدم الصورة الكاملة. تُمركَز المنطقة المقتصَّة وتُقاس مقياسًا ثنائي الخطية (مع الحفاظ على نسبة العرض إلى الارتفاع بحشو أسود) إلى أبعاد موتر إدخال النموذج.

__call__(image: image.Image) Normalization
__call__(buffer: bytearray, shape: tuple[int, int, int, int], dtype: int) None

عند الاستدعاء بوسيط image.Image واحد، يُرجع كائن Normalization جديدًا مرتبطًا بتلك الصورة. الكائن المرتبط هو ما يستدعيه ml.Model.predict() داخليًا لملء موتر الإدخال. إذا لم تُضبَط roi على النسخة الأصلية، فإنها تُهيَّأ إلى حجم الصورة الكامل.

عند الاستدعاء بـ (buffer, shape, dtype)، يملأ buffer في مكانه بموتر الإدخال المُطبَّع للصورة المرتبطة سابقًا. يجب أن يكون shape بقيمة (1, H, W, C) مع C مساوية لـ 1 (تدرج الرمادي) أو 3 (RGB). dtype هو رمز نوع ulab numpy (مثل ord('f') لـ float32، ord('b') لـ int8، ord('B') لـ uint8). تطبق الموترات ذات الفاصلة العائمة scale وmean وstdev؛ بينما تُكتَب الموترات الصحيحة مباشرةً (مع إزاحة لـ int8).