ml.utils — ML Yardımcıları

ml.utils modülü, makine öğrenmesi için yardımcı sınıflar ve fonksiyonlar içerir.

Fonksiyonlar

ml.utils.logit(x: ndarray) ndarray

Verilen ndarray içindeki tüm değerlerin logit’ini döndürür.

ml.utils.sigmoid(x: ndarray) ndarray

Verilen ndarray içindeki tüm değerlerin sigmoid’ini döndürür.

ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray

scores değerini (int8, uint8, int16 veya uint16 türünde nicemlenmiş bir ndarray) nicemlenmiş bir threshold ile eşikler ve eşiği geçen tüm indislerin bir ndarray değerini döndürür.

Nicemlemeden çözülmüş değerlerin pozitif mi yoksa negatif mi olduğunu belirlemek için scale test edilir. scale > 0 olduğunda scores > threshold koşulunu sağlayan indisler döndürülür; aksi takdirde scores < threshold koşulunu sağlayan indisler döndürülür.

find_max True ise, scores değerini dahili olarak find_max_axis boyunca alınan maksimum (veya scale değerine bağlı olarak minimum) değerlerden oluşan bir ndarray ile değiştirir.

find_max_axis, find_max True olduğunda maksimum/minimum indirgemesinin hesaplandığı eksendir.

ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray

Verilen ndarray değerini, ölçeğe bölüp modelin sıfır noktasını ekleyerek dönüştürür. index konumundaki model çıktısının dtype değeri float olduğunda value değerini değiştirmeden döndürür.

model, çıktı nicemleme parametreleri kullanılan modeldir.

value, nicemlenecek ndarray değeridir.

index, model modelinin hangi tensör çıktısına göre nicemleme yapılacağını seçer.

ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray

Verilen ndarray değerini, sıfır noktasını çıkarıp ardından modelin ölçeğiyle çarparak dönüştürür. index konumundaki model çıktısının dtype değeri float olduğunda value değerini değiştirmeden döndürür.

model, çıktı nicemleme parametreleri kullanılan modeldir.

value, nicemlemesi çözülecek ndarray değeridir.

index, model modelinin hangi tensör çıktısına göre nicemleme çözmesi yapılacağını seçer.

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 üzerine metin etiketleriyle birlikte sınırlayıcı kutular (veya merkez noktası işaretçileri) çizer.

boxes, (x, y, w, h) demetlerinden oluşan bir listedir.

labels, her kutu için bir tane olmak üzere etiket dizgilerinden oluşan bir listedir.

colors, her kutu için bir tane olmak üzere (r, g, b) demetlerinden oluşan bir listedir.

scores None değilse, kutu başına güven puanlarından oluşan bir listedir. Sağlandığında, oluşturulan her etiketin sonuna " %.2f" biçiminde puan eklenir.

format, kutu koordinatlarının nasıl yorumlanacağını denetler:

  • "pascal_voc"0.0 ile 1.0 aralığında normalleştirilmiş (xmin, ymin, xmax, ymax).

  • "point" – mutlak piksel (x, y, w, h); dikdörtgen yerine kutu merkezine dolu bir daire işaretçisi çizilir (merkez noktası dedektörleri için kullanışlıdır).

  • diğer herhangi bir değer – mutlak piksel (x, y, w, h); dikdörtgen olarak çizilir.

font_width, etiketteki her karakterin piksel cinsinden genişliğidir.

font_height, etiket arka planının piksel cinsinden yüksekliğidir.

text_color, etiket metni için kullanılan (r, g, b) rengidir.

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

Anahtar nokta (x, y, ...) değerlerinden oluşan bir ndarray değerini image üzerine çizer.

radius, anahtar nokta dairesinin yarıçapıdır. radius == 0 olduğunda anahtar noktalar tek pikseller olarak çizilir.

color, (r, g, b) anahtar nokta rengidir.

thickness, daire dış çizgisinin kalınlığıdır.

fill True ise anahtar nokta dairelerini doldurur.

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

Anahtar nokta (x, y, ...) değerlerinden oluşan bir ndarray değerini image üzerine çizer ve ardından bunları doğru parçalarıyla birbirine bağlar.

lines, hangi anahtar nokta çiftlerinin bağlanacağını belirten (kp0_idx, kp1_idx) demetlerinden oluşan bir listedir.

kp_radius, anahtar nokta dairesinin yarıçapıdır (draw_keypoints fonksiyonuna iletilir).

kp_color, (r, g, b) anahtar nokta rengidir.

kp_thickness, anahtar nokta dairesinin dış çizgi kalınlığıdır.

kp_fill True ise anahtar nokta dairelerini doldurur.

line_color, (r, g, b) çizgi rengidir.

line_thickness, çizgi kalınlığıdır.

class NMS – Yumuşak Maksimum Olmayan Bastırma (Soft-Non-Maximum Suppression)

NMS nesnesi, ilişkili puanlarıyla birlikte bir sınırlayıcı kutu listesi toplar, daha düşük puanlı çakışan kutuları Soft-NMS ile filtreler ve bir alt pencerede tespit edilen kutuları orijinal görüntü koordinatlarına geri eşler.

class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])

Bir NMS nesnesi oluşturur.

window_w ve window_h, model giriş tensörünün / penceresinin genişliği ve yüksekliğidir.

roi, modelin üzerinde çalıştırıldığı orijinal görüntünün (x, y, w, h) ilgi bölgesidir (genellikle Normalization() nesnesi tarafından döndürülür). Tespit edilen kutuları orijinal görüntü koordinat uzayına geri eşlemek için kullanılır. roi[2] ve roi[3] >= 1 olmalıdır.

add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None

NMS nesnesine bir sınırlayıcı kutu ekler. score değeri [0.0, 1.0] aralığının dışında olan veya kırpma sonrası genişliği ya da yüksekliği sıfır/negatif olan kutular atılır.

xmin, ymin, xmax, ymax, pencere piksel uzayındaki sınırlayıcı kutu koordinatlarıdır ve [0, window_w] / [0, window_h] aralığına kırpılır.

score, sınırlayıcı kutunun güven puanıdır (0.0-1.0).

label_index, sınırlayıcı kutuyla ilişkili sınıf etiketinin indisidir.

keypoints, bu sınırlayıcı kutuyla ilişkili anahtar nokta (x, y, ...) değerlerinden oluşan isteğe bağlı bir ndarray değeridir.

get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]

Eklenen tüm kutular üzerinde Soft-NMS gerçekleştirir ve label_index ile indislenmiş, sınıf başına listelerden oluşan bir liste döndürür. Her iç liste, orijinal görüntü koordinatlarına geri eşlenmiş ((x, y, w, h), score) demetlerini içerir. Ekleme sırasında keypoints sağlanmışsa, demet yeniden eşlenmiş keypoints ndarray değeriyle genişletilir.

Bu yöntemi çağırdıktan sonra, yeni bir sınırlayıcı kutu kümesini işlemek için yeni bir NMS nesnesi oluşturun.

threshold, bir kutunun korunabilmesi için Soft-NMS bastırması sonrasında koruması gereken minimum puandır.

sigma, çakışan sınırlayıcı kutuların puanlarını cezalandırmak için kullanılan Gauss eğrisini denetler. Daha küçük bir sigma daha agresif bir bastırma ile sonuçlanır. sigma <= 0.0 Gauss cezasını devre dışı bırakır (çakışan kutuların puanları azaltılmaz).