YOLO واجهة برمجة تطبيقات الاستدلال
ال YOLO تسمح لك واجهة برمجة تطبيقات الاستدلال بالوصول إلى YOLOv8 قدرات الكشف عن الكائنات عبر واجهة برمجة تطبيقات RESTful. يمكنك هذا من تشغيل اكتشاف الكائنات على الصور دون الحاجة إلى تثبيت وإعداد YOLOv8 البيئة محليا.
لقطة شاشة لقسم واجهة برمجة تطبيقات الاستدلال في علامة التبويب معاينة النموذج المدرب.
شاهد: Ultralytics إرشادات تفصيلية لواجهة برمجة تطبيقات الاستدلال HUB
عنوان URL لواجهة برمجة التطبيقات
عنوان URL لواجهة برمجة التطبيقات هو العنوان المستخدم للوصول إلى YOLO واجهة برمجة تطبيقات الاستدلال. في هذه الحالة، يكون عنوان URL الأساسي هو:
مثال على الاستخدام في 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
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 لنموذج المقطع
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
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)