ml.utils --- أدوات تعلم الآلة¶
تحتوي وحدة ml.utils على فئات ودوال مساعدة لتعلم الآلة.
الدوال¶
- ml.utils.sigmoid(x: ndarray) ndarray¶
تُرجع السيغمويد (sigmoid) لجميع القيم في الـ
ndarrayالممرَّر.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
تطبّق عتبة على
scores(وهوndarrayمكمَّم من النوع int8 أو uint8 أو int16 أو uint16) باستخدامthresholdمكمَّم، وتُرجعndarrayبكل الفهارس التي تجتاز العتبة.يُختبر
scaleلتحديد ما إذا كانت القيم بعد إلغاء التكميم موجبة أم سالبة. عندما يكونscale > 0تُرجع الفهارس حيثscores > threshold؛ وإلا تُرجع الفهارس حيثscores < threshold.إذا كان
find_maxيساوي True، فإنه يستبدلscoresداخليًا بـndarrayيحتوي على القيمة العظمى (أو الصغرى، حسبscale) على امتدادfind_max_axis.find_max_axisهو المحور الذي يُحسب على امتداده اختزال القيمة العظمى/الصغرى عندما يكونfind_maxيساوي True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
يحوّل الـ
ndarrayالممرَّر بالقسمة على المقياس وإضافة نقطة الصفر الخاصة بالنموذج. يُرجعvalueدون تغيير عندما يكون نوع بيانات خرج النموذج عندindexمن نوع float.modelهو النموذج الذي تُستخدم معاملات تكميم خرجه.valueهو الـndarrayالمراد تكميمه.يحدد
indexأي خرج موتر (tensor) منmodelيُجرى التكميم بالنسبة إليه.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
يحوّل الـ
ndarrayالممرَّر بطرح نقطة الصفر ثم الضرب في مقياس النموذج. يُرجعvalueدون تغيير عندما يكون نوع بيانات خرج النموذج عندindexمن نوع float.modelهو النموذج الذي تُستخدم معاملات تكميم خرجه.valueهو الـndarrayالمراد إلغاء تكميمه.يحدد
indexأي خرج موتر (tensor) منmodelيُجرى إلغاء التكميم بالنسبة إليه.
- ml.utils.draw_predictions(image: image.Image, boxes: list[tuple[float, float, float, float]], labels: list[str], colors: list[tuple[int, int, int]], scores: list[float] | None = None, format: str = 'pascal_voc', font_width: int = 8, font_height: int = 10, text_color: tuple[int, int, int] = (255, 255, 255)) None¶
يرسم مربعات إحاطة (أو علامات نقطة المركز) مع تسميات نصية على
image.boxesهي قائمة من الصفوف (tuples) بالصيغة(x, y, w, h).labelsهي قائمة من سلاسل التسميات، واحدة لكل مربع.colorsهي قائمة من الصفوف بالصيغة(r, g, b)، واحد لكل مربع.scoresإذا لم تكنNone، فهي قائمة بدرجات الثقة لكل مربع. عند توفيرها تُلحق كل تسمية مرسومة بالدرجة منسَّقة على الصورة" %.2f".يتحكم
formatفي كيفية تفسير إحداثيات المربع:"pascal_voc"-- صيغة(xmin, ymin, xmax, ymax)مطبَّعة في المدى من0.0إلى1.0."point"-- بكسل مطلق بالصيغة(x, y, w, h)؛ تُرسم علامة دائرة ممتلئة عند مركز المربع بدلًا من مستطيل (مفيد لكاشفات نقطة المركز).أي قيمة أخرى -- بكسل مطلق بالصيغة
(x, y, w, h)؛ يُرسم كمستطيل.
font_widthهو عرض كل حرف في التسمية بالبكسل.font_heightهو ارتفاع خلفية التسمية بالبكسل.text_colorهو اللون بالصيغة(r, g, b)المستخدم لنص التسمية.
- ml.utils.draw_keypoints(image: image.Image, keypoints: ndarray, radius: int = 4, color: tuple[int, int, int] = (255, 0, 0), thickness: int = 1, fill: bool = False) None¶
يرسم
ndarrayمن قيم النقاط المفتاحية(x, y, ...)علىimage.radiusهو نصف قطر دائرة النقطة المفتاحية. عندما يكونradius == 0تُرسم النقاط المفتاحية كبكسلات مفردة.colorهو لون النقطة المفتاحية بالصيغة(r, g, b).thicknessهو سُمك حد الدائرة الخارجي.fillإذا كان True يملأ دوائر النقاط المفتاحية.
- ml.utils.draw_skeleton(image: image.Image, keypoints: ndarray, lines: list[tuple[int, int]], kp_radius: int = 4, kp_color: tuple[int, int, int] = (255, 0, 0), kp_thickness: int = 1, kp_fill: bool = False, line_color: tuple[int, int, int] = (0, 255, 0), line_thickness: int = 1) None¶
يرسم
ndarrayمن قيم النقاط المفتاحية(x, y, ...)علىimageثم يصلها بقطع مستقيمة.linesهي قائمة من الصفوف بالصيغة(kp0_idx, kp1_idx)تحدد أزواج النقاط المفتاحية المراد وصلها.kp_radiusهو نصف قطر دائرة النقطة المفتاحية (يُمرَّر إلىdraw_keypoints).kp_colorهو لون النقطة المفتاحية بالصيغة(r, g, b).kp_thicknessهو سُمك حد دائرة النقطة المفتاحية الخارجي.kp_fillإذا كان True يملأ دوائر النقاط المفتاحية.line_colorهو لون الخط بالصيغة(r, g, b).line_thicknessهو سُمك الخط.
class NMS -- كبت غير الأقصى الناعم (Soft-Non-Maximum Suppression)¶
يجمع الكائن NMS قائمة من مربعات الإحاطة مع الدرجات المرتبطة بها، ويصفّي المربعات المتداخلة ذات الدرجات الأدنى عبر Soft-NMS، ويعيد تعيين المربعات المكتشفة في نافذة فرعية إلى إحداثيات الصورة الأصلية.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
ينشئ كائن
NMS.window_wوwindow_hهما عرض وارتفاع موتر الدخل / النافذة الخاص بالنموذج.roiهي منطقة الاهتمام بالصيغة(x, y, w, h)من الصورة الأصلية التي شُغِّل النموذج عليها (تُرجع عادةً بواسطة الكائنNormalization()). تُستخدم لإعادة تعيين المربعات المكتشفة إلى فضاء إحداثيات الصورة الأصلية. يجب أن يكونroi[2]وroi[3]أكبر من أو يساوي 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
يضيف مربع إحاطة إلى الكائن
NMS. تُهمَل المربعات التي تقعscoreخاصتها خارج[0.0, 1.0]أو التي يكون عرضها أو ارتفاعها صفرًا أو سالبًا بعد القَص.xminوyminوxmaxوymaxهي إحداثيات مربع الإحاطة في فضاء بكسل النافذة، مقصوصة إلى[0, window_w]/[0, window_h].scoreهي درجة ثقة مربع الإحاطة (0.0-1.0).label_indexهو فهرس تسمية الفئة المرتبطة بمربع الإحاطة.keypointsهوndarrayاختياري من قيم النقاط المفتاحية(x, y, ...)المرتبطة بمربع الإحاطة هذا.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
يُجري Soft-NMS على جميع المربعات المضافة ويُرجع قائمة من القوائم لكل فئة، مفهرسة بـ
label_index. تحتوي كل قائمة داخلية على صفوف بالصيغة((x, y, w, h), score)معيَّنة إلى إحداثيات الصورة الأصلية. إذا تم توفيرkeypointsعند الإضافة، فإن الصف يُمدَّد بـndarrayالنقاط المفتاحيةkeypointsبعد إعادة تعيينها.بعد استدعاء هذه الدالة أنشئ كائن
NMSجديدًا لمعالجة مجموعة جديدة من مربعات الإحاطة.thresholdهي الحد الأدنى للدرجة التي يجب أن يحتفظ بها المربع بعد كبت Soft-NMS لكي يُبقى عليه.يتحكم
sigmaفي الدالة الغاوسية المستخدمة لمعاقبة درجات مربعات الإحاطة المتداخلة. تؤدي قيمةsigmaالأصغر إلى كبت أكثر حدة. تعطّل القيمةsigma <= 0.0العقوبة الغاوسية (لا تُخفَّض درجات المربعات المتداخلة).