Inferência#
A Ultralytics Platform fornece inferência baseada no navegador para testar modelos treinados e endpoints dedicados para acesso programático.

Separador Previsão#
Todos os modelos com pesos incluem um separador Predict para inferência baseada no navegador:
- Navega até ao teu modelo
- Clica no separador Predict
- Carrega uma imagem, usa um exemplo ou abre a tua webcam
- Revê a sobreposição específica da tarefa, o resumo da previsão, os tempos e a resposta bruta
Os modelos sem pesos mostram um estado vazio; primeiro, treina o modelo ou carrega os pesos.

Métodos de entrada#
O painel de previsão suporta vários métodos de entrada:
| Método | Descrição |
|---|---|
| Carregamento de imagens | Arrasta e larga ou clica para carregar uma imagem |
| Imagens de exemplo | Clica nos exemplos incorporados (imagens do conjunto de dados ou predefinições) |
| Captura pela webcam | Transmissão de vídeo da câmara em direto com captura de fotograma único |
graph LR
A[Upload Image]:::start --> D[Auto-Inference]:::proc
B[Example Image]:::start --> D
C[Webcam Capture]:::start --> D
D --> E[Results + Overlays]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fffCarregar imagem#
Arrasta e larga ou clica para carregar:
- Formatos suportados: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Tamanho máximo: 10 MB
- Inferência automática: os resultados aparecem automaticamente após o carregamento
O painel de previsão executa a inferência automaticamente quando carregas uma imagem, selecionas um exemplo ou capturas um fotograma da webcam. Não é necessário clicar num botão.
Antes de carregar, o painel redimensiona a imagem para que o lado mais longo corresponda ao Image Size selecionado e solicita coordenadas normalizadas. Isto torna os testes no navegador rápidos; os pedidos que envias por tua conta não são redimensionados.
Imagens de exemplo#
O painel de previsão mostra até duas imagens de exemplo do conjunto de dados associado ao teu modelo, dando preferência à divisão val, depois a
test e, por fim, a train. Se não houver nenhum conjunto de dados associado, são usados exemplos predefinidos:
| Imagem | Conteúdo |
|---|---|
bus.jpg | Cena de rua com veículos |
zidane.jpg | Cena desportiva com pessoas |
Para modelos OBB, são mostradas em alternativa imagens aéreas de barcos e de um aeroporto.
As imagens de exemplo são pré-carregadas quando a página é carregada, por isso clicar num exemplo aciona uma inferência quase instantânea, sem esperar pelo descarregamento.
Webcam#
Clica no cartão da webcam para iniciar uma transmissão de vídeo da câmara em direto:
- Concede permissão para usar a câmara quando solicitado
- Clica na pré-visualização do vídeo para capturar um fotograma
- A inferência é executada automaticamente no fotograma capturado
- Clica novamente para reiniciar a webcam
Ver resultados#
Os resultados da inferência apresentam a saída adequada à tarefa do modelo: caixas, máscaras, pontos-chave, caixas orientadas, pontuações de classificação, cobertura semântica ou um mapa de profundidade. Os resultados dos objetos usam as cores das classes do conjunto de dados, quando disponíveis. O painel também mostra os tempos de pré-processamento, inferência, pós-processamento e rede.

O painel de resultados mostra:
| Campo | Descrição |
|---|---|
| Resumo dos resultados | Lista por deteção ou as 5 principais classes para modelos de classificação e semânticos |
| Estatísticas de velocidade | Pré-processamento, inferência, pós-processamento e rede (ms) |
| Versões | Versões da Ultralytics e do PyTorch, além do intervalo de profundidade ou do tamanho da máscara, quando aplicável |
| Resposta JSON | Resposta bruta da API num bloco de código, com os dados do mapa em base64 omitidos |
Depois de os resultados estarem disponíveis, ficam dois controlos sobre a pré-visualização: clica na imagem para a ampliar, mantendo as sobreposições, e usa o botão de transferência para guardar um JPEG anotado do resultado atual.
Parâmetros de inferência#
Ajusta o comportamento da inferência com os três controlos deslizantes abaixo da imagem:

