ml.postprocessing.edgeimpulse --- Edge Impulse#
ml.postprocessing.edgeimpulse 模組包含用於 Edge Impulse 模型的後處理類別。
class Fomo -- Fast Objects More Objects#
FOMO(Fast Objects More Objects)模型輸出的後處理器。
- class ml.postprocessing.edgeimpulse.Fomo(threshold: float = 0.4, w_scale: float = 1.414214, h_scale: float = 1.414214, nms_threshold: float = 0.1, nms_sigma: float = 0.001)#
建立一個 FOMO 後處理器。
threshold保留一個偵測所需的最低分數。w_scale在非極大值抑制之前套用於網格儲存格寬度的水平縮放係數。較大的值會使相鄰儲存格合併為單一偵測。h_scale在非極大值抑制之前套用於網格儲存格高度的垂直縮放係數。較大的值會使相鄰儲存格合併為單一偵測。nms_threshold傳遞給非極大值抑制的 IoU 閾值。nms_sigma傳遞給非極大值抑制的 sigma 值(soft-NMS)。
class YoloPro -- YOLO Pro#
Edge Impulse YOLO Pro 物件偵測模型輸出的後處理器。YOLO Pro 模型會為每個候選框輸出一列,內含 xmin, ymin, xmax, ymax(已相對於輸入正規化),後接每個類別的分數向量。關於如何訓練此類模型,請參閱 YOLO Pro 文件。
- class ml.postprocessing.edgeimpulse.YoloPro(threshold: float = 0.6, nms_threshold: float = 0.1, nms_sigma: float = 0.1)#
建立一個 YOLO Pro 後處理器。
threshold在非極大值抑制之前,保留一個框所需的最低類別分數。nms_threshold傳遞給非極大值抑制的 IoU 閾值。nms_sigma傳遞給非極大值抑制的 sigma 值(soft-NMS)。
範例:
import csi
import ml
from ml.postprocessing.edgeimpulse import YoloPro
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
model = ml.Model("/rom/<model_file_name>", postprocess=YoloPro(threshold=0.4))
while True:
img = csi0.snapshot()
for i, detections in enumerate(model.predict([img])):
for (x, y, w, h), score in detections:
img.draw_rectangle(x, y, w, h)
print(model.labels[i], score)