Ir para o conteúdo

Inferência

Plataforma Ultralytics fornece uma API de inferência para testar modelos treinados. Use o navegador baseado em Predict para validação rápida ou o REST API para acesso programático.

Modelo Ultralytics com deteções sobrepostas

Guia Prever

Cada modelo inclui um Predict guia para inferência baseada no navegador:

  1. Navegue até o seu modelo
  2. Clique no separador Prever
  3. Carregue uma imagem, use um exemplo ou abra a sua webcam
  4. Veja as previsões instantaneamente com sobreposições de caixas delimitadoras

Ultralytics Prever guia Zona de rejeição de imagens

Métodos de entrada

O painel de previsão suporta vários métodos de entrada:

MétodoDescrição
Carregamento de imagensArraste e solte ou clique para carregar uma imagem
Imagens de exemploClique em exemplos integrados (imagens do conjunto de dados ou predefinições)
Captura de webcamTransmissão ao vivo da câmara com captura de imagem única
graph LR
    A[Upload Image] --> D[Auto-Inference]
    B[Example Image] --> D
    C[Webcam Capture] --> D
    D --> E[Results + Overlays]

    style D fill:#2196F3,color:#fff
    style E fill:#4CAF50,color:#fff

Carregar Imagem

Arraste e solte ou clique para carregar:

  • Formatos suportados: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP, DNG, MPO
  • Tamanho máximo: 10MB
  • Autoinferência: os resultados aparecem automaticamente após o upload

Autoinferência

O painel de previsão executa a inferência automaticamente quando carrega uma imagem, seleciona um exemplo ou captura um fotograma da webcam. Não é necessário clicar em nenhum botão.

Imagens de Exemplo

O painel de previsão mostra imagens de exemplo do conjunto de dados vinculado ao seu modelo. Se nenhum conjunto de dados estiver vinculado, serão usados exemplos padrão:

ImagemConteúdo
bus.jpgCena de rua com veículos
zidane.jpgCena esportiva com pessoas

Para os modelos OBB, são mostradas imagens aéreas de barcos e aeroportos.

Imagens pré-carregadas

As imagens de exemplo são pré-carregadas quando a página é carregada, portanto, clicar num exemplo aciona uma inferência quase instantânea, sem espera para download.

Webcam

Clique no cartão da webcam para iniciar uma transmissão ao vivo da câmara:

  1. Conceda permissão à câmara quando solicitado
  2. Clique na pré-visualização do vídeo para capturar um fotograma
  3. A inferência é executada automaticamente no quadro capturado
  4. Clique novamente para reiniciar a webcam

Ver Resultados

Exibição dos resultados da inferência:

  • Caixas delimitadoras com rótulos de classe como sobreposições SVG
  • Pontuações de confiança para cada detect
  • Cores de classe da paleta de cores do seu conjunto de dados (ou da paleta Ultralytics )
  • Discriminação da velocidade: pré-processamento, inferência, pós-processamento e tempo de rede

Resultados da guia Predict Ultralytics com deteções e estatísticas de velocidade

O painel de resultados mostra:

CampoDescrição
Lista de detecçõesCada deteção com nome de classe e confiança
Estatísticas de velocidadePré-processamento, inferência, pós-processamento, rede (ms)
Resposta JSONResposta API bruta num bloco de código

Parâmetros de Inferência

Ajuste o comportamento de deteção com os parâmetros na secção Parâmetros, que pode ser recolhida:

Ultralytics Parâmetros da guia Predict (Prever) Controles deslizantes

ParâmetroIntervaloPadrãoDescrição
Confiança0,01-1,00.25Limite mínimo de confiança
IoU0,0-0,950.70Limite de IoU da NMS
Tamanho da Imagem320, 640, 1280640Redimensionar dimensão de entrada (botão de alternância)

Reexecutar automaticamente

Alterar qualquer parâmetro executa automaticamente novamente a inferência na imagem atual com um debounce de 500 ms. Não é necessário fazer o upload novamente.

Limiar de Confiança

Filtrar previsões por confiança:

  • Maior (0.5+): Menos previsões, mais certas
  • Menor (0.1-0.25): Mais previsões, algum ruído
  • Padrão (0.25): Equilibrado para a maioria dos casos de uso

Limiar de IoU

Controlar a Supressão Não Máxima:

  • Mais alto (0,7+): Permita mais caixas sobrepostas
  • Mais baixo (0,3-0,5): Combinar detecções próximas de forma mais agressiva
  • Padrão (0,70): NMS equilibrado NMS para a maioria dos casos de uso

Previsão de implementação

Cada corrida ponto final dedicado inclui um Predict diretamente no cartão de implementação. Isso usa o serviço de inferência da própria implementação, em vez do serviço de previsão partilhado, permitindo que você teste o seu endpoint implementado a partir do navegador.

REST API

Acessar inferência programaticamente:

Autenticação

Inclua sua chave API nas requisições:

Authorization: Bearer YOUR_API_KEY

Chave API necessária

Para executar inferências a partir dos seus próprios scripts, notebooks ou aplicações, inclua uma chave API. Gere uma em Settings (Secção Chaves API no separador Perfil).

