Chuyển đến nội dung

Suy luận

Nền tảng Ultralytics Cung cấp API suy luận để kiểm tra các mô hình đã được huấn luyện. Sử dụng giao diện dựa trên trình duyệt. Predict tab để xác thực nhanh hoặc REST API để truy cập theo chương trình.

Ultralytics Mô hình nền tảng Dự đoán tab với lớp phủ phát hiện

Tab Dự đoán

Mỗi mẫu đều bao gồm một Predict tab dành cho suy luận dựa trên trình duyệt:

  1. Điều hướng đến mô hình của bạn
  2. Nhấp vào tab Dự đoán
  3. Tải ảnh lên, sử dụng ví dụ hoặc mở webcam của bạn.
  4. Xem ngay các dự đoán với lớp phủ khung giới hạn.

Ultralytics Nền tảng Dự đoán Tab Tải ảnh lên Vùng thả

Phương thức nhập liệu

Bảng dự đoán hỗ trợ nhiều phương thức nhập liệu:

Phương thứcMô tả
Tải ảnh lênKéo và thả hoặc nhấp chuột để tải ảnh lên.
Ví dụ hình ảnhNhấp vào các ví dụ có sẵn (hình ảnh bộ dữ liệu hoặc giá trị mặc định)
Chụp bằng webcamHình ảnh camera trực tiếp với khả năng chụp từng khung hình.
graph LR
    A[Upload Image] --> D[Auto-Inference]
    B[Example Image] --> D
    C[Webcam Capture] --> D
    D --> E[Results + Overlays]

    style D fill:#2196F3,color:#fff
    style E fill:#4CAF50,color:#fff

Tải lên hình ảnh

Kéo và thả hoặc nhấp để tải lên:

  • Các định dạng được hỗ trợ : JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP, DNG, MPO
  • Kích thước tối đa: 10MB
  • Suy luận tự động : Kết quả hiển thị tự động sau khi tải lên.

Suy luận tự động

Bảng dự đoán tự động thực hiện suy luận khi bạn tải ảnh lên, chọn ví dụ hoặc chụp khung hình từ webcam. Không cần nhấn nút nào.

Hình ảnh ví dụ

Bảng dự đoán hiển thị các hình ảnh ví dụ từ tập dữ liệu được liên kết với mô hình của bạn. Nếu không có tập dữ liệu nào được liên kết, các ví dụ mặc định sẽ được sử dụng:

ẢnhNội dung
bus.jpgCảnh đường phố với phương tiện
zidane.jpgCảnh thể thao với người

Đối với các mô hình OBB, hình ảnh trên không của tàu thuyền và sân bay sẽ được hiển thị.

Hình ảnh được tải trước

Các hình ảnh ví dụ được tải trước khi trang khởi chạy, vì vậy việc nhấp vào một hình ảnh ví dụ sẽ kích hoạt quá trình suy luận gần như tức thì mà không cần chờ tải xuống.

Webcam

Nhấp vào thẻ webcam để bắt đầu xem trực tiếp:

  1. Cấp quyền truy cập camera khi được yêu cầu.
  2. Nhấp vào xem trước video để chụp ảnh màn hình.
  3. Quá trình suy luận diễn ra tự động trên khung hình đã chụp.
  4. Nhấp chuột lại để khởi động lại webcam

Xem kết quả

Hiển thị kết quả suy luận:

  • Các hộp giới hạn có nhãn lớp dưới dạng lớp phủ SVG
  • Điểm tin cậy cho mỗi lần detect
  • Chọn màu sắc cho từng lớp từ bảng màu của tập dữ liệu (hoặc Ultralytics bảng màu mặc định)
  • Phân tích tốc độ : Thời gian tiền xử lý, suy luận, hậu xử lý và thời gian mạng.

Ultralytics Nền tảng dự đoán kết quả tab với tính năng phát hiện và thống kê tốc độ.

Bảng kết quả hiển thị như sau:

TrườngMô tả
Danh sách phát hiệnMỗi lần phát hiện đều kèm theo tên lớp và độ tin cậy.
Thông số tốc độTiền xử lý, suy luận, hậu xử lý, mạng (ms)
Phản hồi JSONPhản hồi API thô trong khối mã

Tham số suy luận

Điều chỉnh hành vi phát hiện bằng các tham số trong phần Tham số có thể thu gọn:

