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.

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:
- Điều hướng đến mô hình của bạn
- Nhấp vào tab Dự đoán
- Tải ảnh lên, sử dụng ví dụ hoặc mở webcam của bạn.
- Xem ngay các dự đoán với lớp phủ khung giới hạn.

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ức | Mô tả |
|---|---|
| Tải ảnh lên | Kéo và thả hoặc nhấp để tải lên một hình ảnh |
| Ví dụ hình ảnh | Nhấp vào các ví dụ tích hợp sẵn (hình ảnh tập dữ liệu hoặc mặc định) |
| Chụp bằng webcam | Hì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
- Tự động suy luận: Kết quả xuất hiện tự động sau khi tải lên
Tự động Suy luận
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:
| Ảnh | Nội dung |
|---|---|
bus.jpg | Cảnh đường phố với phương tiện |
zidane.jpg | Cả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 nguồn cấp dữ liệu camera trực tiếp:
- Cấp quyền truy cập camera khi được yêu cầu.
- Nhấp vào bản xem trước video để chụp một khung hình
- Quá trình suy luận diễn ra tự động trên khung hình đã chụp.
- Nhấp lại để khởi động lại webcam
Xem kết quả
Hiển thị kết quả suy luận:
- Hộp giới hạn với nhãn lớp dưới dạng lớp phủ SVG
- Điểm tin cậy cho mỗi lần detect
- Màu sắc lớp từ bảng màu của bộ dữ liệu của bạn (hoặc bảng màu mặc định của Ultralytics)
- Phân tích tốc độ: Tiền xử lý, suy luận, hậu xử lý và thời gian mạng

Bảng kết quả hiển thị như sau:
| Trường | Mô tả |
|---|---|
| Danh sách các phát hiện | Mỗ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 JSON | Phản hồi API thô trong khối mã |
Tham số suy luận
Điều chỉnh hành vi detect bằng các tham số trong phần Parameters có thể thu gọn:

| Tham số | Phạm vi | Mặc định | Mô tả |
|---|---|---|---|
| Ngưỡng tin cậy | 0.01-1.0 | 0.25 | Ngưỡng tin cậy tối thiểu |
| IoU | 0.0-0.95 | 0.70 | Ngưỡng IoU NMS |
| Kích thước hình ảnh | 320, 640, 1280 | 640 | Nhậ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 suy luận trên hình ảnh hiện tại với độ trễ 500ms. Không cần tải lên lại.
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
Yêu cầu 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 trên 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);

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.x.x",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}

Các trường phản hồi
| Trường | Loại | Mô tả |
|---|---|---|
images | mảng | Danh sách hình ảnh đã xử lý |
images[].shape | mảng | Kích thước hình ảnh [chiều cao, chiều rộng] |
images[].results | mảng | Danh sách các detect |
images[].results[].name | chuỗi | Tên lớp |
images[].results[].confidence | số thực | Độ tin cậy của detect (0-1) |
images[].results[].box | đối tượng | Tọa độ hộp giới hạn |
images[].speed | đối tượng | Thời gian xử lý tính bằng mili giây |
metadata | đối tượng | Yê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}
}
Thanh toán
Suy luận chung (tab Dự đoán và /api/models/{id}/predict điểm cuối) là Bao gồm miễn phí. trên tất cả các gói dịch vụ. Không có phí cho mỗi yêu cầu đối với suy luận dùng chung.
Đối với các tác vụ sản xuất yêu cầu thông lượng cao hơn, hãy triển khai một điểm cuối chuyên dụng .
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 API. Khi bị giới hạn tốc độ, API 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 điểm cuối chuyên dụng để suy luận không giới hạn mà không có 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. Để suy luận cục bộ, hãy xem hướng dẫn chế độ Predict.
Xử lý lỗi
Các phản hồi lỗi thường gặp:
| Mã | Thông báo | Giải pháp |
|---|---|---|
| 400 | Ảnh không hợp lệ | Kiểm tra định dạng tệp |
| 401 | Không được ủy quyền | Xác minh khóa API |
| 404 | Không tìm thấy mô hình | Kiểm tra ID mô hình |
| 429 | Bị 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. |
| 500 | Lỗ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?
Điều đó phụ thuộc vào phương pháp suy luận:
- Điểm cuối chuyên dụng chấp nhận trực tiếp các tệp video. Các định dạng được hỗ trợ (tối đa 100MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Mỗi khung hình được xử lý riêng lẻ và kết quả được trả về theo từng khung hình. Xem điểm cuối chuyên dụng để biết chi tiết.
- Suy luận chung (
/api/models/{id}/predict) chỉ chấp nhận hình ảnh. Đối với video, hãy trích xuất các khung hình cục bộ, gửi mỗi khung hình dưới dạng một yêu cầu riêng biệt và tổng hợp kết quả.
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:
- Sử dụng các dự đoán để vẽ hộp cục bộ
- 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: Hình ảnh được thay đổi kích thước theo
Image Sizetham 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):
- Gửi các yêu cầu đồng thời
- Sử dụng điểm cuối chuyên dụng để đạt thông lượng cao hơn
- Cân nhắc suy luận cục bộ cho các lô lớn
Suy luận theo lô 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))