Ultralytics YOLO27:

Inferência#

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

Separador de previsão do modelo da Ultralytics Platform com sobreposição de deteções

Separador Previsão#

Todos os modelos com pesos incluem um separador Predict para inferência baseada no navegador:

  1. Navega até ao teu modelo
  2. Clica no separador Predict
  3. Carrega uma imagem, usa um exemplo ou abre a tua webcam
  4. 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.

Área de carregamento de imagens do separador Predict da Ultralytics Platform

Métodos de entrada#

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

MétodoDescrição
Carregamento de imagensArrasta e larga ou clica para carregar uma imagem
Imagens de exemploClica nos exemplos incorporados (imagens do conjunto de dados ou predefinições)
Captura pela webcamTransmissã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:#fff

Carregar 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
Inferência Automática

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.

Redimensionamento no lado do cliente

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:

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

Para modelos OBB, são mostradas em alternativa imagens aéreas de barcos e de um aeroporto.

Imagens pré-carregadas

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:

  1. Concede permissão para usar a câmara quando solicitado
  2. Clica na pré-visualização do vídeo para capturar um fotograma
  3. A inferência é executada automaticamente no fotograma capturado
  4. 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.

Resultados da aba de previsões da Ultralytics Platform com detecções e estatísticas de velocidade

O painel de resultados mostra:

CampoDescrição
Resumo dos resultadosLista por deteção ou as 5 principais classes para modelos de classificação e semânticos
Estatísticas de velocidadePré-processamento, inferência, pós-processamento e rede (ms)
VersõesVersões da Ultralytics e do PyTorch, além do intervalo de profundidade ou do tamanho da máscara, quando aplicável
Resposta JSONResposta 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:

Controlos deslizantes de parâmetros do separador Predict da Ultralytics Platform

ParâmetroIntervaloPredefiniçãoDescrição
Confiança0.01 – 1.0, incrementos de 0.010.25Limiar mínimo de confiança
IoU0.0 – 0.95, incrementos de 0.010.7Limiar de IoU do NMS
Tamanho da Imagem32 – 1280, incrementos de 32640Dimensão de redimensionamento da entrada
Nova execução automática

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_KEY
É necessária uma chave de API

Para 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/predict

A inferência partilhada usa a API da Platform com o caminho completo do modelo:

POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predict

Ambos 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())

Exemplos de código do separador Python do separador Predict da Ultralytics Platform

Parâmetros do pedido#

ParâmetroTipoPredefiniçãoIntervaloDescrição
filefile--Ficheiro de imagem ou vídeo (obrigatório, a menos que source esteja definido)
conffloat0.250.01 – 1.0Limiar mínimo de confiança
ioufloat0.70.0 – 0.95Limiar de IoU do NMS
imgszint64032 – 1280Tamanho da imagem de entrada em píxeis
normalizeboolfalse-Devolve as coordenadas da caixa delimitadora como 0 – 1
decimalsint50 – 10Precisão decimal dos valores das coordenadas
bitsint88, 12, 16Quantização do mapa de profundidade, apenas para modelos de profundidade
sourcestring--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"
        }
    }
}

Vista da resposta JSON do separador Predict da Ultralytics Platform

Campos da resposta#

CampoTipoDescrição
imagesarrayLista de imagens processadas, uma entrada por frame de vídeo para vídeos
images[].shapearrayDimensões da imagem [altura, largura]
images[].resultsarrayLista de deteções
images[].results[].classintÍndice da classe (ID inteiro)
images[].results[].namestringNome da classe
images[].results[].confidencefloatConfiança da deteção (0-1)
images[].results[].boxobjectoCoordenadas da caixa delimitadora
images[].semantic_maskobjectoMapa de classes por pixel (apenas modelos semânticos)
images[].depthobjectoMapa de profundidade por pixel (apenas modelos de profundidade)
images[].speedobjectoTempos de processamento em milissegundos
metadataobjectoContagem 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.

Precisas de mais capacidade?

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ódigoMensagemSolução
400Imagem inválidaVerifica o formato do ficheiro ou se o modelo tem pesos treinados
401Não autorizadoVerifica a chave da API
404Modelo não encontradoVerifica o proprietário, o projeto e os nomes do modelo
413Entrada demasiado grandeReduz o tamanho do ficheiro abaixo do limite do endpoint
429Limite de frequência atingidoAguarda e tenta novamente ou envia os pedidos diretamente para um endpoint dedicado
500Erro do servidorTenta novamente o pedido
503Serviço indisponívelO 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:

    1. Utiliza as previsões para desenhar caixas localmente
    2. 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 Size selecionado 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:

    1. Envia pedidos separados para cada imagem
    2. Distribui os pedidos por endpoints dedicados quando apropriado
    3. Utiliza a inferência local para lotes grandes
    Inferência em lote com Python
    import 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))

Comentários