API de Inferência do Ultralytics HUB
Depois de treinar um modelo, você pode usar a API de Inferência Compartilhada gratuitamente. Se você for um usuário Pro, você pode acessar a API de Inferência Dedicada. A API de Inferência do Ultralytics HUB permite que você execute a inferência através de nossa API REST sem a necessidade de instalar e configurar o ambiente Ultralytics YOLO localmente.
Assista: Passo a passo da API de Inferência do Ultralytics HUB
API de Inferência Dedicada
Em resposta à alta demanda e interesse generalizado, temos o prazer de apresentar a Ultralytics HUB Dedicated Inference API, oferecendo implantação com um clique em um ambiente dedicado para nossos usuários Pro!
Nota
Temos o prazer de oferecer este recurso GRATUITAMENTE durante o nosso beta público como parte do Plano Pro, com níveis pagos possíveis no futuro.
- Cobertura Global: Implementado em 38 regiões em todo o mundo, garantindo acesso de baixa latência de qualquer local. Veja a lista completa de regiões do Google Cloud.
- Suporte do Google Cloud Run: Com o suporte do Google Cloud Run, fornecendo infraestrutura infinitamente escalável e altamente confiável.
- Alta Velocidade: Latência abaixo de 100ms é possível para inferência YOLOv8n em resolução 640 de regiões próximas com base em testes da Ultralytics.
- Segurança Aprimorada: Fornece recursos de segurança robustos para proteger seus dados e garantir a conformidade com os padrões do setor. Saiba mais sobre a segurança do Google Cloud.
Para usar a API de Inferência Dedicada do Ultralytics HUB, clique no botão Start Endpoint. Em seguida, use o URL de endpoint exclusivo conforme descrito nos guias abaixo.
Dica
Escolha a região com a menor latência para obter o melhor desempenho, conforme descrito na documentação.
Para desligar o endpoint dedicado, clique no botão Stop Endpoint.
API de Inferência Compartilhada
Para usar a API de Inferência Partilhada do Ultralytics HUB, siga os guias abaixo.
A API de Inferência Compartilhada do Ultralytics HUB tem os seguintes limites de uso:
- 100 chamadas / hora
Python
Para acessar a API de Inferência do Ultralytics HUB usando Python, utilize o seguinte código:
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Nota
Substitua MODEL_ID
com o ID do modelo desejado, API_KEY
com a sua chave de API real, e path/to/image.jpg
com o caminho para a imagem na qual você deseja executar a inferência.
Se estiver a usar o nosso API de Inferência Dedicada, substitua o url
assim também.
cURL
Para acessar a API de Inferência do Ultralytics HUB usando cURL, use o seguinte código:
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
Nota
Substitua MODEL_ID
com o ID do modelo desejado, API_KEY
com a sua chave de API real, e path/to/image.jpg
com o caminho para a imagem na qual você deseja executar a inferência.
Se estiver a usar o nosso API de Inferência Dedicada, substitua o url
assim também.
Argumentos
Consulte a tabela abaixo para obter uma lista completa dos argumentos de inferência disponíveis.
Argumento | Padrão | Tipo | Descrição |
---|---|---|---|
file |
file |
Arquivo de imagem ou vídeo a ser usado para inferência. | |
imgsz |
640 |
int |
Tamanho da imagem de entrada, o intervalo válido é 32 - 1280 pixels. |
conf |
0.25 |
float |
Limite de confiança para previsões, intervalo válido 0.01 - 1.0 . |
iou |
0.45 |
float |
Intersecção sobre União limiar (IoU), intervalo válido 0.0 - 0.95 . |
Resposta
A API de Inferência do Ultralytics HUB retorna uma resposta JSON.
Classificação
Modelo de Classificação
from ultralytics import YOLO
# Load model
model = YOLO("yolov8n-cls.pt")
# Run inference
results = model("image.jpg")
# Print image.jpg results in JSON format
print(results[0].to_json())
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}
Detecção
Modelo de Detecção
from ultralytics import YOLO
# Load model
model = YOLO("yolov8n.pt")
# Run inference
results = model("image.jpg")
# Print image.jpg results in JSON format
print(results[0].to_json())
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 118,
"x2": 416,
"y1": 112,
"y2": 660
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}
OBB
Modelo OBB
from ultralytics import YOLO
# Load model
model = YOLO("yolov8n-obb.pt")
# Run inference
results = model("image.jpg")
# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 374.85565,
"x2": 392.31824,
"x3": 412.81805,
"x4": 395.35547,
"y1": 264.40704,
"y2": 267.45728,
"y3": 150.0966,
"y4": 147.04634
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}
Segmentação
Modelo de Segmentação
from ultralytics import YOLO
# Load model
model = YOLO("yolov8n-seg.pt")
# Run inference
results = model("image.jpg")
# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 118,
"x2": 416,
"y1": 112,
"y2": 660
},
"segments": {
"x": [
266.015625,
266.015625,
258.984375,
...
],
"y": [
110.15625,
113.67188262939453,
120.70311737060547,
...
]
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}
Pose
Modelo de Pose
from ultralytics import YOLO
# Load model
model = YOLO("yolov8n-pose.pt")
# Run inference
results = model("image.jpg")
# Print image.jpg results in JSON format
print(results[0].tojson())
curl -X POST "https://predict.ultralytics.com" \
-H "x-api-key: API_KEY" \
-F "model=https://hub.ultralytics.com/models/MODEL_ID" \
-F "file=@/path/to/image.jpg" \
-F "imgsz=640" \
-F "conf=0.25" \
-F "iou=0.45"
import requests
# API URL
url = "https://predict.ultralytics.com"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (use actual MODEL_ID)
data = {"model": "https://hub.ultralytics.com/models/MODEL_ID", "imgsz": 640, "conf": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"file": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"images": [
{
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {
"x1": 118,
"x2": 416,
"y1": 112,
"y2": 660
},
"keypoints": {
"visible": [
0.9909399747848511,
0.8162999749183655,
0.9872099757194519,
...
],
"x": [
316.3871765136719,
315.9374694824219,
304.878173828125,
...
],
"y": [
156.4207763671875,
148.05775451660156,
144.93240356445312,
...
]
}
}
],
"shape": [
750,
600
],
"speed": {
"inference": 200.8,
"postprocess": 0.8,
"preprocess": 2.8
}
}
],
"metadata": ...
}