ml.postprocessing.edgeimpulse — Edge Impulse#

O módulo ml.postprocessing.edgeimpulse contém classes de pós-processamento para modelos do Edge Impulse.

classe Fomo – Fast Objects More Objects#

Pós-processador para a saída do modelo 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)#

Cria um pós-processador FOMO.

threshold pontuação mínima exigida para que uma detecção seja mantida.

w_scale fator de escala horizontal aplicado à largura da célula da grade antes da supressão não máxima. Valores maiores fazem com que células vizinhas sejam mescladas em uma única detecção.

h_scale fator de escala vertical aplicado à altura da célula da grade antes da supressão não máxima. Valores maiores fazem com que células vizinhas sejam mescladas em uma única detecção.

nms_threshold limiar de IoU passado para a supressão não máxima.

nms_sigma valor sigma passado para a supressão não máxima (soft-NMS).

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

Invocado por ml.Model.predict() com o modelo, suas entradas e suas saídas brutas. Retorna uma lista de listas de detecção por classe. Cada detecção é uma tupla ((x, y, w, h), score). Listas de classe vazias são incluídas para que a posição de cada lista na saída corresponda ao índice de classe na saída do modelo. Retorna uma tupla vazia quando nada é detectado.

classe YoloPro – YOLO Pro#

Pós-processador para a saída de modelos de detecção de objetos YOLO Pro da Edge Impulse. Os modelos YOLO Pro emitem uma linha por caixa candidata contendo xmin, ymin, xmax, ymax (normalizados em relação à entrada), seguidos por um vetor de pontuações por classe. Veja a documentação do YOLO Pro para treinar um modelo desse tipo.

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

Cria um pós-processador YOLO Pro.

threshold pontuação mínima de classe exigida para que uma caixa seja mantida antes da supressão não máxima.

nms_threshold limiar de IoU passado para a supressão não máxima.

nms_sigma valor sigma passado para a supressão não máxima (soft-NMS).

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

Invocado por ml.Model.predict() com o modelo, suas entradas e suas saídas brutas. Retorna uma lista de listas de detecção por classe. Cada detecção é uma tupla ((x, y, w, h), score) em coordenadas da ROI. Listas de classe vazias são incluídas para que a posição de cada lista na saída corresponda ao índice de classe na saída do modelo. Retorna uma tupla vazia quando nada é detectado.

Exemplo:

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)