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 ndarray yang diberikan.

ml.utils.sigmoid(x: ndarray) ndarray

Mengembalikan sigmoid dari semua nilai dalam ndarray yang 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 (sebuah ndarray terkuantisasi bertipe int8, uint8, int16, atau uint16) dengan threshold yang terkuantisasi dan mengembalikan ndarray dari semua indeks yang melewati ambang batas.

scale diperiksa untuk menentukan apakah nilai yang telah didekunantisasi bersifat positif atau negatif. Ketika scale > 0, indeks di mana scores > threshold dikembalikan; sebaliknya, indeks di mana scores < threshold yang dikembalikan.

find_max jika True, menggantikan scores secara internal dengan ndarray dari nilai maksimum (atau minimum, tergantung pada scale) sepanjang find_max_axis.

find_max_axis adalah sumbu di mana reduksi maks/min dihitung ketika find_max bernilai True.

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

Mengonversi ndarray yang diberikan dengan membagi dengan skala dan menambahkan titik nol dari model. Mengembalikan value tidak berubah ketika dtype output model pada index adalah float.

model adalah model yang parameter kuantisasi outputnya digunakan.

value adalah ndarray yang akan dikuantisasi.

index memilih output tensor mana dari model yang digunakan sebagai acuan kuantisasi.

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

Mengonversi ndarray yang diberikan dengan mengurangi titik nol kemudian mengalikan dengan skala model. Mengembalikan value tidak berubah ketika dtype output model pada index adalah float.

model adalah model yang parameter kuantisasi outputnya digunakan.

value adalah ndarray yang akan didekuantisasi.

index memilih output tensor mana dari model yang 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.

boxes adalah daftar tuple (x, y, w, h).

labels adalah daftar string label, satu per kotak.

colors adalah daftar tuple (r, g, b), satu per kotak.

scores jika tidak None, sebuah daftar skor kepercayaan per kotak. Jika diberikan, setiap label yang ditampilkan akan diikuti skor yang diformat sebagai " %.2f".

format mengontrol cara koordinat kotak diinterpretasikan:

  • "pascal_voc" -- (xmin, ymin, xmax, ymax) ternormalisasi dalam rentang 0.0 hingga 1.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_width adalah lebar dalam piksel setiap karakter pada label.

font_height adalah tinggi dalam piksel dari latar belakang label.

text_color adalah 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 ndarray dari nilai titik kunci (x, y, ...) pada image.

radius adalah radius lingkaran titik kunci. Ketika radius == 0, titik kunci digambar sebagai piksel tunggal.

color adalah warna (r, g, b) titik kunci.

thickness adalah ketebalan garis tepi lingkaran.

fill jika 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 ndarray dari nilai titik kunci (x, y, ...) pada image kemudian menghubungkannya dengan segmen garis.

lines adalah daftar tuple (kp0_idx, kp1_idx) yang menentukan pasangan titik kunci mana yang dihubungkan.

kp_radius adalah radius lingkaran titik kunci (diteruskan ke draw_keypoints).

kp_color adalah warna (r, g, b) titik kunci.

kp_thickness adalah ketebalan garis tepi lingkaran titik kunci.

kp_fill jika True, mengisi lingkaran titik kunci.

line_color adalah warna (r, g, b) garis.

line_thickness adalah 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_w dan window_h adalah lebar dan tinggi tensor input model / jendela.

roi adalah wilayah yang diminati (ROI) (x, y, w, h) dari citra asli yang dijalankan oleh model (biasanya dikembalikan oleh objek Normalization()). Digunakan untuk memetakan kembali kotak yang terdeteksi ke ruang koordinat citra asli. roi[2] dan roi[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 dengan score di luar [0.0, 1.0] atau dengan lebar/tinggi nol atau negatif setelah pemotongan akan dibuang.

xmin, ymin, xmax, ymax adalah koordinat kotak pembatas dalam ruang piksel jendela, dipotong ke [0, window_w] / [0, window_h].

score adalah skor kepercayaan kotak pembatas (0.0-1.0).

label_index adalah indeks label kelas yang terkait dengan kotak pembatas.

keypoints adalah ndarray opsional 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. Jika keypoints diberikan saat penambahan, tuple diperluas dengan ndarray keypoints yang telah dipetakan ulang.

Setelah memanggil metode ini, buat objek NMS baru untuk memproses sekumpulan kotak pembatas yang baru.

threshold adalah skor minimum yang harus dipertahankan oleh sebuah kotak setelah penekanan Soft-NMS agar tetap disimpan.

sigma mengontrol Gaussian yang digunakan untuk mengurangi skor kotak pembatas yang saling tumpang tindih. Nilai sigma yang lebih kecil menghasilkan penekanan yang lebih agresif. sigma <= 0.0 menonaktifkan penalti Gaussian (skor kotak yang tumpang tindih tidak dikurangi).