انتقل إلى المحتوى

YOLO واجهة برمجة تطبيقات الاستدلال

ال YOLO تسمح لك واجهة برمجة تطبيقات الاستدلال بالوصول إلى YOLOv8 قدرات الكشف عن الكائنات عبر واجهة برمجة تطبيقات RESTful. يمكنك هذا من تشغيل اكتشاف الكائنات على الصور دون الحاجة إلى تثبيت وإعداد YOLOv8 البيئة محليا.

لقطة شاشة لواجهة برمجة تطبيقات الاستدلال لقطة شاشة لقسم واجهة برمجة تطبيقات الاستدلال في علامة التبويب معاينة النموذج المدرب.



شاهد: Ultralytics إرشادات تفصيلية لواجهة برمجة تطبيقات الاستدلال HUB

عنوان URL لواجهة برمجة التطبيقات

عنوان URL لواجهة برمجة التطبيقات هو العنوان المستخدم للوصول إلى YOLO واجهة برمجة تطبيقات الاستدلال. في هذه الحالة، يكون عنوان URL الأساسي هو:

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

مثال على الاستخدام في Python

للوصول إلى YOLO واجهة برمجة تطبيقات الاستدلال مع النموذج المحدد ومفتاح واجهة برمجة التطبيقات باستخدام 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 باستخدام مفتاح API الفعلي الخاص بك ، MODEL_ID بمعرف الطراز المطلوب، و path/to/image.jpg مع المسار إلى الصورة التي تريد تحليلها.

مثال على الاستخدام مع cURL

يمكنك استخدام YOLO واجهة برمجة تطبيقات الاستدلال مع عنوان URL للعميل (cURL) من خلال استخدام curl أمر. استبدل API_KEY باستخدام مفتاح API الفعلي الخاص بك ، 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 واجهة برمجة تطبيقات الاستدلال مع المحدد MODEL_ID في عنوان URL و API_KEY في الطلب headers، جنبا إلى جنب مع ملف الصورة المحدد بواسطة @path/to/image.jpg.

فيما يلي مثال على تمرير size, confidenceو iou الوسيطات عبر عنوان 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 بثقة وعتبات IoU تبلغ 0.25 و 0.45.

سيؤدي هذا إلى إرسال معلمات الاستعلام مع الملف في طلب 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 ترجع واجهة برمجة تطبيقات الاستدلال قائمة 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-03-06
المؤلفون: رضوان منور (1) ، جلين جوشر (3) ، بريتوش تريباثي (1)

التعليقات