ml.utils --- ML Utils¶
Modul ml.utils berisi kelas dan fungsi utilitas untuk machine learning.
Fungsi¶
- ml.utils.logit(x: ndarray) ndarray¶
Mengembalikan logit dari semua nilai dalam
ndarrayyang diberikan.
- ml.utils.sigmoid(x: ndarray) ndarray¶
Mengembalikan sigmoid dari semua nilai dalam
ndarrayyang diberikan.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Memberi ambang batas pada
scores(sebuahndarrayterkuantisasi bertipe int8, uint8, int16, atau uint16) denganthresholdyang terkuantisasi dan mengembalikanndarraydari semua indeks yang melewati ambang batas.scalediperiksa untuk menentukan apakah nilai yang telah didekunantisasi bersifat positif atau negatif. Ketikascale > 0, indeks di manascores > thresholddikembalikan; sebaliknya, indeks di manascores < thresholdyang dikembalikan.find_maxjika True, menggantikanscoressecara internal denganndarraydari nilai maksimum (atau minimum, tergantung padascale) sepanjangfind_max_axis.find_max_axisadalah sumbu di mana reduksi maks/min dihitung ketikafind_maxbernilai True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Mengonversi
ndarrayyang diberikan dengan membagi dengan skala dan menambahkan titik nol dari model. Mengembalikanvaluetidak berubah ketika dtype output model padaindexadalah float.modeladalah model yang parameter kuantisasi outputnya digunakan.valueadalahndarrayyang akan dikuantisasi.indexmemilih output tensor mana darimodelyang digunakan sebagai acuan kuantisasi.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Mengonversi
ndarrayyang diberikan dengan mengurangi titik nol kemudian mengalikan dengan skala model. Mengembalikanvaluetidak berubah ketika dtype output model padaindexadalah float.modeladalah model yang parameter kuantisasi outputnya digunakan.valueadalahndarrayyang akan didekuantisasi.indexmemilih output tensor mana darimodelyang digunakan sebagai acuan dekuantisasi.
- 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¶
Menggambar kotak pembatas (atau penanda titik pusat) beserta label teks pada
image.boxesadalah daftar tuple(x, y, w, h).labelsadalah daftar string label, satu per kotak.colorsadalah daftar tuple(r, g, b), satu per kotak.scoresjika tidakNone, sebuah daftar skor kepercayaan per kotak. Jika diberikan, setiap label yang ditampilkan akan diikuti skor yang diformat sebagai" %.2f".formatmengontrol cara koordinat kotak diinterpretasikan:"pascal_voc"--(xmin, ymin, xmax, ymax)ternormalisasi dalam rentang0.0hingga1.0."point"-- piksel absolut(x, y, w, h); penanda lingkaran berisi digambar di pusat kotak, bukan persegi panjang (berguna untuk detektor titik pusat).nilai lainnya -- piksel absolut
(x, y, w, h); digambar sebagai persegi panjang.
font_widthadalah lebar dalam piksel setiap karakter pada label.font_heightadalah tinggi dalam piksel dari latar belakang label.text_coloradalah warna(r, g, b)yang digunakan untuk teks label.
- 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¶
Menggambar
ndarraydari nilai titik kunci(x, y, ...)padaimage.radiusadalah radius lingkaran titik kunci. Ketikaradius == 0, titik kunci digambar sebagai piksel tunggal.coloradalah warna(r, g, b)titik kunci.thicknessadalah ketebalan garis tepi lingkaran.filljika True, mengisi lingkaran titik kunci.
- 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¶
Menggambar
ndarraydari nilai titik kunci(x, y, ...)padaimagekemudian menghubungkannya dengan segmen garis.linesadalah daftar tuple(kp0_idx, kp1_idx)yang menentukan pasangan titik kunci mana yang dihubungkan.kp_radiusadalah radius lingkaran titik kunci (diteruskan kedraw_keypoints).kp_coloradalah warna(r, g, b)titik kunci.kp_thicknessadalah ketebalan garis tepi lingkaran titik kunci.kp_filljika True, mengisi lingkaran titik kunci.line_coloradalah warna(r, g, b)garis.line_thicknessadalah ketebalan garis.
class NMS -- Soft-Non-Maximum Suppression¶
Objek NMS mengumpulkan daftar kotak pembatas beserta skor terkaitnya, memfilter kotak yang saling tumpang tindih dengan skor lebih rendah menggunakan Soft-NMS, serta memetakan kembali kotak yang terdeteksi dalam sub-jendela ke koordinat citra asli.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Membuat objek
NMS.window_wdanwindow_hadalah lebar dan tinggi tensor input model / jendela.roiadalah wilayah yang diminati (ROI)(x, y, w, h)dari citra asli yang dijalankan oleh model (biasanya dikembalikan oleh objekNormalization()). Digunakan untuk memetakan kembali kotak yang terdeteksi ke ruang koordinat citra asli.roi[2]danroi[3]harus >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Menambahkan kotak pembatas ke objek
NMS. Kotak denganscoredi luar[0.0, 1.0]atau dengan lebar/tinggi nol atau negatif setelah pemotongan akan dibuang.xmin,ymin,xmax,ymaxadalah koordinat kotak pembatas dalam ruang piksel jendela, dipotong ke[0, window_w]/[0, window_h].scoreadalah skor kepercayaan kotak pembatas (0.0-1.0).label_indexadalah indeks label kelas yang terkait dengan kotak pembatas.keypointsadalahndarrayopsional dari nilai titik kunci(x, y, ...)yang terkait dengan kotak pembatas ini.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Menjalankan Soft-NMS atas semua kotak yang telah ditambahkan dan mengembalikan daftar per-kelas yang diindeks oleh
label_index. Setiap daftar dalam berisi tuple((x, y, w, h), score)yang telah dipetakan kembali ke koordinat citra asli. Jikakeypointsdiberikan saat penambahan, tuple diperluas denganndarraykeypointsyang telah dipetakan ulang.Setelah memanggil metode ini, buat objek
NMSbaru untuk memproses sekumpulan kotak pembatas yang baru.thresholdadalah skor minimum yang harus dipertahankan oleh sebuah kotak setelah penekanan Soft-NMS agar tetap disimpan.sigmamengontrol Gaussian yang digunakan untuk mengurangi skor kotak pembatas yang saling tumpang tindih. Nilaisigmayang lebih kecil menghasilkan penekanan yang lebih agresif.sigma <= 0.0menonaktifkan penalti Gaussian (skor kotak yang tumpang tindih tidak dikurangi).