İçeriğe geç

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.

Çıkarım API Ekran Görüntüsü 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:

https://api.ultralytics.com/v1/predict

Ö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 headerstarafından belirtilen görüntü dosyası ile birlikte @path/to/image.jpg.

İşte bir geçiş örneği size, confidenceve 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, confidenceve iouAPI'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

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].tojson())
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"
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ı

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://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"
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ı

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://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"
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)

Yorumlar