YOLO Çıkarım API'si
YOLO Inference API, RESTful API aracılığıyla YOLOv8 nesne algılama özelliklerine erişmenizi sağlar. Bu, YOLOv8 ortamını yerel olarak kurmanıza ve ayarlamanıza gerek kalmadan görüntüler üzerinde nesne algılamayı çalıştırmanıza olanak tanır.
Eğitilmiş model Önizleme sekmesindeki Çıkarım API bölümünün ekran görüntüsü.
İzle: Ultralytics HUB Çıkarım API'si İzlenecek Yol
API URL'SI
API URL'si, YOLO Inference API'sine erişmek için kullanılan adrestir. Bu durumda, temel URL şöyledir:
Örnek Kullanım Python
Python adresini kullanarak belirtilen model ve API anahtarı ile YOLO Inference API'sine erişmek için aşağıdaki kodu kullanabilirsiniz:
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())
Bu örnekte, şunları değiştirin API_KEY
gerçek API anahtarınız ile, MODEL_ID
istenen model kimliği ile ve path/to/image.jpg
ile analiz etmek istediğiniz görüntünün yolunu girin.
cURL ile Örnek Kullanım
YOLO Çıkarım API'sini istemci URL'si (cURL) ile şu şekilde kullanabilirsiniz curl
Komut. Değiştir API_KEY
gerçek API anahtarınız ile, MODEL_ID
istenen model kimliği ile ve image.jpg
ile analiz etmek istediğiniz görüntünün yolunu girin:
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"
Argümanları Geçme
Bu komut, YOLO Inference API'sine belirtilen şekilde bir POST isteği gönderir MODEL_ID
URL'de ve API_KEY
istekte headers
tarafından belirtilen görüntü dosyası ile birlikte @path/to/image.jpg
.
İşte bir geçiş örneği size
, confidence
ve iou
kullanarak API URL'si aracılığıyla argümanlar requests
Python adresindeki kütüphane:
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())
Bu örnekte, aşağıdaki data
sözlüğü sorgu argümanlarını içerir size
, confidence
ve iou
API'ye 640 görüntü boyutunda 0,25 ve 0,45 güven ve IoU eşik değerleriyle çıkarım yapmasını söyler.
Bu, sorgu parametrelerini POST isteğindeki dosyayla birlikte gönderecektir. Kullanılabilir çıkarım argümanlarının tam listesi için aşağıdaki tabloya bakın.
Çıkarım Argümanı | Varsayılan | Tip | Notlar |
---|---|---|---|
size |
640 |
int |
geçerli aralık 32 - 1280 pikseller |
confidence |
0.25 |
float |
geçerli aralık 0.01 - 1.0 |
iou |
0.45 |
float |
geçerli aralık 0.0 - 0.95 |
url |
'' |
str |
resim dosyası geçilmediyse isteğe bağlı resim URL'si |
normalize |
False |
bool |
JSON biçiminde döndür
YOLO Inference API, tespit sonuçlarını içeren bir JSON listesi döndürür. JSON listesinin biçimi, aşağıdaki API tarafından yerel olarak üretilen liste ile aynı olacaktır results[0].tojson()
Komuta.
JSON listesi, tespit edilen nesneler, koordinatları, sınıfları ve güven puanları hakkında bilgiler içerir.
Model Formatını Algıla
YOLO algılama modelleri, örneğin yolov8n.pt
, yerel çıkarım, cURL çıkarımı ve Python çıkarımından JSON yanıtları döndürebilir. Bu yöntemlerin tümü aynı JSON yanıt biçimini üretir.
Model JSON Yanıtını Algıla
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 Model Formatı
YOLO segmentasyon modelleri, örneğin yolov8n-seg.pt
, yerel çıkarım, cURL çıkarımı ve Python çıkarımından JSON yanıtları döndürebilir. Bu yöntemlerin tümü aynı JSON yanıt biçimini üretir.
Segment Modeli JSON Yanıtı
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())
Not segments
x
ve y
uzunlukları bir nesneden diğerine değişebilir. Daha büyük veya daha karmaşık nesneler daha fazla segment noktasına sahip olabilir.
{
"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
...
]
}
}
]
}
Poz Modeli Formatı
YOLO poz modelleri, örneğin yolov8n-pose.pt
, yerel çıkarım, cURL çıkarımı ve Python çıkarımından JSON yanıtları döndürebilir. Bu yöntemlerin tümü aynı JSON yanıt biçimini üretir.
Poz Modeli JSON Yanıtı
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())
COCO anahtar noktaları ön eğitimli modellerin 17 insan anahtar noktasına sahip olacağını unutmayın. Bu visible
Anahtar noktaların bir kısmı bir anahtar noktanın görünür mü yoksa gizlenmiş mi olduğunu gösterir. Gizlenmiş anahtar noktalar görüntünün dışında olabilir veya görünmeyebilir, örneğin bir kişinin gözleri kameradan uzağa bakıyor olabilir.
{
"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
...
]
}
}
]
}
Oluşturuldu 2024-01-23, Güncellendi 2024-03-06
Yazarlar: RizwanMunawar (1), glenn-jocher (3), priytosh-tripathi (1)