Suy luận#
Ultralytics Platform cung cấp inference trên trình duyệt để kiểm thử các model đã huấn luyện và endpoint chuyên dụng để truy cập theo chương trình.

Tab Predict#
Mỗi model có weights đều có tab Predict để chạy inference trên trình duyệt:
- Điều hướng đến model của bạn
- Nhấp vào tab Predict
- Tải ảnh lên, dùng ảnh mẫu hoặc mở webcam
- Xem lớp phủ theo tác vụ, tóm tắt dự đoán, thời gian và phản hồi thô
Model không có weights sẽ hiển thị trạng thái trống — trước tiên hãy huấn luyện model hoặc tải weights lên.

Phương thức đầu vào#
Bảng dự đoán hỗ trợ nhiều phương thức đầu vào:
| Phương thức | Mô tả |
|---|---|
| Tải ảnh lên | Kéo thả hoặc nhấp để tải ảnh lên |
| Ảnh mẫu | Nhấp vào ảnh mẫu tích hợp sẵn (ảnh trong dataset hoặc ảnh mặc định) |
| Chụp bằng webcam | Luồng camera trực tiếp với khả năng chụp từng khung hình |
| Camera IP | Luồng RTSP hoặc RTSPS trên deployment riêng của bạn |
graph LR
A[Upload Image]:::start --> D[Auto-Inference]:::proc
B[Example Image]:::start --> D
C[Webcam Capture]:::start --> D
D --> E[Results + Overlays]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fffTải ảnh lên#
Kéo thả hoặc nhấp để tải lên:
- Định dạng được hỗ trợ: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
- Kích thước tối đa: 10 MB
- Tự động inference: Kết quả tự động xuất hiện sau khi tải lên
Bảng dự đoán tự động chạy inference khi bạn tải ảnh lên, chọn ảnh mẫu hoặc chụp khung hình bằng webcam. Không cần nhấp nút.
Trước khi tải lên, bảng sẽ thay đổi kích thước ảnh để cạnh dài nhất khớp với Image Size đã chọn, đồng thời yêu cầu tọa độ đã chuẩn hóa. Cách này giúp kiểm thử trên trình duyệt nhanh hơn; các yêu cầu bạn tự gửi sẽ không được thay đổi kích thước.
Ảnh mẫu#
Bảng dự đoán hiển thị tối đa hai ảnh mẫu từ dataset được liên kết với model, ưu tiên split val, tiếp theo là test, rồi train. Nếu không liên kết dataset, hệ thống sẽ dùng ảnh mẫu mặc định:
| Ảnh | Nội dung |
|---|---|
bus.jpg | Cảnh đường phố có phương tiện |
zidane.jpg | Cảnh thể thao có người |
Đối với model OBB, thay vào đó sẽ hiển thị ảnh trên không chụp thuyền và sân bay.
Ảnh mẫu được tải sẵn khi trang tải xong, vì vậy nhấp vào ảnh mẫu sẽ kích hoạt inference gần như tức thì mà không phải chờ tải xuống.
Webcam#
Chọn Webcam phía trên vùng hình ảnh để bắt đầu luồng camera trực tiếp:
- Cấp quyền truy cập camera khi được nhắc
- Nhấp vào bản xem trước video để chụp một khung hình
- Inference tự động chạy trên khung hình đã chụp
- Nhấp Quay lại webcam để trở về luồng trực tiếp
Trên tab Predict của deployment riêng, webcam thay vào đó chạy inference liên tục. Xem Inference từ camera trực tiếp.
Xem kết quả#
Kết quả inference hiển thị đầu ra phù hợp với tác vụ của model: box, mask, keypoint, box định hướng, điểm phân loại, vùng bao phủ ngữ nghĩa hoặc bản đồ độ sâu. Kết quả đối tượng sử dụng màu lớp của dataset khi có sẵn. Bảng cũng hiển thị thời gian tiền xử lý, inference, hậu xử lý và mạng.

