YOLO Inferenz-API
Mit der YOLO Inference API kannst du über eine RESTful API auf die YOLOv8 Objekterkennungsfunktionen zugreifen. Damit kannst du die Objekterkennung auf Bildern ausführen, ohne die YOLOv8 Umgebung lokal installieren und einrichten zu müssen.
Screenshot des Abschnitts Inferenz-API auf der Registerkarte Vorschau des trainierten Modells.
Pass auf: Ultralytics HUB Inference API Komplettlösung
API URL
Die API-URL ist die Adresse, die für den Zugriff auf die YOLO Inference API verwendet wird. In diesem Fall lautet die Basis-URL:
Beispiel für die Verwendung in Python
Um mit dem angegebenen Modell und API-Schlüssel über Python auf die YOLO Inference API zuzugreifen, kannst du den folgenden Code verwenden:
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 diesem Beispiel ersetzen Sie API_KEY
mit deinem aktuellen API-Schlüssel, MODEL_ID
mit der gewünschten Modell-ID, und path/to/image.jpg
mit dem Pfad zu dem Bild, das du analysieren willst.
Beispiel für die Verwendung mit cURL
Du kannst die YOLO Inference API mit Client-URL (cURL) verwenden, indem du die curl
Befehl. Ersetze API_KEY
mit deinem aktuellen API-Schlüssel, MODEL_ID
mit der gewünschten Modell-ID, und image.jpg
mit dem Pfad zu dem Bild, das du analysieren willst:
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"
Übergabe von Argumenten
Dieser Befehl sendet eine POST-Anfrage an die YOLO Inference API mit den angegebenen MODEL_ID
in der URL und die API_KEY
in der Anfrage headers
zusammen mit der Bilddatei, die durch @path/to/image.jpg
.
Hier ist ein Beispiel für die Übergabe der size
, confidence
, und iou
Argumente über die API-URL mit der Option requests
Bibliothek 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 diesem Beispiel wird die data
Wörterbuch enthält die Abfrageargumente size
, confidence
, und iou
die der API sagt, dass die Inferenz bei Bildgröße 640 mit Konfidenz- und IoU-Schwellenwerten von 0,25 und 0,45 durchgeführt werden soll.
Dadurch werden die Abfrageparameter zusammen mit der Datei in der POST-Anfrage gesendet. In der folgenden Tabelle findest du eine vollständige Liste der verfügbaren Inferenzargumente.
Inferenz Argument | Standard | Typ | Anmerkungen |
---|---|---|---|
size |
640 |
int |
Gültiger Bereich ist 32 - 1280 Pixel |
confidence |
0.25 |
float |
Gültiger Bereich ist 0.01 - 1.0 |
iou |
0.45 |
float |
Gültiger Bereich ist 0.0 - 0.95 |
url |
'' |
str |
optionale Bild-URL, wenn keine Bilddatei übergeben wird |
normalize |
False |
bool |
Rückgabe JSON-Format
Die YOLO Inference API gibt eine JSON-Liste mit den Erkennungsergebnissen zurück. Das Format der JSON-Liste ist dasselbe wie das, das lokal von der results[0].tojson()
Befehl.
Die JSON-Liste enthält Informationen über die gefundenen Objekte, ihre Koordinaten, Klassen und Vertrauenswerte.
Modellformat erkennen
YOLO Erkennungsmodelle, wie zum Beispiel yolov8n.pt
können JSON-Antworten von Local Inference, cURL Inference und Python Inference zurückgegeben werden. Alle diese Methoden erzeugen das gleiche JSON-Antwortformat.
Modell erkennen JSON Antwort
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
}
}
]
}
Segment Modell Format
YOLO Segmentierungsmodelle, wie zum Beispiel yolov8n-seg.pt
können JSON-Antworten von Local Inference, cURL Inference und Python Inference zurückgegeben werden. Alle diese Methoden erzeugen das gleiche JSON-Antwortformat.
Segment Modell JSON Antwort
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())
Hinweis segments
x
und y
Längen können von einem Objekt zum anderen variieren. Größere oder komplexere Objekte können mehr Segmentpunkte haben.
{
"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
...
]
}
}
]
}
Pose Model Format
YOLO Posenmodelle, wie zum Beispiel yolov8n-pose.pt
können JSON-Antworten von Local Inference, cURL Inference und Python Inference zurückgegeben werden. Alle diese Methoden erzeugen das gleiche JSON-Antwortformat.
Pose Model JSON Antwort
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())
Beachte, dass die mit COCO-Keypoints vortrainierten Modelle 17 menschliche Keypoints haben werden. Die visible
Teil der Keypoints zeigt an, ob ein Keypoint sichtbar oder verdeckt ist. Verdeckte Keypoints können sich außerhalb des Bildes befinden oder nicht sichtbar sein, z. B. wenn die Augen einer Person von der Kamera abgewandt sind.
{
"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
...
]
}
}
]
}
Erstellt am 2024-01-23, Aktualisiert am 2024-03-06
Autoren: RizwanMunawar (1), glenn-jocher (3), priytosh-tripathi (1)