Ultralytics Thanh trượt tham số tab Dự đoán Nền tảng

Tham sốPhạm viMặc địnhMô tả
Ngưỡng tin cậy0,01-1,00.25Ngưỡng tin cậy tối thiểu
IoU0,0-0,950.70Ngưỡng IoU NMS
Kích thước hình ảnh320, 640, 1280640Nhập kích thước thay đổi (nút chuyển đổi)

Tự động chạy lại

Việc thay đổi bất kỳ tham số nào sẽ tự động chạy lại quá trình suy luận trên ảnh hiện tại với độ trễ 500ms. Không cần tải lại ảnh.

Ngưỡng tin cậy

Lọc dự đoán theo độ tin cậy:

  • Cao hơn (0.5+): Ít dự đoán hơn, độ chính xác cao hơn
  • Thấp hơn (0.1-0.25): Nhiều dự đoán hơn, có thể có nhiễu
  • Mặc định (0.25): Cân bằng cho hầu hết các trường hợp sử dụng

Ngưỡng IoU

Điều khiển Non-Maximum Suppression:

  • Cao hơn (0,7 trở lên) : Cho phép nhiều hộp chồng lên nhau hơn
  • Thấp hơn (0,3-0,5) : Kết hợp các phát hiện gần đó một cách mạnh mẽ hơn
  • Mặc định (0.70) : Cân bằng NMS hành vi đối với hầu hết các trường hợp sử dụng

Dự đoán triển khai

Mỗi lần chạy điểm cuối chuyên dụng bao gồm một Predict Nhấp chuột trực tiếp vào thẻ triển khai. Thao tác này sử dụng dịch vụ suy luận riêng của quá trình triển khai thay vì dịch vụ dự đoán dùng chung, cho phép bạn kiểm tra điểm cuối đã triển khai từ trình duyệt.

REST API

Truy cập suy luận theo chương trình:

Xác thực

Bao gồm khóa API của bạn trong các yêu cầu:

Authorization: Bearer YOUR_API_KEY

Cần có khóa API

Để chạy suy luận từ các tập lệnh, sổ tay hoặc ứng dụng của riêng bạn, hãy bao gồm khóa API. Tạo khóa đó trong Settings (Mục Khóa API trong tab Hồ sơ).

Điểm cuối

POST https://platform.ultralytics.com/api/models/{modelId}/predict

Yêu cầu

import requests

url = "https://platform.ultralytics.com/api/models/MODEL_ID/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("image.jpg", "rb")}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}

response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
curl -X POST \
  "https://platform.ultralytics.com/api/models/MODEL_ID/predict" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@image.jpg" \
  -F "conf=0.25" \
  -F "iou=0.7" \
  -F "imgsz=640"
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("conf", "0.25");
formData.append("iou", "0.7");
formData.append("imgsz", "640");

const response = await fetch(
  "https://platform.ultralytics.com/api/models/MODEL_ID/predict",
  {
    method: "POST",
    headers: { Authorization: "Bearer YOUR_API_KEY" },
    body: formData,
  }
);

const result = await response.json();
console.log(result);

Ultralytics Ví dụ mã tab dự đoán nền tảng Python Tab

Phản hồi

{
    "images": [
        {
            "shape": [1080, 1920],
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                },
                {
                    "class": 2,
                    "name": "car",
                    "confidence": 0.87,
                    "box": { "x1": 400, "y1": 200, "x2": 600, "y2": 350 }
                }
            ],
            "speed": {
                "preprocess": 1.2,
                "inference": 12.5,
                "postprocess": 2.3
            }
        }
    ],
    "metadata": {
        "imageCount": 1,
        "functionTimeCall": 0.018,
        "model": "model.pt",
        "version": {
            "ultralytics": "8.4.14",
            "torch": "2.6.0",
            "torchvision": "0.21.0",
            "python": "3.13.0"
        }
    }
}

Ultralytics Chế độ xem phản hồi JSON của tab Dự đoán Nền tảng

Các trường phản hồi

TrườngLoạiMô tả
imagesmảngDanh sách hình ảnh đã xử lý
images[].shapemảngKích thước hình ảnh [chiều cao, chiều rộng]
images[].resultsmảngDanh sách các detect
images[].results[].namechuỗiTên lớp
images[].results[].confidencesố thựcĐộ tin cậy của detect (0-1)
images[].results[].boxđối tượngTọa độ hộp giới hạn
images[].speedđối tượngThời gian xử lý tính bằng mili giây
metadatađối tượngYêu cầu thông tin siêu dữ liệu và phiên bản

