Ir para o conteúdo

Referência — API Python

Superfície pública do pacote ort-vision-sdk (tudo importável diretamente de ort_vision_sdk).

Tarefas

Classe Descrição
Classifier Classificação de imagem (saída (1, num_classes)).
Detector Detecção de objetos (cabeças YOLO anchor-free).
Segmenter Segmentação de instância (cabeças YOLO-seg).
DetectClassify Pipeline fundido detector → classificador, num único .onnx.
VisionTask Classe base comum (não instancie diretamente).
DetectorHead Tipo das famílias de decoder de detecção (ex.: "yolo").
SegmenterHead Tipo das famílias de decoder de segmentação (ex.: "yolo-seg").

Cada tarefa expõe três variantes de inferência com a mesma assinatura: predict(), async_predict() (asyncio.to_thread) e ort_async_predict() (InferenceSession.run_async). Todas retornam list[Results] de comprimento 1 por imagem.

Construtores (resumo)

Classifier(model_path, *, labels=None, providers=None, session_options=None,
           backend=None, input_size=None, mean=..., std=..., apply_softmax=True)

Detector(model_path, *, head="yolo", labels=None, providers=None,
         session_options=None, backend=None, input_size=None,
         conf_threshold=0.25, iou_threshold=0.45, max_detections=300,
         raise_on_empty=False)

Segmenter(model_path, *, head="yolo-seg", labels=None, providers=None,
          session_options=None, backend=None, input_size=None,
          conf_threshold=0.25, iou_threshold=0.45, max_detections=300,
          mask_threshold=0.5, raise_on_empty=False)

DetectClassify(model_path, *, labels=None, classifier_labels=None,
               raise_on_empty=False, providers=None, session_options=None,
               backend=None)

DetectClassify tem só esses parâmetros porque todo o resto — resolução, tamanho do recorte, limiares, softmax, nomes de classe dos dois estágios — foi gravado no arquivo na hora da fusão. Ver Pipelines fundidos.

Os três construtores aceitam backend= (v0.4.0): injeta um InferenceBackend para rodar a inferência fora do ONNX Runtime in-process (navegador, Android). Quando fornecido, model_path/providers/session_options são ignorados. Veja o guia de backends. (Adicionei backend=None às assinaturas de Classifier/Detector acima também.)

input_size=None e labels=None (v0.6.0) significam "pergunte ao modelo": a resolução vem do shape declarado pelo grafo e os nomes vêm dos names nos metadados, com os defaults antigos (224/640, preset COCO) como fallback. Ver O modelo manda.

Detector.predict() e Segmenter.predict() aceitam overrides por chamada: conf_threshold, iou_threshold, classes.

Backends de inferência

Símbolo Descrição
InferenceBackend Protocolo do motor de inferência — metadata (input_name/input_shape/output_names/output_shapes) + run/async_run/ort_async_run.
MetadataBackend Protocolo de capacidade: backends que leem o mapa de metadados do modelo. Separado porque um bridge nativo pode não conseguir.
read_metadata(backend) Lê o mapa de metadados de um backend, devolvendo {} quando ele não oferece a capacidade.
OrtSession Backend padrão (ONNX Runtime in-process); satisfaz os dois protocolos.
OrtSession.metadata Mapa de metadados customizados do modelo (names, task, imgsz, ...).
OrtSession.input_shape Shape declarado da primeira entrada (eixos dinâmicos como string).

Envelopes de resultado

Envelope Visão em massa Iterar produz Campos notáveis
ClassificationResults probs n/a (resultado único) cls, conf, name, probabilities
DetectionResults boxes DetectionResult cls, conf, box.xyxy, cropped_image
DetectClassifyResults boxes DetectionResult + classification, e classifier_names no envelope
SegmentationResults boxes, masks SegmentationResult cls, conf, box.xyxy, mask, segmented_image

Todo envelope expõe também names, orig_img, orig_shape, path e speed — um dict[str, float] com load, preprocess, inference e postprocess em milissegundos, preenchido por todo predict(). Ver Custo da inferência.

Visões em massa (estilo Ultralytics)

Classe Atributos
Boxes xyxy, xywh, xyxyn, xywhn, cls, conf, data
Probs top1, top5, top1conf, top5conf, data
Masks data, xyxy

Tipos por instância

Tipo Campos canônicos Aliases Ultralytics
DetectionResult class_id, class_name, confidence, bbox, cropped_image, classification cls, name, conf, box
SegmentationResult + mask, segmented_image cls, name, conf, box
ClassificationResult class_id, class_name, confidence cls, name, conf
ClassProbability class_id, class_name, probability cls, name
BoundingBox x1, y1, x2, y2 + xyxy

Resultado vazio

Detector, Segmenter e DetectClassify aceitam raise_on_empty no construtor e como override em cada predict(). Default False: não achar nada devolve um envelope vazio, não um erro. Com True, levanta NoDetectionsError — ver Quando não detectar nada é um erro.

Símbolo Descrição
raise_on_empty Argumento de construtor e de predict(); o valor por chamada vence o do construtor.
NoDetectionsError Levantado quando nada sobra e o flag está ativo. Exportado em ort_vision_sdk.core.
require_detections(count, ...) O helper compartilhado pelas três tarefas, exportado para quem constrói a própria tarefa.

Compondo pipelines (extra [compose])

Símbolo Descrição
compose.fuse_detect_classify(...) Funde um detector YOLO e um classificador num único .onnx, e valida o resultado rodando-o.
compose.build_bridge(...) Monta só o subgrafo-ponte (NMS → RoiAlign → normalização). Útil para inspeção.
compose.MIN_OPSET Opset mínimo que a ponte exige (16, por causa do RoiAlign).
FusionError Erro levantado quando dois modelos não podem ser fundidos, ou o arquivo carregado não é um pipeline.

Este módulo é o único que importa onnx, e só é instalado com pip install "ort-vision-sdk[compose]". Rodar o modelo fundido não precisa dele. Ver Pipelines fundidos.

Imagens e rótulos

Símbolo Descrição
load_image(image) Carrega qualquer entrada suportada para um ndarray HWC uint8 RGB.
ImageInput Tipo de união das entradas aceitas por predict().
ImageArray Alias para o ndarray HWC uint8 RGB.
resolve_labels(spec, ...) Resolve uma LabelSpec para dict[int, str].
LabelSpec Tipo de união aceito por labels= (preset, lista, dict, path, None).
COCO_CLASSES Tupla com as 80 classes do preset COCO.

O que o modelo declara

Símbolo Descrição
spatial_input_size(shape) Extrai (largura, altura) de um shape NCHW estático; None quando os eixos são dinâmicos.
resolve_input_size(...) Aplica a precedência grafo → chamador → fallback, avisando quando o chamador contradiz um grafo estático.
model_names(metadata) Interpreta o names do Ultralytics (repr de dict[int, str]) via ast.literal_eval; None quando ausente ou inutilizável.
parse_names(raw) O mesmo parser, sobre uma string qualquer — usado pelos dois mapas de classe de um pipeline fundido.
FusionSpec O que um pipeline fundido declara sobre si mesmo; FusionSpec.from_metadata(...) o lê de volta.
CropSource "detector_input" ou "original" — de onde a ponte recorta as caixas.
task.input_size Resolução em que a tarefa realmente pré-processa.

Fonte da verdade

As assinaturas completas, com tipos e docstrings, vivem no código-fonte em sdk-python/src/ort_vision_sdk/. Esta página resume a superfície pública exportada em __init__.py.