Bảng kết quả hiển thị:
| Trường | Mô tả |
|---|---|
| Tóm tắt kết quả | Danh sách từng phát hiện hoặc 5 lớp đứng đầu đối với model phân loại và ngữ nghĩa |
| Thống kê tốc độ | Tiền xử lý, inference, hậu xử lý và mạng (ms) |
| Phiên bản | Phiên bản Ultralytics và PyTorch, cùng với khoảng độ sâu hoặc kích thước mask nếu áp dụng |
| Phản hồi JSON | Phản hồi API thô trong khối mã, đã lược bỏ dữ liệu bản đồ base64 |
Khi có kết quả, hai điều khiển sẽ xuất hiện trên bản xem trước: nhấp vào ảnh để phóng to mà vẫn giữ nguyên lớp phủ, và dùng nút tải xuống để lưu ảnh JPEG có chú thích của kết quả hiện tại.
Tham số inference#
Điều chỉnh hành vi suy luận bằng ba thanh trượt bên dưới ảnh (model độ sâu chỉ hiển thị Kích thước ảnh):

| Tham số | Phạm vi | Mặc định | Mô tả |
|---|---|---|---|
| Confidence | 0.01 – 1.0, bước 0.01 | 0.25 | Ngưỡng confidence tối thiểu |
| IoU | 0.0 – 0.95, bước 0.01 | 0.7 | Ngưỡng IoU của NMS |
| Image Size | 32 – 1280, bước 32 | 640 | Kích thước chiều đầu vào sau khi resize |
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 sau khoảng chờ 500 ms. Không cần tải ảnh lên lại.
Ngưỡng confidence#
Lọc dự đoán theo confidence:
- Cao hơn (0.5+): Ít dự đoán hơn nhưng chắc chắn hơn
- Thấp hơn (0.1-0.25): Nhiều dự đoán hơn, nhưng có thể lẫn nhiễu
- Mặc định (0.25): Cân bằng cho hầu hết trường hợp sử dụng
Ngưỡng IoU#
Kiểm soát Non-Maximum Suppression:
- Cao hơn (0.7+): Cho phép nhiều BBox chồng lấp hơn
- Thấp hơn (0.3-0.5): Loại bỏ các detection chồng lấp quyết liệt hơn
- Mặc định (0.7): Cân bằng hành vi NMS cho hầu hết trường hợp sử dụng
Predict trên deployment#
Mỗi endpoint chuyên dụng đang chạy đều có một tab Predict trên trang deployment. Tab này sử dụng dịch vụ suy luận riêng của deployment thay vì dịch vụ predict dùng chung, cho phép bạn kiểm thử endpoint đã triển khai ngay trên trình duyệt.
Trên endpoint sẵn sàng hoạt động, ảnh đã xử lý cũng được tính vào tab Monitoring. Các ví dụ và biểu đồ tổng hợp trong tab Monitoring là dữ liệu tạm thời, gọn nhẹ được lưu trong bộ nhớ; việc dừng, khởi động lại, triển khai lại, thay đổi kích thước hoặc thay thế model có thể xóa dữ liệu này. Hãy lưu các ví dụ vào dataset để giữ lại.
Inference từ camera trực tiếp#
Trên tab Predict của deployment bạn sở hữu, chọn Webcam hoặc Camera IP để chạy endpoint trên video trực tiếp:
| Nguồn | Cách hoạt động |
|---|---|
| Webcam | Trình duyệt gửi từng frame đến endpoint và vẽ kết quả lên luồng trực tiếp |
| Camera IP | Nhập URL rtsp:// hoặc rtsps://, bao gồm mọi thông tin xác thực, rồi nhấp Kết nối; endpoint đọc camera và truyền từng kết quả trở lại |
Inference trực tiếp sử dụng API key được gắn với endpoint và chỉ chủ sở hữu workspace mới có thể tải API key này; với các thành viên nhóm khác, webcam chỉ chụp từng frame và Camera IP không khả dụng, tương tự tab Predict của model. Camera IP phải có thể truy cập từ internet: endpoint từ chối các địa chỉ mạng cục bộ như 192.168.x.x. Mỗi kết quả ứng với frame mới nhất, vì vậy các frame sẽ bị bỏ qua nếu inference xử lý không kịp. Thay đổi thanh trượt sẽ áp dụng cho frame webcam tiếp theo và khởi động lại luồng camera IP. Inference trực tiếp tạm dừng khi tab trình duyệt bị ẩn. Nhấp vào phần xem trước để chụp một frame, hoặc chọn Ngắt kết nối để dừng xem camera IP.
Camera chạy nền#
Endpoint có kích thước CPU và bộ nhớ tùy chỉnh có thể tiếp tục theo dõi một camera IP sau khi bạn ngắt kết nối hoặc đóng trang. Khi camera đã kết nối hiển thị kết quả, bật Tiếp tục chạy ở chế độ nền. Phần đầu deployment hiển thị Camera đang bật, và kết quả được gửi đến tab Monitoring dưới dạng ví dụ tạm thời cùng số liệu thống kê dự đoán.
- Cài đặt: Camera chạy nền luôn sử dụng confidence mặc định (0.25), IoU (0.7) và kích thước hình ảnh huấn luyện của model; các thanh trượt không áp dụng cho camera này.
- Chi phí: Camera chạy trên instance luôn sẵn sàng của endpoint mà không tính thêm phí; mức phí thời gian hoạt động theo giờ vẫn được áp dụng dù camera bật hay tắt.
- Thay đổi: Bật, tắt hoặc chuyển camera sẽ khởi động lại instance của endpoint. Việc này giữ endpoint ở trạng thái sẵn sàng nhưng xóa dữ liệu monitoring tạm thời.
- Dừng: Tắt công tắc. Ngắt kết nối hoặc đóng trang sẽ không dừng camera; thay đổi kích thước endpoint về kích thước mặc định sẽ loại bỏ camera. Nếu camera ngoại tuyến, endpoint tiếp tục thử kết nối lại.
- Vòng đời endpoint: Dừng endpoint sẽ dừng camera và các khoản phí; khởi động lại endpoint sẽ tiếp tục sử dụng camera đã lưu.
Endpoint kích thước mặc định hỗ trợ inference trực tiếp từ webcam và camera IP nhưng không có tùy chọn chạy nền. Để lưu camera chạy nền qua API, hãy sử dụng thao tác deployment camera.
Truyền kết quả từ API#
Gửi URL RTSP hoặc RTSPS dưới dạng source kèm header Accept: text/event-stream đến URL endpoint chuyên dụng để nhận kết quả dưới dạng sự kiện do máy chủ gửi:
curl -N -X POST \
"https://YOUR_DEPLOYMENT_URL.run.app/predict" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: text/event-stream" \
-F "source=rtsp://user:password@camera.example.com:554/stream" \
-F "conf=0.25"Mỗi sự kiện frame chứa images theo cấu trúc response, với tọa độ chuẩn hóa (0-1), URL dữ liệu JPEG preview của frame và metadata chứa tên tác vụ và class. Chỉ conf, iou và imgsz được áp dụng; việc truyền URL camera chạy nền của endpoint sẽ sử dụng cài đặt mặc định. Sự kiện chỉ có status sẽ không chứa frame; sự kiện có thông báo error (không đọc được camera hoặc endpoint không thể chạy model) sẽ kết thúc luồng. Luồng cũng đóng khi endpoint khởi động lại hoặc yêu cầu hết thời gian chờ; nếu luồng kết thúc mà không có lỗi, hãy kết nối lại với thời gian chờ tăng dần. Route dự đoán của Platform API và SDK không hỗ trợ truyền luồng; hãy gửi yêu cầu camera đến URL endpoint bằng API key được gắn với endpoint. Yêu cầu camera source không có header sẽ trả về 400.
API của endpoint chuyên dụng#
Thẻ API Docs trong tab Predict của model chứa các yêu cầu mẫu bằng Python, JavaScript và cURL, được điền sẵn các giá trị confidence, IoU và kích thước ảnh hiện đặt trên thanh trượt. URL và key chỉ là giá trị giữ chỗ cho đến khi bạn triển khai model — nút Deploy bên cạnh các tab mã sẽ chuyển đến tab Deploy của model. Sau khi triển khai, tab kết quả Docs trong tab Predict của trang deployment sẽ điền URL của endpoint đó và, với chủ sở hữu workspace, cả API key được liên kết, sẵn sàng để sao chép và chạy.
Xác thực#
Đưa API key vào các yêu cầu:
Authorization: Bearer YOUR_API_KEYĐể chạy suy luận từ script, notebook hoặc ứng dụng của riêng bạn, hãy đưa API key vào yêu cầu. Tạo API key trong Settings > API Keys. Endpoint chuyên dụng chỉ chấp nhận key duy nhất được tạo cùng endpoint đó; API model dùng chung chấp nhận mọi key đang hoạt động trong workspace, còn model công khai cũng chấp nhận yêu cầu ẩn danh.
Endpoint#
Endpoint chuyên dụng nhận yêu cầu tại URL riêng:
POST https://YOUR_DEPLOYMENT_URL.run.app/predictSuy luận dùng chung sử dụng Platform API cùng đường dẫn đầy đủ của model:
POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predictCả hai đều chấp nhận cùng phần nội dung multipart/form-data và trả về cùng cấu trúc phản hồi. Khi dùng Python SDK, hãy dùng client.models.predict(owner, project, model, body=...) cho suy luận dùng chung hoặc client.deployments.predict(owner, deployment, body=...) cho deployment chuyên dụng. Cả hai phương thức SDK đều gọi Platform API, vì vậy các giới hạn tốc độ và giới hạn kích thước yêu cầu của API này vẫn được áp dụng. Để tránh các giới hạn đó, hãy gửi POST trực tiếp đến URL của endpoint chuyên dụng như minh họa trong Yêu cầu. Ví dụ suy luận dùng chung:
from ultralytics_platform import Platform
client = Platform() # reads ULTRALYTICS_API_KEY
with open("image.jpg", "rb") as f:
results = client.models.predict("acme-vision", "inspection", "v3", body={"file": f, "conf": 0.25})Yêu cầu#
import requests
url = "https://YOUR_DEPLOYMENT_URL.run.app/predict"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {"conf": 0.25, "iou": 0.7, "imgsz": 640}
with open("image.jpg", "rb") as image_file:
response = requests.post(url, headers=headers, files={"file": image_file}, data=data)
print(response.json())
Tham số yêu cầu#
| Tham số | Kiểu | Mặc định | Phạm vi | Mô tả |
|---|---|---|---|---|
file | file | - | - | Tệp ảnh hoặc video (bắt buộc trừ khi đặt source) |
conf | float | 0.25 | 0.01 – 1.0 | Ngưỡng confidence tối thiểu |
iou | float | 0.7 | 0.0 – 0.95 | Ngưỡng IoU của NMS |
imgsz | int | - | 32 – 1280 | Kích thước ảnh đầu vào tính bằng pixel; mặc định là kích thước dùng để huấn luyện model (640 nếu không có) |
normalize | bool | false | - | Trả về tọa độ BBox trong khoảng 0 – 1 |
decimals | int | 5 | 0 – 10 | Độ chính xác thập phân của các giá trị tọa độ |
vid_stride | int | 1 | ≥ 1 | Dự đoán trên mỗi khung hình video thứ N; tham số này không áp dụng cho ảnh |
bits | int | 8 | 8, 12, 16 | Lượng tử hóa bản đồ độ sâu, chỉ dành cho model độ sâu |
source | chuỗi | - | - | URL ảnh hoặc chuỗi base64 (thay thế cho file); tối đa 4,096 ký tự qua Platform API |
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,
"classNames": ["person", "bicycle", "car", "..."],
"functionTimeAlive": 1284.51,
"functionTimeCall": 0.018,
"task": "detect",
"version": {
"ultralytics": "8.x.x",
"torch": "2.6.0",
"torchvision": "0.21.0",
"python": "3.13.0"
}
}
}
Các trường trong phản hồi#
| Trường | Kiểu | Mô tả |
|---|---|---|
images | mảng | Danh sách ảnh đã xử lý, mỗi khung hình video được xử lý tương ứng với một mục |
images[].shape | mảng | Kích thước ảnh [chiều cao, chiều rộng] |
images[].results | mảng | Danh sách detection |
images[].results[].class | int | Chỉ số lớp (ID số nguyên) |
images[].results[].name | chuỗi | Tên lớp |
images[].results[].confidence | float | Confidence của detection (0-1) |
images[].results[].box | đối tượng | Tọa độ BBox |
images[].semantic_mask | đối tượng | Bản đồ lớp theo từng pixel (chỉ dành cho model ngữ nghĩa) |
images[].depth | đối tượng | Bản đồ độ sâu theo từng pixel (chỉ dành cho model độ sâu) |
images[].speed | đối tượng | Thời gian xử lý tính bằng mili giây |
metadata | đối tượng | Số lượng ảnh, tên lớp của model, thời gian dịch vụ, tác vụ và phiên bản |
Phản hồi theo từng tác vụ#
Định dạng phản hồi thay đổi tùy theo tác vụ:
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": {"x1": 100, "y1": 50, "x2": 300, "y2": 400}
}Giới hạn tốc độ#
API model dùng chung bị giới hạn 20 yêu cầu/phút cho mỗi API key, người gọi đã đăng nhập hoặc IP ẩn danh. Tuyến predict của deployment trên Platform (POST /api/deployments/{owner}/{deployment}/predict) cũng có cùng giới hạn. Khi bị giới hạn tốc độ, API trả về 429 kèm header Retry-After. Xem tài liệu tham khảo đầy đủ về giới hạn tốc độ để biết các danh mục endpoint.
Các yêu cầu gửi trực tiếp đến endpoint chuyên dụng không đi qua bộ giới hạn tốc độ của Platform API. Endpoint vẫn giảm tải bằng 429 và header Retry-After khi tạm thời đạt giới hạn công suất. Để suy luận cục bộ với lưu lượng cao, hãy xem hướng dẫn về 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 hoặc xác nhận model đã có trọng số được huấn luyện |
| 401 | Chưa xác thực | Xác minh API key |
| 404 | Không tìm thấy model | Kiểm tra tên chủ sở hữu, project và model |
| 413 | Đầu vào quá lớn | Giảm kích thước tệp xuống thấp hơn giới hạn của endpoint |
| 429 | Bị giới hạn tốc độ | Chờ rồi thử lại hoặc gửi yêu cầu trực tiếp đến endpoint chuyên dụng |
| 500 | Lỗi máy chủ | Thử gửi lại yêu cầu |
| 503 | Dịch vụ không khả dụng | Dịch vụ Predict đang khởi động hoặc không thể truy cập; chờ một lát rồi thử lại |
Câu hỏi thường gặp#
Cả hai phương thức suy luận đều chấp nhận tệp video:
- Endpoint chuyên dụng chấp nhận trực tiếp tệp video. Các định dạng được hỗ trợ (tối đa 32 MB cho mỗi yêu cầu): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Kết quả được trả về theo từng khung hình đã xử lý và một yêu cầu có thể chạy tối đa 1 giờ. Xem endpoint chuyên dụng để biết thêm chi tiết.
- Inference dùng chung (
POST /api/models/{owner}/{project}/{model}/predict) sử dụng cùng dịch vụ predict và chấp nhận các định dạng video tương tự, nhưng giới hạn yêu cầu ở khoảng 4.5 MB và hết thời gian chờ sau khoảng 30 giây, nên chỉ phù hợp với các clip ngắn. Tab Predict trên trình duyệt chỉ tải lên hình ảnh; vì vậy, hãy dùng endpoint chuyên dụng cho tệp video hoặc Inference từ camera trực tiếp cho webcam hay camera IP.
Model depth không chấp nhận tệp video.
Trong tab Predict, nút tải xuống phía trên khung xem trước sẽ lưu kết quả hiện tại dưới dạng JPEG đã chú thích. Bản thân API trả về các dự đoán JSON. Để trực quan hóa các dự đoán đó:
- Dùng các dự đoán để vẽ BBox cục bộ
- Chạy model cục bộ bằng Ultralytics và lưu kết quả đã chú thích với
save()(hoặc lấy một mảng vớiplot()):
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model("image.jpg") results[0].save("annotated.jpg")Xem tài liệu về chế độ Predict để biết đầy đủ về API kết quả và các tùy chọn trực quan hóa.
- Giới hạn của tab Predict: 10 MB
- Giới hạn của API suy luận dùng chung: khoảng 4.5 MB mỗi request, bao gồm cả khi sử dụng Python SDK
- Giới hạn của endpoint chuyên dụng: 32 MB cho mỗi request gửi trực tiếp đến URL endpoint
- Tự động đổi kích thước trong tab Predict: Hình ảnh được đổi kích thước theo
Image Sizeđã chọn trước khi tải lên
Hình ảnh lớn được tự động đổi kích thước trong trình duyệt mà vẫn giữ nguyên tỷ lệ khung hình. Các request bạn tự gửi sẽ không được đổi kích thước, vì vậy request vượt quá giới hạn sẽ bị từ chối với
413.API hiện tại xử lý một hình ảnh trong mỗi request. Để xử lý theo batch:
- Gửi các request riêng cho từng hình ảnh
- Khi phù hợp, phân phối request trên các endpoint chuyên dụng
- Sử dụng suy luận cục bộ cho các batch lớn
Suy luận theo batch bằng Pythonimport concurrent.futures import requests url = "https://YOUR_DEPLOYMENT_URL.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))