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.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
scoresdeğerini (int8, uint8, int16 veya uint16 türünde nicemlenmiş birndarray) nicemlenmiş birthresholdile eşikler ve eşiği geçen tüm indislerin birndarraydeğerini döndürür.Nicemlemeden çözülmüş değerlerin pozitif mi yoksa negatif mi olduğunu belirlemek için
scaletest edilir.scale > 0olduğundascores > thresholdkoşulunu sağlayan indisler döndürülür; aksi takdirdescores < thresholdkoşulunu sağlayan indisler döndürülür.find_maxTrue ise,scoresdeğerini dahili olarakfind_max_axisboyunca alınan maksimum (veyascaledeğerine bağlı olarak minimum) değerlerden oluşan birndarrayile değiştirir.find_max_axis,find_maxTrue olduğunda maksimum/minimum indirgemesinin hesaplandığı eksendir.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Verilen
ndarraydeğerini, ölçeğe bölüp modelin sıfır noktasını ekleyerek dönüştürür.indexkonumundaki model çıktısının dtype değeri float olduğundavaluedeğerini değiştirmeden döndürür.model, çıktı nicemleme parametreleri kullanılan modeldir.value, nicemlenecekndarraydeğeridir.index,modelmodelinin 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
ndarraydeğerini, sıfır noktasını çıkarıp ardından modelin ölçeğiyle çarparak dönüştürür.indexkonumundaki model çıktısının dtype değeri float olduğundavaluedeğerini değiştirmeden döndürür.model, çıktı nicemleme parametreleri kullanılan modeldir.value, nicemlemesi çözülecekndarraydeğeridir.index,modelmodelinin 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.scoresNonedeğ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.0ile1.0aralığı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 birndarraydeğeriniimageüzerine çizer.radius, anahtar nokta dairesinin yarıçapıdır.radius == 0olduğunda anahtar noktalar tek pikseller olarak çizilir.color,(r, g, b)anahtar nokta rengidir.thickness, daire dış çizgisinin kalınlığıdır.fillTrue 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 birndarraydeğeriniimageü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_keypointsfonksiyonuna iletilir).kp_color,(r, g, b)anahtar nokta rengidir.kp_thickness, anahtar nokta dairesinin dış çizgi kalınlığıdır.kp_fillTrue 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
NMSnesnesi oluşturur.window_wvewindow_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 (genellikleNormalization()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]veroi[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¶
NMSnesnesine bir sınırlayıcı kutu ekler.scoredeğ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ı birndarraydeğ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_indexile 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ındakeypointssağlanmışsa, demet yeniden eşlenmişkeypointsndarraydeğ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
NMSnesnesi 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 birsigmadaha agresif bir bastırma ile sonuçlanır.sigma <= 0.0Gauss cezasını devre dışı bırakır (çakışan kutuların puanları azaltılmaz).