Bỏ để qua phần nội dung

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 API suy luận Ả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à:

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

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, confidenceiou đố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, confidenceiou, 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

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

Đị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

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

Ghi segments xy Độ 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

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

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)

Ý kiến