सामग्री पर जाएं

YOLO अनुमान एपीआई

वही YOLO Inference API आपको YOLOv8 एक RESTful API के माध्यम से ऑब्जेक्ट डिटेक्शन क्षमताएं। यह आपको स्थापित करने और सेट करने की आवश्यकता के बिना छवियों पर ऑब्जेक्ट डिटेक्शन चलाने में सक्षम बनाता है YOLOv8 स्थानीय स्तर पर पर्यावरण।

Inference API स्क्रीनशॉट प्रशिक्षित मॉडल पूर्वावलोकन टैब में अनुमान API अनुभाग का स्क्रीनशॉट.

एपीआई यूआरएल

API URL वह पता है जिसका उपयोग YOLO अनुमान API. इस स्थिति में, आधार URL है:

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

उदाहरण में उपयोग Python

एक्सेस करने के लिए YOLO निर्दिष्ट मॉडल और API कुंजी का उपयोग करके अनुमान API 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())

इस उदाहरण में, प्रतिस्थापित करें API_KEY अपनी वास्तविक एपीआई कुंजी के साथ, MODEL_ID वांछित मॉडल आईडी के साथ, और path/to/image.jpg उस छवि के पथ के साथ जिसका आप विश्लेषण करना चाहते हैं।

cURL के साथ उदाहरण उपयोग

आप उपयोग कर सकते हैं YOLO क्लाइंट URL (cURL) के साथ Inference API curl आज्ञा। बदलें API_KEY अपनी वास्तविक एपीआई कुंजी के साथ, MODEL_ID वांछित मॉडल आईडी के साथ, और image.jpg उस छवि के पथ के साथ जिसका आप विश्लेषण करना चाहते हैं:

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"

तर्क पारित करना

यह आदेश एक POST अनुरोध भेजता है YOLO निर्दिष्ट के साथ अनुमान API MODEL_ID URL में और API_KEY अनुरोध में headers, द्वारा निर्दिष्ट छवि फ़ाइल के साथ @path/to/image.jpg.

यहाँ पास करने का एक उदाहरण है size, confidenceऔर iou API URL के माध्यम से तर्क requests पुस्तकालय में 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())

इस उदाहरण में, data शब्दकोश में क्वेरी तर्क हैं size, confidenceऔर iou, जो एपीआई को आत्मविश्वास के साथ छवि आकार 640 पर अनुमान चलाने और 0.25 और 0.45 के IoU थ्रेसहोल्ड को चलाने के लिए कहता है।

यह POST अनुरोध में फ़ाइल के साथ क्वेरी पैरामीटर भेजेगा। उपलब्ध अनुमान तर्कों की पूरी सूची के लिए नीचे दी गई तालिका देखें।

अनुमान तर्क चूक प्रकार नोट्स
size 640 int मान्य सीमा है 32 - 1280 पिक्सेल
confidence 0.25 float मान्य सीमा है 0.01 - 1.0
iou 0.45 float मान्य सीमा है 0.0 - 0.95
url '' str वैकल्पिक छवि URL यदि छवि फ़ाइल पास नहीं की गई है
normalize False bool

JSON प्रारूप लौटाएं

वही YOLO Inference API, डिटेक्शन परिणामों के साथ JSON सूची लौटाता है. JSON सूची का प्रारूप वही होगा जो स्थानीय रूप से उत्पादित किया गया था results[0].tojson() आज्ञा।

JSON सूची में पता लगाई गई वस्तुओं, उनके निर्देशांक, कक्षाओं और आत्मविश्वास स्कोर के बारे में जानकारी होती है।

मॉडल प्रारूप का पता लगाएं

YOLO डिटेक्शन मॉडल, जैसे yolov8n.pt, स्थानीय अनुमान से JSON प्रतिक्रियाएं लौटा सकते हैं, cURL अनुमान, और Python अनुमान। ये सभी विधियां समान JSON प्रतिक्रिया प्रारूप का उत्पादन करती हैं।

मॉडल JSON प्रतिक्रिया का पता लगाएं

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
      }
    }
  ]
}

सेगमेंट मॉडल प्रारूप

YOLO विभाजन मॉडल, जैसे yolov8n-seg.pt, स्थानीय अनुमान से JSON प्रतिक्रियाएं लौटा सकते हैं, cURL अनुमान, और Python अनुमान। ये सभी विधियां समान JSON प्रतिक्रिया प्रारूप का उत्पादन करती हैं।

सेगमेंट मॉडल JSON प्रतिक्रिया

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())

नोट segments x और y लंबाई एक वस्तु से दूसरी वस्तु में भिन्न हो सकती है। बड़ी या अधिक जटिल वस्तुओं में अधिक खंड बिंदु हो सकते हैं।

{
  "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
          ...
        ]
      }
    }
  ]
}

पोज़ मॉडल प्रारूप

YOLO पोज़ मॉडल, जैसे yolov8n-pose.pt, स्थानीय अनुमान से JSON प्रतिक्रियाएं लौटा सकते हैं, cURL अनुमान, और Python अनुमान। ये सभी विधियां समान JSON प्रतिक्रिया प्रारूप का उत्पादन करती हैं।

पोज़ मॉडल JSON प्रतिक्रिया

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-कीपॉइंट्स प्रीट्रेन्ड मॉडल में 17 मानव कीपॉइंट होंगे। वही visible मुख्य बिंदुओं का भाग इंगित करता है कि कोई कीपॉइंट दृश्यमान है या अस्पष्ट। अस्पष्ट कीपॉइंट छवि के बाहर हो सकते हैं या दिखाई नहीं दे सकते हैं, यानी किसी व्यक्ति की आँखें कैमरे से दूर की ओर हो सकती हैं।

{
  "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
          ...
        ]
      }
    }
  ]
}



2024-01-23 बनाया गया, अपडेट किया गया 2024-02-13
लेखक: ग्लेन-जोचर (3), प्रियतोष-त्रिपाठी (1)

टिप्पणियाँ