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 значение сигмы, передаваемое в подавление немаксимумов (soft-NMS).

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

Вызывается ml.Model.predict() с моделью, её входами и её необработанными выходами. Возвращает список списков обнаружений по классам. Каждое обнаружение представляет собой кортеж ((x, y, w, h), score). Пустые списки классов включаются, чтобы позиция каждого списка в выходе соответствовала индексу класса в выходе модели. Возвращает пустой кортеж, когда ничего не обнаружено.

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 значение сигмы, передаваемое в подавление немаксимумов (soft-NMS).

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

Вызывается ml.Model.predict() с моделью, её входами и её необработанными выходами. Возвращает список списков обнаружений по классам. Каждое обнаружение – это кортеж ((x, y, w, h), score) в координатах ROI. Пустые списки классов включаются, чтобы позиция каждого списка в выходе соответствовала индексу класса в выходе модели. Возвращает пустой кортеж, если ничего не обнаружено.

Пример:

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)