ml.utils --- Tiện ích ML¶
Module ml.utils chứa các lớp và hàm tiện ích cho học máy.
Hàm¶
- ml.utils.logit(x: ndarray) ndarray¶
Trả về logit của tất cả các giá trị trong
ndarrayđược truyền vào.
- ml.utils.sigmoid(x: ndarray) ndarray¶
Trả về sigmoid của tất cả các giá trị trong
ndarrayđược truyền vào.
- ml.utils.threshold(scores: ndarray, threshold: float, scale: float, find_max: bool = False, find_max_axis: int = 1) ndarray¶
Áp dụng ngưỡng cho
scores(mộtndarrayđược lượng tử hóa kiểu int8, uint8, int16 hoặc uint16) theothresholdđược lượng tử hóa và trả về mộtndarraygồm tất cả các chỉ mục vượt qua ngưỡng.scaleđược kiểm tra để xác định xem các giá trị đã khử lượng tử hóa là dương hay âm. Khiscale > 0, các chỉ mục thỏa mãnscores > thresholdđược trả về; ngược lại, các chỉ mục thỏa mãnscores < thresholdđược trả về.find_maxnếu là True, sẽ thay thếscoresbên trong bằng mộtndarraygồm giá trị lớn nhất (hoặc nhỏ nhất, tùy thuộc vàoscale) theo trụcfind_max_axis.find_max_axislà trục mà dọc theo đó phép rút gọn max/min được tính khifind_maxlà True.
- ml.utils.quantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Chuyển đổi
ndarrayđược truyền vào bằng cách chia cho scale và cộng với zero point của mô hình (ML). Trả vềvaluekhông thay đổi khi kiểu dữ liệu đầu ra của mô hình (ML) tạiindexlà float.modellà mô hình (ML) có các tham số lượng tử hóa đầu ra được sử dụng.valuelàndarraycần lượng tử hóa.indexchọn tensor đầu ra củamodelđể lượng tử hóa theo.
- ml.utils.dequantize(model: ml.Model, value: ndarray, index: int = 0) ndarray¶
Chuyển đổi
ndarrayđược truyền vào bằng cách trừ đi zero point rồi nhân với scale của mô hình (ML). Trả vềvaluekhông thay đổi khi kiểu dữ liệu đầu ra của mô hình (ML) tạiindexlà float.modellà mô hình (ML) có các tham số lượng tử hóa đầu ra được sử dụng.valuelàndarraycần khử lượng tử hóa.indexchọn tensor đầu ra củamodelđể khử lượng tử hóa theo.
- 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¶
Vẽ các hộp giới hạn (hoặc các điểm đánh dấu tâm) kèm nhãn văn bản lên
image.boxeslà danh sách các tuple(x, y, w, h).labelslà danh sách các chuỗi nhãn, mỗi nhãn ứng với một hộp.colorslà danh sách các tuple(r, g, b), mỗi tuple ứng với một hộp.scoresnếu không phảiNone, là danh sách điểm tin cậy theo từng hộp. Khi được cung cấp, mỗi nhãn được hiển thị sẽ được thêm hậu tố là điểm số định dạng theo" %.2f".formatkiểm soát cách diễn giải tọa độ hộp:"pascal_voc"--(xmin, ymin, xmax, ymax)chuẩn hóa trong khoảng0.0đến1.0."point"-- điểm ảnh tuyệt đối(x, y, w, h); một vòng tròn được tô đặc được vẽ tại tâm hộp thay vì hình chữ nhật (hữu ích cho các bộ phát hiện điểm tâm).bất kỳ giá trị nào khác -- điểm ảnh tuyệt đối
(x, y, w, h); được vẽ dưới dạng hình chữ nhật.
font_widthlà chiều rộng tính bằng điểm ảnh của mỗi ký tự trong nhãn.font_heightlà chiều cao tính bằng điểm ảnh của nền nhãn.text_colorlà màu sắc(r, g, b)dùng cho văn bản nhãn.
- 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¶
Vẽ một
ndarraygồm các giá trị điểm đặc trưng(x, y, ...)lênimage.radiuslà bán kính vòng tròn điểm đặc trưng. Khiradius == 0, các điểm đặc trưng được vẽ dưới dạng điểm ảnh đơn.colorlà màu sắc điểm đặc trưng(r, g, b).thicknesslà độ dày viền vòng tròn.fillnếu là True, sẽ tô đặc các vòng tròn điểm đặc trưng.
- 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¶
Vẽ một
ndarraygồm các giá trị điểm đặc trưng(x, y, ...)lênimagerồi nối chúng bằng các đoạn thẳng.lineslà danh sách các tuple(kp0_idx, kp1_idx)chỉ định các cặp điểm đặc trưng cần nối.kp_radiuslà bán kính vòng tròn điểm đặc trưng (truyền qua chodraw_keypoints).kp_colorlà màu sắc điểm đặc trưng(r, g, b).kp_thicknesslà độ dày viền vòng tròn điểm đặc trưng.kp_fillnếu là True, sẽ tô đặc các vòng tròn điểm đặc trưng.line_colorlà màu sắc đường thẳng(r, g, b).line_thicknesslà độ dày đường thẳng.
class NMS -- Soft-Non-Maximum Suppression¶
Đối tượng NMS thu thập danh sách các hộp giới hạn cùng với điểm số tương ứng, lọc các hộp chồng lấp có điểm thấp hơn qua Soft-NMS, và ánh xạ lại các hộp được phát hiện trong một cửa sổ con về tọa độ ảnh gốc.
- class ml.utils.NMS(window_w: int, window_h: int, roi: tuple[int, int, int, int])¶
Tạo một đối tượng
NMS.window_wvàwindow_hlà chiều rộng và chiều cao của tensor đầu vào / cửa sổ của mô hình (ML).roilà vùng quan tâm (ROI)(x, y, w, h)của ảnh gốc mà mô hình (ML) đã chạy trên đó (thường được trả về bởi đối tượngNormalization()). Dùng để ánh xạ lại các hộp được phát hiện về không gian tọa độ ảnh gốc.roi[2]vàroi[3]phải >= 1.- add_bounding_box(xmin: float, ymin: float, xmax: float, ymax: float, score: float, label_index: int, keypoints: ndarray | None = None) None¶
Thêm một hộp giới hạn vào đối tượng
NMS. Các hộp cóscorenằm ngoài[0.0, 1.0]hoặc có chiều rộng/chiều cao bằng không hoặc âm sau khi cắt xén sẽ bị loại bỏ.xmin,ymin,xmax,ymaxlà tọa độ hộp giới hạn trong không gian điểm ảnh cửa sổ, bị cắt về[0, window_w]/[0, window_h].scorelà điểm tin cậy của hộp giới hạn (0.0-1.0).label_indexlà chỉ mục của nhãn lớp được liên kết với hộp giới hạn.keypointslà mộtndarraytùy chọn gồm các giá trị điểm đặc trưng(x, y, ...)được liên kết với hộp giới hạn này.
- get_bounding_boxes(threshold: float = 0.1, sigma: float = 0.1) list[list[tuple]]¶
Thực hiện Soft-NMS trên tất cả các hộp đã thêm và trả về danh sách các danh sách theo lớp, được lập chỉ mục bằng
label_index. Mỗi danh sách con chứa các tuple((x, y, w, h), score)được ánh xạ trở lại tọa độ ảnh gốc. Nếukeypointsđược cung cấp khi thêm, tuple sẽ được mở rộng vớindarraykeypointsđã được ánh xạ lại.Sau khi gọi phương thức này, hãy tạo một đối tượng
NMSmới để xử lý một tập hợp hộp giới hạn mới.thresholdlà điểm tối thiểu mà một hộp phải giữ được sau khi áp dụng Soft-NMS để không bị loại bỏ.sigmakiểm soát hàm Gaussian dùng để phạt điểm của các hộp giới hạn chồng lấp. Giá trịsigmanhỏ hơn dẫn đến triệt tiêu mạnh hơn.sigma <= 0.0vô hiệu hóa phạt Gaussian (điểm của các hộp chồng lấp không bị giảm).