Phản hồi theo tác vụ cụ thể

Định dạng phản hồi thay đổi theo tác vụ:

{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}
{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "segments": [[100, 50], [150, 60], ...]
}
{
  "class": 0,
  "name": "person",
  "confidence": 0.92,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "keypoints": [
    {"x": 200, "y": 75, "conf": 0.95},
    ...
  ]
}
{
  "results": [
    {"class": 0, "name": "cat", "confidence": 0.95},
    {"class": 1, "name": "dog", "confidence": 0.03}
  ]
}
{
  "class": 0,
  "name": "ship",
  "confidence": 0.89,
  "box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400},
  "obb": {"x1": 105, "y1": 48, "x2": 295, "y2": 55, "x3": 290, "y3": 395, "x4": 110, "y4": 402}
}

Giới hạn tốc độ

Suy luận chung bị giới hạn tốc độ ở mức 20 yêu cầu/phút cho mỗi khóa APIKhi bị hạn chế tốc độ, API sẽ trả về... 429 với một Retry-After tiêu đề. Xem toàn bộ tham chiếu giới hạn tỷ lệ cho tất cả các loại điểm cuối.

Cần thông lượng cao hơn?

Triển khai một điểm cuối chuyên dụng để suy luận không giới hạn , không giới hạn tốc độ, thông lượng có thể dự đoán được và phản hồi độ trễ thấp nhất quán. Để biết thêm thông tin về suy luận cục bộ, hãy xem hướng dẫn về chế độ Dự đoán .

Xử lý lỗi

Các phản hồi lỗi thường gặp:

Thông báoGiải pháp
400Ảnh không hợp lệKiểm tra định dạng tệp
401Không được ủy quyềnXác minh khóa API
404Không tìm thấy mô hìnhKiểm tra mã số mẫu
429Bị giới hạn tốc độChờ và thử lại, hoặc sử dụng điểm cuối chuyên dụng để có thông lượng không giới hạn.
500Lỗi máy chủThử lại yêu cầu

Câu hỏi thường gặp

Tôi có thể chạy suy luận trên video không?

API chấp nhận các khung hình riêng lẻ. Đối với video:

  1. Trích xuất khung hình cục bộ
  2. Gửi từng khung hình đến API
  3. Tổng hợp kết quả

Đối với video thời gian thực, hãy cân nhắc triển khai một điểm cuối chuyên dụng.

Làm cách nào để lấy hình ảnh đã được chú thích?

API trả về các dự đoán JSON. Để trực quan hóa:

  1. Sử dụng các dự đoán để vẽ hộp cục bộ
  2. Sử dụng Ultralytics plot() phương thức:
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model("image.jpg")
results[0].save("annotated.jpg")

Xem tài liệu về chế độ Dự đoán để biết đầy đủ API kết quả và các tùy chọn trực quan hóa.

Kích thước hình ảnh tối đa là bao nhiêu?

  • Giới hạn tải lên: 10MB
  • Recommended: <5MB for fast inference
  • Tự động thay đổi kích thướcẢnh được điều chỉnh kích thước cho phù hợp với ảnh đã chọn. Image Size tham số

Các hình ảnh lớn được tự động thay đổi kích thước trong khi vẫn giữ nguyên tỷ lệ khung hình.

Tôi có thể chạy suy luận theo lô không?

API hiện tại xử lý một hình ảnh cho mỗi yêu cầu. Đối với xử lý theo lô (batch):

  1. Gửi các yêu cầu đồng thời
  2. Sử dụng điểm cuối chuyên dụng để đạt thông lượng cao hơn
  3. Cân nhắc suy luận cục bộ cho các lô lớn

Suy luận hàng loạt với Python

import concurrent.futures

import requests

url = "https://predict-abc123.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
images = ["img1.jpg", "img2.jpg", "img3.jpg"]


def predict(image_path):
    with open(image_path, "rb") as f:
        return requests.post(url, headers=headers, files={"file": f}).json()


with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
    results = list(executor.map(predict, images))


📅 Được tạo 1 tháng trước ✍️ Cập nhật 5 ngày trước
glenn-jochersergiuwaxmannLaughing-q

Bình luận