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 ค่า score ขั้นต่ำที่จำเป็นเพื่อให้การตรวจจับผ่านการกรอง

w_scale ตัวคูณ scale แนวนอนที่ใช้กับความกว้างของเซลล์กริดก่อน non-max-suppression ค่าที่มากขึ้นทำให้เซลล์ใกล้เคียงถูกรวมเป็นการตรวจจับเดียว

h_scale ตัวคูณ scale แนวตั้งที่ใช้กับความสูงของเซลล์กริดก่อน non-max-suppression ค่าที่มากขึ้นทำให้เซลล์ใกล้เคียงถูกรวมเป็นการตรวจจับเดียว

nms_threshold ค่าขีดแบ่ง IoU ที่ส่งให้ non-max-suppression

nms_sigma ค่า sigma ที่ส่งให้ non-max-suppression (soft-NMS)

__call__(model: ml.Model, inputs: list, outputs: list) → list#

ถูกเรียกโดย ml.Model.predict() พร้อมโมเดล อินพุต และเอาต์พุตดิบ คืนรายการของรายการการตรวจจับแยกตามคลาส แต่ละการตรวจจับเป็น tuple ((x, y, w, h), score) รายการคลาสว่างจะถูกรวมไว้เพื่อให้ตำแหน่งของแต่ละรายการในเอาต์พุตตรงกับดัชนีคลาสในเอาต์พุตโมเดล คืนค่า tuple ว่างเมื่อไม่มีการตรวจจับ

class YoloPro -- YOLO Pro#

ตัวประมวลผลหลังการทำงานสำหรับเอาต์พุตของโมเดลตรวจจับวัตถุ YOLO Pro ของ Edge Impulse โมเดล YOLO Pro จะให้เอาต์พุตหนึ่งแถวต่อกล่องผู้สมัครแต่ละกล่อง ซึ่งประกอบด้วย xmin, ymin, xmax, ymax (ปรับให้เป็นมาตรฐานตามอินพุต) ตามด้วยเวกเตอร์ score แยกตามคลาส ดูวิธีการฝึกโมเดลดังกล่าวได้ที่ เอกสาร YOLO Pro

class ml.postprocessing.edgeimpulse.YoloPro(threshold: float = 0.6, nms_threshold: float = 0.1, nms_sigma: float = 0.1)#

สร้างตัวประมวลผลหลังการทำงาน YOLO Pro

threshold ค่า score ของคลาสขั้นต่ำที่จำเป็นเพื่อให้กล่องถูกเก็บไว้ก่อนการทำ non-max-suppression

nms_threshold ค่าขีดแบ่ง IoU ที่ส่งให้ non-max-suppression

nms_sigma ค่า sigma ที่ส่งให้ non-max-suppression (soft-NMS)

__call__(model: ml.Model, inputs: list, outputs: list) → list#

ถูกเรียกโดย ml.Model.predict() พร้อมโมเดล อินพุต และเอาต์พุตดิบ คืนรายการของรายการการตรวจจับแยกตามคลาส แต่ละการตรวจจับเป็น tuple ((x, y, w, h), score) ในพิกัดของ ROI รายการคลาสว่างจะถูกรวมไว้เพื่อให้ตำแหน่งของแต่ละรายการในเอาต์พุตตรงกับดัชนีคลาสในเอาต์พุตโมเดล คืนค่า tuple ว่างเมื่อไม่มีการตรวจจับ

ตัวอย่าง:

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)