YOLO API suy luận
Các YOLO API suy luận cho phép bạn truy cập YOLOv8 khả năng phát hiện đối tượng thông qua API RESTful. Điều này cho phép bạn chạy phát hiện đối tượng trên hình ảnh mà không cần cài đặt và thiết lập YOLOv8 môi trường tại địa phương.
Ảnh chụp màn hình của phần API suy luận trong tab Xem trước mô hình đã đào tạo.
Xem: Ultralytics Hướng dẫn về API suy luận HUB
API URL
URL API là địa chỉ được sử dụng để truy cập YOLO API suy luận. Trong trường hợp này, URL cơ sở là:
Ví dụ sử dụng trong Python
Để truy cập YOLO API suy luận với mô hình và khóa API được chỉ định bằng cách sử dụng Python, bạn có thể sử dụng mã sau:
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())
Trong ví dụ này, thay thế API_KEY
với khóa API thực của bạn, MODEL_ID
với ID kiểu máy mong muốn và path/to/image.jpg
với đường dẫn đến hình ảnh mà bạn muốn phân tích.
Ví dụ Sử dụng với cURL
Bạn có thể sử dụng YOLO API suy luận với URL máy khách (cURL) bằng cách sử dụng curl
lệnh. Thay thế API_KEY
với khóa API thực của bạn, MODEL_ID
với ID kiểu máy mong muốn và image.jpg
Với đường dẫn đến hình ảnh bạn muốn phân tích:
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"
Vượt qua các đối số
Lệnh này sẽ gửi một yêu cầu POST đến YOLO API suy luận với API được chỉ định MODEL_ID
trong URL và API_KEY
trong yêu cầu headers
, cùng với tệp hình ảnh được chỉ định bởi @path/to/image.jpg
.
Dưới đây là một ví dụ về việc vượt qua size
, confidence
và iou
đối số thông qua URL API bằng cách sử dụng requests
Thư viện trong 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())
Trong ví dụ này, các data
Từ điển chứa các đối số truy vấn size
, confidence
và iou
, yêu cầu API chạy suy luận ở kích thước hình ảnh 640 với độ tin cậy và ngưỡng IoU là 0,25 và 0,45.
Thao tác này sẽ gửi các tham số truy vấn cùng với tệp trong yêu cầu POST. Xem bảng dưới đây để biết danh sách đầy đủ các đối số suy luận có sẵn.
Lập luận suy luận | Mặc định | Kiểu | Ghi chú |
---|---|---|---|
size |
640 |
int |
Phạm vi hợp lệ là 32 - 1280 Pixel |
confidence |
0.25 |
float |
Phạm vi hợp lệ là 0.01 - 1.0 |
iou |
0.45 |
float |
Phạm vi hợp lệ là 0.0 - 0.95 |
url |
'' |
str |
URL hình ảnh tùy chọn nếu không phải tệp hình ảnh được chuyển |
normalize |
False |
bool |
Trả về định dạng JSON
Các YOLO API suy luận trả về danh sách JSON với kết quả phát hiện. Định dạng của danh sách JSON sẽ giống như định dạng được sản xuất cục bộ bởi results[0].tojson()
lệnh.
Danh sách JSON chứa thông tin về các đối tượng được phát hiện, tọa độ, lớp và điểm tin cậy của chúng.
Phát hiện định dạng mô hình
YOLO các mô hình phát hiện, chẳng hạn như yolov8n.pt
, có thể trả về phản hồi JSON từ suy luận cục bộ, suy luận cURL và Python suy luận. Tất cả các phương thức này tạo ra cùng một định dạng phản hồi JSON.
Phát hiện phản hồi JSON mô hình
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
}
}
]
}
Định dạng mô hình phân đoạn
YOLO Mô hình phân khúc, chẳng hạn như yolov8n-seg.pt
, có thể trả về phản hồi JSON từ suy luận cục bộ, suy luận cURL và Python suy luận. Tất cả các phương thức này tạo ra cùng một định dạng phản hồi JSON.
Phản hồi JSON mô hình phân đoạn
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())
Ghi segments
x
và y
Độ dài có thể thay đổi từ đối tượng này sang đối tượng khác. Các đối tượng lớn hơn hoặc phức tạp hơn có thể có nhiều điểm phân đoạn hơn.
{
"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
...
]
}
}
]
}
Định dạng mô hình tư thế
YOLO Mô hình tạo dáng, chẳng hạn như yolov8n-pose.pt
, có thể trả về phản hồi JSON từ suy luận cục bộ, suy luận cURL và Python suy luận. Tất cả các phương thức này tạo ra cùng một định dạng phản hồi JSON.
Pose Model JSON Response
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())
Lưu ý: Các mô hình được đào tạo sẵn COCO-keypoints sẽ có 17 điểm chính của con người. Các visible
Một phần của các điểm chính cho biết liệu một điểm chính có thể nhìn thấy hay bị che khuất. Các điểm chính bị che khuất có thể nằm ngoài hình ảnh hoặc có thể không nhìn thấy được, tức là mắt của một người hướng ra khỏi máy ảnh.
{
"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
...
]
}
}
]
}
Đã tạo 2024-01-23, Cập nhật 2024-03-06
Tác giả: RizwanMunawar (1), glenn-jocher (3), priytosh-tripathi (1)