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.
thresholdpontuação mínima exigida para que uma detecção seja mantida.w_scalefator 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_scalefator 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_thresholdlimiar de IoU passado para a supressão não máxima.nms_sigmavalor 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.
thresholdpontuação mínima de classe exigida para que uma caixa seja mantida antes da supressão não máxima.nms_thresholdlimiar de IoU passado para a supressão não máxima.nms_sigmavalor 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)