Endpoint

POST https://platform.ultralytics.com/api/models/{modelId}/predict

Requisição

import requests

url = "https://platform.ultralytics.com/api/models/MODEL_ID/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("image.jpg", "rb")}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
curl -X POST \
  "https://platform.ultralytics.com/api/models/MODEL_ID/predict" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@image.jpg" \
  -F "conf=0.25" \
  -F "iou=0.7" \
  -F "imgsz=640"
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("conf", "0.25");
formData.append("iou", "0.7");
formData.append("imgsz", "640");

const response = await fetch(
  "https://platform.ultralytics.com/api/models/MODEL_ID/predict",
  {
    method: "POST",
    headers: { Authorization: "Bearer YOUR_API_KEY" },
    body: formData,
  }
);

const result = await response.json();
console.log(result);

Exemplos de código da guia Predict Ultralytics  Python

Resposta

{
    "images": [
        {
            "shape": [1080, 1920],
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                },
                {
                    "class": 2,
                    "name": "car",
                    "confidence": 0.87,
                    "box": { "x1": 400, "y1": 200, "x2": 600, "y2": 350 }
                }
            ],
            "speed": {
                "preprocess": 1.2,
                "inference": 12.5,
                "postprocess": 2.3
            }
        }
    ],
    "metadata": {
        "imageCount": 1,
        "functionTimeCall": 0.018,
        "model": "model.pt",
        "version": {
            "ultralytics": "8.4.14",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

Ultralytics - Guia Predict - Visualização da resposta JSON

Campos da Resposta

CampoTipoDescrição
imagesarrayLista de imagens processadas
images[].shapearrayDimensões da imagem [altura, largura]
images[].resultsarrayLista de detecções
images[].results[].namestringNome da classe
images[].results[].confidencefloatConfiança da detecção (0-1)
images[].results[].boxobjetoCoordenadas da caixa delimitadora
images[].speedobjetoTempos de processamento em milissegundos
metadataobjetoSolicitar metadados e informações sobre a versão

Respostas Específicas da Tarefa

O formato da resposta varia por tarefa:

{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}
{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "segments": [[100, 50], [150, 60], ...]
}
{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "keypoints": [
    {"x": 200, "y": 75, "conf": 0.95},
    ...
  ]
}
{
  "results": [
    {"class": 0, "name": "cat", "confidence": 0.95},
    {"class": 1, "name": "dog", "confidence": 0.03}
  ]
}
{
  "class": 0,
  "name": "ship",
  "confidence": 0.89,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "obb": {"x1": 105, "y1": 48, "x2": 295, "y2": 55, "x3": 290, "y3": 395, "x4": 110, "y4": 402}
}

Limites de Taxa

A inferência partilhada é limitada à taxa de 20 solicitações/minuto por chave API. Quando limitada, a API retorna 429 com um Retry-After cabeçalho. Veja o texto completo referência ao limite de taxa para todas as categorias de terminais.

Precisa de mais rendimento?

Implemente um terminal dedicado para inferência ilimitada sem limites de taxa, rendimento previsível e respostas consistentes de baixa latência. Para inferência local, consulte o guia do modo Predict.

Tratamento de Erros

Respostas de erro comuns:

CódigoMensagemSolução
400Imagem inválidaVerifique o formato do arquivo
401Não autorizadoVerifique a chave API
404Modelo não encontradoVerifique o ID do modelo
429Limite de taxa atingidoAguarde e tente novamente ou utilize um ponto de extremidade dedicado para obter um débito ilimitado
500Erro do servidorTentar novamente a requisição

FAQ

Posso executar inferência em vídeo?

A API aceita quadros individuais. Para vídeo:

  1. Extrair frames localmente
  2. Enviar cada frame para a API
  3. Agregar resultados

Para vídeo em tempo real, considere implantar um endpoint dedicado.

Como obtenho a imagem anotada?

A API retorna previsões JSON. Para visualizar:

  1. Usar previsões para desenhar caixas localmente
  2. Usar Ultralytics plot() método:
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")

Consulte a documentação do modo Predict para obter a API completa de resultados e as opções de visualização.

Qual é o tamanho máximo da imagem?

  • Limite de upload: 10MB
  • Recommended: <5MB for fast inference
  • Redimensionamento automático: As imagens são redimensionadas para o tamanho selecionado. Image Size parâmetro

Imagens grandes são redimensionadas automaticamente, preservando a proporção.

Posso executar inferência em lote?

A API atual processa uma imagem por requisição. Para processamento em lote:

  1. Enviar requisições concorrentes
  2. Usar um endpoint dedicado para maior throughput
  3. Considerar inferência local para grandes lotes

Inferência em lote com Python

import concurrent.futures

import requests

url = "https://predict-abc123.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
images = ["img1.jpg", "img2.jpg", "img3.jpg"]


def predict(image_path):
    with open(image_path, "rb") as f:
        return requests.post(url, headers=headers, files={"file": f}).json()


with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
    results = list(executor.map(predict, images))


📅 Criado há 1 mês ✏️ Atualizado há 5 dias
glenn-jochersergiuwaxmannLaughing-q

Comentários