| Parâmetro | Intervalo | Predefinição | Descrição |
|---|---|---|---|
| Confiança | 0.01 – 1.0, incrementos de 0.01 | 0.25 | Limiar mínimo de confiança |
| IoU | 0.0 – 0.95, incrementos de 0.01 | 0.7 | Limiar de IoU do NMS |
| Tamanho da Imagem | 32 – 1280, incrementos de 32 | 640 | Dimensão de redimensionamento da entrada |
Alterar qualquer parâmetro executa novamente a inferência automaticamente na imagem atual, com um debounce de 500 ms. Não é necessário voltar a carregar a imagem.
Limiar de confiança#
Filtra as previsões por confiança:
- Mais elevado (0.5+): menos previsões, mais certas
- Mais baixo (0.1-0.25): mais previsões, algum ruído
- Predefinição (0.25): equilibrado para a maioria dos casos de utilização
Limiar de IoU#
Controla a supressão não máxima:
- Mais elevado (0.7+): permite mais caixas sobrepostas
- Mais baixo (0.3-0.5): suprime deteções sobrepostas de forma mais agressiva
- Predefinição (0.7): comportamento equilibrado do NMS para a maioria dos casos de utilização
Previsão da implementação#
Cada endpoint dedicado em execução inclui um separador Predict diretamente no seu cartão de implementação. Isto usa o próprio serviço de inferência da implementação, em vez do serviço de previsão partilhado, permitindo-te testar o endpoint implementado a partir do navegador.
Num endpoint pago com monitoramento ativado, as imagens processadas também contribuem para a guia de monitoramento. Os seus exemplos amostrados e gráficos agregados são dados leves e temporários mantidos na memória; parar, reiniciar, implatar novamente, redimensionar ou substituir o modelo pode limpá-los. Salva os exemplos em um conjunto de dados para mantê-los.
API do endpoint dedicado#
O cartão API Docs no separador Predict do modelo contém exemplos de pedidos em Python, JavaScript e cURL, pré-preenchidos com
os valores de confiança, IoU e tamanho da imagem atualmente definidos nos controlos deslizantes. O URL e a chave são marcadores de posição até implementares o
modelo — um botão Deploy junto aos separadores de código salta para o separador Deploy do modelo. Após a implementação, o separador
Code do cartão da implementação preenche o URL desse endpoint e, para os proprietários do espaço de trabalho, a respetiva chave de API associada, pronta a copiar e executar.
Autenticação#
Inclui a tua chave de API nos pedidos:
Authorization: Bearer YOUR_API_KEYPara executares inferências a partir dos teus próprios scripts, notebooks ou aplicações, inclui uma chave de API. Gera uma em Settings > API Keys. Um endpoint dedicado aceita apenas a única chave com que foi criado; a API de modelos partilhada aceita qualquer chave ativa no espaço de trabalho, e os modelos públicos também aceitam pedidos anónimos.
Endpoint#
Os endpoints dedicados recebem pedidos no seu próprio URL:
POST https://YOUR_DEPLOYMENT_URL.run.app/predictA inferência partilhada usa a API da Platform com o caminho completo do modelo:
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictAmbos aceitam o mesmo corpo multipart/form-data e devolvem a mesma estrutura de resposta. Com o
SDK de Python, usa client.models.predict(owner, project, model, body=...) para
inferência partilhada ou client.deployments.predict(owner, deployment, body=...) para uma implementação dedicada:
from ultralytics_platform import Platform
client = Platform() # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})Pedido#
import requests
url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}
with open("image.jpg", "rb") as image_file:
response = requests.post(url, headers=headers, files={"file": image_file}, data=data)
print(response.json())
Parâmetros do pedido#
| Parâmetro | Tipo | Predefinição | Intervalo | Descrição |
|---|---|---|---|---|
file | file | - | - | Ficheiro de imagem ou vídeo (obrigatório, a menos que source esteja definido) |
conf | float | 0.25 | 0.01 – 1.0 | Limiar mínimo de confiança |
iou | float | 0.7 | 0.0 – 0.95 | Limiar de IoU do NMS |
imgsz | int | 640 | 32 – 1280 | Tamanho da imagem de entrada em píxeis |
normalize | bool | false | - | Devolve as coordenadas da caixa delimitadora como 0 – 1 |
decimals | int | 5 | 0 – 10 | Precisão decimal dos valores das coordenadas |
bits | int | 8 | 8, 12, 16 | Quantização do mapa de profundidade, apenas para modelos de profundidade |
source | string | - | - | URL da imagem ou cadeia base64 (alternativa a file) |
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,
"functionTimeAlive": 1284.51,
"functionTimeCall": 0.018,
"task": "detect",
"version": {
"ultralytics": "8.x.x",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}
Campos da resposta#
| Campo | Tipo | Descrição |
|---|---|---|
images | array | Lista de imagens processadas, uma entrada por frame de vídeo para vídeos |
images[].shape | array | Dimensões da imagem [altura, largura] |
images[].results | array | Lista de deteções |
images[].results[].class | int | Índice da classe (ID inteiro) |
images[].results[].name | string | Nome da classe |
images[].results[].confidence | float | Confiança da deteção (0-1) |
images[].results[].box | objecto | Coordenadas da caixa delimitadora |
images[].semantic_mask | objecto | Mapa de classes por pixel (apenas modelos semânticos) |
images[].depth | objecto | Mapa de profundidade por pixel (apenas modelos de profundidade) |
images[].speed | objecto | Tempos de processamento em milissegundos |
metadata | objecto | Contagem de imagens, tempos do serviço, tarefa e versões do Ultralytics/PyTorch |
Respostas específicas da tarefa#
O formato da resposta varia consoante a tarefa:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Limites de frequência#
A API de modelos partilhados está limitada a 20 pedidos/minuto para cada chave de API, autor autenticado ou IP anónimo. Quando
é aplicada limitação, a API devolve 429 com um cabeçalho Retry-After. Consulta a referência completa de
limites de frequência para todas as categorias de endpoints.
Os pedidos enviados diretamente para um endpoint dedicado não passam pelo limitador de frequência da API da Platform. O endpoint continua a rejeitar carga com 429 e um cabeçalho Retry-After quando está temporariamente no limite de capacidade. Para inferência local de grande volume, consulta o guia do modo Predict.
Gestão de erros#
Respostas de erro comuns:
| Código | Mensagem | Solução |
|---|---|---|
| 400 | Imagem inválida | Verifica o formato do ficheiro ou se o modelo tem pesos treinados |
| 401 | Não autorizado | Verifica a chave da API |
| 404 | Modelo não encontrado | Verifica o proprietário, o projeto e os nomes do modelo |
| 413 | Entrada demasiado grande | Reduz o tamanho do ficheiro abaixo do limite do endpoint |
| 429 | Limite de frequência atingido | Aguarda e tenta novamente ou envia os pedidos diretamente para um endpoint dedicado |
| 500 | Erro do servidor | Tenta novamente o pedido |
| 503 | Serviço indisponível | O serviço Predict está a iniciar ou está inacessível; aguarda brevemente e tenta novamente |
Perguntas frequentes#
Ambos os métodos de inferência aceitam ficheiros de vídeo:
- Os endpoints dedicados aceitam ficheiros de vídeo diretamente. Formatos suportados (até 100 MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Cada frame é processado individualmente e os resultados são devolvidos por frame. Consulta os endpoints dedicados para obteres mais detalhes.
- A inferência partilhada (
POST /api/models/{owner}/{project}/{model}/predict) utiliza o mesmo serviço Predict e aceita os mesmos formatos de vídeo. O separador Predict do navegador apenas seleciona imagens, por isso usa a API ou um endpoint dedicado para vídeo.
No separador Predict, o botão de transferência sobre a pré-visualização guarda o resultado atual como um JPEG anotado. A própria API devolve previsões em JSON. Para as visualizares:
- Utiliza as previsões para desenhar caixas localmente
- Utiliza o método
plot()do Ultralytics:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Consulta a documentação do modo Predict para obteres a API completa de resultados e as opções de visualização.
- Limite do separador Predict: 10 MB
- Limite da API: 100 MB tanto para inferência partilhada como para endpoints dedicados
- Redimensionamento automático no separador Predict: as imagens são redimensionadas para o
Image Sizeselecionado antes do carregamento
As imagens grandes são redimensionadas automaticamente no navegador, preservando a proporção. Os pedidos que envias não são redimensionados, por isso as imagens acima do limite são rejeitadas com
413.A API atual processa uma imagem por pedido. Para processamento em lote:
- Envia pedidos separados para cada imagem
- Distribui os pedidos por endpoints dedicados quando apropriado
- Utiliza a inferência local para lotes grandes
Inferência em lote com Pythonimport concurrent.futures import requests url = "https://YOUR_DEPLOYMENT_URL.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))