YOLO Inferentie API
Met de YOLO Inference API heb je toegang tot de YOLOv8 objectdetectiemogelijkheden via een RESTful API. Hierdoor kun je objectdetectie uitvoeren op afbeeldingen zonder dat je de YOLOv8 omgeving lokaal hoeft te installeren en in te stellen.
Schermafbeelding van het gedeelte Inference API op het tabblad Voorbeeld van het getrainde model.
Kijken: Ultralytics HUB Inferentie API Doorloop
API URL
De API URL is het adres dat wordt gebruikt om toegang te krijgen tot de YOLO Inference API. In dit geval is de basis URL:
Voorbeeldgebruik in Python
Om toegang te krijgen tot de YOLO Inference API met het opgegeven model en de API-sleutel via Python kun je de volgende code gebruiken:
import requests
# API URL, use actual MODEL_ID
url = f"https://api.ultralytics.com/v1/predict/MODEL_ID"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (optional)
data = {"size": 640, "confidence": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"image": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Vervang in dit voorbeeld API_KEY
met je werkelijke API-sleutel, MODEL_ID
met de gewenste model-ID, en path/to/image.jpg
met het pad naar de afbeelding die je wilt analyseren.
Voorbeeldgebruik met cURL
Je kunt de YOLO Inference API met client URL (cURL) gebruiken door gebruik te maken van de curl
commando. vervangen API_KEY
met je werkelijke API-sleutel, MODEL_ID
met de gewenste model-ID, en image.jpg
met het pad naar de afbeelding die je wilt analyseren:
curl -X POST "https://api.ultralytics.com/v1/predict/MODEL_ID" \
-H "x-api-key: API_KEY" \
-F "image=@/path/to/image.jpg" \
-F "size=640" \
-F "confidence=0.25" \
-F "iou=0.45"
Argumenten doorgeven
Dit commando stuurt een POST verzoek naar de YOLO Inference API met de gespecificeerde MODEL_ID
in de URL en de API_KEY
in het verzoek headers
samen met het afbeeldingsbestand gespecificeerd door @path/to/image.jpg
.
Hier is een voorbeeld van het doorgeven van de size
, confidence
en iou
argumenten via de API URL met behulp van de requests
bibliotheek in Python:
import requests
# API URL, use actual MODEL_ID
url = f"https://api.ultralytics.com/v1/predict/MODEL_ID"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (optional)
data = {"size": 640, "confidence": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"image": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
In dit voorbeeld is de data
woordenboek bevat de query argumenten size
, confidence
en iou
, waarmee de API wordt verteld om inferentie uit te voeren op afbeeldingsgrootte 640 met betrouwbaarheids- en IoU-drempelwaarden van 0,25 en 0,45.
Dit zal de query parameters meesturen met het bestand in het POST verzoek. Zie de tabel hieronder voor een volledige lijst van beschikbare inferentieargumenten.
Inferentie Argument | Standaard | Type | Opmerkingen |
---|---|---|---|
size |
640 |
int |
geldig bereik is 32 - 1280 pixels |
confidence |
0.25 |
float |
geldig bereik is 0.01 - 1.0 |
iou |
0.45 |
float |
geldig bereik is 0.0 - 0.95 |
url |
'' |
str |
optionele afbeeldings URL als geen afbeeldingsbestand is doorgegeven |
normalize |
False |
bool |
JSON-indeling retourneren
De YOLO Inference API retourneert een JSON lijst met de detectieresultaten. Het formaat van de JSON lijst zal hetzelfde zijn als de lijst die lokaal wordt geproduceerd door de results[0].tojson()
commando.
De JSON lijst bevat informatie over de gedetecteerde objecten, hun coördinaten, klassen en betrouwbaarheidsscores.
Modelformaat detecteren
YOLO detectiemodellen, zoals yolov8n.pt
, kan JSON antwoorden teruggeven van lokale inferentie, cURL-inferentie en Python inferentie. Al deze methoden produceren hetzelfde JSON antwoordformaat.
Model JSON antwoord detecteren
import requests
# API URL, use actual MODEL_ID
url = f"https://api.ultralytics.com/v1/predict/MODEL_ID"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (optional)
data = {"size": 640, "confidence": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"image": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
{
"success": True,
"message": "Inference complete.",
"data": [
{
"name": "person",
"class": 0,
"confidence": 0.8359682559967041,
"box": {
"x1": 0.08974208831787109,
"y1": 0.27418340047200523,
"x2": 0.8706787109375,
"y2": 0.9887352837456598
}
},
{
"name": "person",
"class": 0,
"confidence": 0.8189555406570435,
"box": {
"x1": 0.5847355842590332,
"y1": 0.05813225640190972,
"x2": 0.8930277824401855,
"y2": 0.9903111775716146
}
},
{
"name": "tie",
"class": 27,
"confidence": 0.2909725308418274,
"box": {
"x1": 0.3433395862579346,
"y1": 0.6070465511745877,
"x2": 0.40964522361755373,
"y2": 0.9849439832899306
}
}
]
}
Formaat segmentmodel
YOLO segmentatiemodellen, zoals yolov8n-seg.pt
, kan JSON antwoorden teruggeven van lokale inferentie, cURL-inferentie en Python inferentie. Al deze methoden produceren hetzelfde JSON antwoordformaat.
Segmentmodel JSON antwoord
import requests
# API URL, use actual MODEL_ID
url = f"https://api.ultralytics.com/v1/predict/MODEL_ID"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (optional)
data = {"size": 640, "confidence": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"image": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Opmerking segments
x
en y
Lengtes kunnen variëren van object tot object. Grotere of complexere objecten kunnen meer segmentpunten hebben.
{
"success": True,
"message": "Inference complete.",
"data": [
{
"name": "person",
"class": 0,
"confidence": 0.856913149356842,
"box": {
"x1": 0.1064866065979004,
"y1": 0.2798851860894097,
"x2": 0.8738358497619629,
"y2": 0.9894873725043403
},
"segments": {
"x": [
0.421875,
0.4203124940395355,
0.41718751192092896
...
],
"y": [
0.2888889014720917,
0.2916666567325592,
0.2916666567325592
...
]
}
},
{
"name": "person",
"class": 0,
"confidence": 0.8512625694274902,
"box": {
"x1": 0.5757311820983887,
"y1": 0.053943040635850696,
"x2": 0.8960096359252929,
"y2": 0.985154045952691
},
"segments": {
"x": [
0.7515624761581421,
0.75,
0.7437499761581421
...
],
"y": [
0.0555555559694767,
0.05833333358168602,
0.05833333358168602
...
]
}
},
{
"name": "tie",
"class": 27,
"confidence": 0.6485961675643921,
"box": {
"x1": 0.33911995887756347,
"y1": 0.6057066175672743,
"x2": 0.4081430912017822,
"y2": 0.9916408962673611
},
"segments": {
"x": [
0.37187498807907104,
0.37031251192092896,
0.3687500059604645
...
],
"y": [
0.6111111044883728,
0.6138888597488403,
0.6138888597488403
...
]
}
}
]
}
Formaat poseermodel
YOLO poseermodellen, zoals yolov8n-pose.pt
, kan JSON antwoorden teruggeven van lokale inferentie, cURL-inferentie en Python inferentie. Al deze methoden produceren hetzelfde JSON antwoordformaat.
Stellingmodel JSON Antwoord
import requests
# API URL, use actual MODEL_ID
url = f"https://api.ultralytics.com/v1/predict/MODEL_ID"
# Headers, use actual API_KEY
headers = {"x-api-key": "API_KEY"}
# Inference arguments (optional)
data = {"size": 640, "confidence": 0.25, "iou": 0.45}
# Load image and send request
with open("path/to/image.jpg", "rb") as image_file:
files = {"image": image_file}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Opmerking COCO-keypoints voorgetrainde modellen hebben 17 menselijke keypoints. De visible
deel van de toetspunten geeft aan of een toetspunt zichtbaar of verborgen is. Verdoezelde sleutelpunten kunnen zich buiten het beeld bevinden of niet zichtbaar zijn, bijvoorbeeld iemands ogen die van de camera wegkijken.
{
"success": True,
"message": "Inference complete.",
"data": [
{
"name": "person",
"class": 0,
"confidence": 0.8439509868621826,
"box": {
"x1": 0.1125,
"y1": 0.28194444444444444,
"x2": 0.7953125,
"y2": 0.9902777777777778
},
"keypoints": {
"x": [
0.5058594942092896,
0.5103894472122192,
0.4920862317085266
...
],
"y": [
0.48964157700538635,
0.4643048942089081,
0.4465252459049225
...
],
"visible": [
0.8726999163627625,
0.653947651386261,
0.9130823612213135
...
]
}
},
{
"name": "person",
"class": 0,
"confidence": 0.7474289536476135,
"box": {
"x1": 0.58125,
"y1": 0.0625,
"x2": 0.8859375,
"y2": 0.9888888888888889
},
"keypoints": {
"x": [
0.778544008731842,
0.7976160049438477,
0.7530890107154846
...
],
"y": [
0.27595141530036926,
0.2378823608160019,
0.23644638061523438
...
],
"visible": [
0.8900790810585022,
0.789978563785553,
0.8974530100822449
...
]
}
}
]
}
Gemaakt op 2024-01-23, Bijgewerkt op 2024-03-06
Auteurs: RizwanMunawar (1), glenn-jocher (3), priytosh-tripathi (1)