Ultralytics YOLO27:
Get Started

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 của model trên Ultralytics Platform với lớp phủ phát hiện

Tab Predict#

Mỗi model có weights đều có tab Predict để chạy inference trên trình duyệt:

  1. Điều hướng đến model của bạn
  2. Nhấp vào tab Predict
  3. Tải ảnh lên, dùng ảnh mẫu hoặc mở webcam
  4. 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.

Vùng tải ảnh lên của tab Predict trên Ultralytics Platform

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ứcMô tả
Tải ảnh lênKéo thả hoặc nhấp để tải ảnh lên
Ảnh mẫuNhấ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 webcamLuồng camera trực tiếp với khả năng chụp từng khung hình
Camera IPLuồ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:#fff

Tả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
Suy luận tự động

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.

Thay đổi kích thước phía client

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:

ẢnhNội dung
bus.jpgCảnh đường phố có phương tiện
zidane.jpgCả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 tải sẵn

Ả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:

  1. Cấp quyền truy cập camera khi được nhắc
  2. Nhấp vào bản xem trước video để chụp một khung hình
  3. Inference tự động chạy trên khung hình đã chụp
  4. 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.

Kết quả trên tab Predict của Ultralytics Platform với các phát hiện và thống kê tốc độ

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

TrườngMô 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ảnPhiê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 JSONPhả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):

Các thanh trượt tham số trong tab Predict của Ultralytics Platform

Tham sốPhạm viMặc địnhMô tả
Confidence0.01 – 1.0, bước 0.010.25Ngưỡng confidence tối thiểu
IoU0.0 – 0.95, bước 0.010.7Ngưỡng IoU của NMS
Image Size32 – 1280, bước 32640Kích thước chiều đầu vào sau khi resize
Tự động chạy lại

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ồnCách hoạt động
WebcamTrình duyệt gửi từng frame đến endpoint và vẽ kết quả lên luồng trực tiếp
Camera IPNhậ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
Yêu cầu 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/predict

Suy 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}/predict

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

Ví dụ mã trong tab Python của tab Predict trên Ultralytics Platform

Tham số yêu cầu#

Tham sốKiểuMặc địnhPhạm viMô tả
filefile--Tệp ảnh hoặc video (bắt buộc trừ khi đặt source)
conffloat0.250.01 – 1.0Ngưỡng confidence tối thiểu
ioufloat0.70.0 – 0.95Ngưỡng IoU của NMS
imgszint-32 – 1280Kí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ó)
normalizeboolfalse-Trả về tọa độ BBox trong khoảng 0 – 1
decimalsint50 – 10Độ chính xác thập phân của các giá trị tọa độ
vid_strideint1≥ 1Dự đoán trên mỗi khung hình video thứ N; tham số này không áp dụng cho ảnh
bitsint88, 12, 16Lượng tử hóa bản đồ độ sâu, chỉ dành cho model độ sâu
sourcechuỗ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"
        }
    }
}

Giao diện phản hồi JSON trong tab Predict của Ultralytics Platform

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

TrườngKiểuMô tả
imagesmảngDanh sách ảnh đã xử lý, mỗi khung hình video được xử lý tương ứng với một mục
images[].shapemảngKích thước ảnh [chiều cao, chiều rộng]
images[].resultsmảngDanh sách detection
images[].results[].classintChỉ số lớp (ID số nguyên)
images[].results[].namechuỗiTên lớp
images[].results[].confidencefloatConfidence của detection (0-1)
images[].results[].boxđối tượngTọa độ BBox
images[].semantic_maskđối tượngBản đồ lớp theo từng pixel (chỉ dành cho model ngữ nghĩa)
images[].depthđối tượngBản đồ độ sâu theo từng pixel (chỉ dành cho model độ sâu)
images[].speedđối tượngThời gian xử lý tính bằng mili giây
metadatađối tượngSố 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ần thông lượng cao hơn?

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áoGiả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
401Chưa xác thựcXác minh API key
404Không tìm thấy modelKiểm tra tên chủ sở hữu, project và model
413Đầu vào quá lớnGiảm kích thước tệp xuống thấp hơn giới hạn của endpoint
429Bị 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
500Lỗi máy chủThử gửi lại yêu cầu
503Dịch vụ không khả dụngDị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 đó:

    1. Dùng các dự đoán để vẽ BBox cục bộ
    2. 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ới plot()):
    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:

    1. Gửi các request riêng cho từng hình ảnh
    2. Khi phù hợp, phân phối request trên các endpoint chuyên dụng
    3. Sử dụng suy luận cục bộ cho các batch lớn
    Suy luận theo batch bằng Python
    import 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))

Bình luận