Ultralytics YOLO27:

Inference#

Ultralytics Platform cung cấp tính năng inference trên trình duyệt để kiểm thử các model đã được train và các endpoint chuyên dụng để truy cập bằng code.

Ultralytics Platform Model Predict Tab With Detections Overlay

Tab Predict#

Mỗi model có weights đều bao gồm tab Predict để thực hiện inference trên trình duyệt:

  1. Đi đến model của bạn
  2. Nhấp vào tab Predict
  3. Upload một hình ảnh, sử dụng ví dụ hoặc mở webcam
  4. Xem overlay theo task, tóm tắt dự đoán, thời gian xử lý và response thô

Các model không có weights sẽ hiển thị trạng thái trống — trước tiên hãy train model hoặc upload weights.

Ultralytics Platform Predict Tab Image Upload Dropzone

Phương thức input#

Panel predict hỗ trợ nhiều phương thức input:

MethodMô tả
Upload hình ảnhKéo và thả hoặc nhấp để upload hình ảnh
Hình ảnh ví dụNhấp vào các ví dụ tích hợp sẵn (hình ảnh từ dataset hoặc mặc định)
Chụp bằng webcamLuồng camera trực tiếp với tính năng chụp từng frame
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

Upload hình ảnh#

Kéo và thả hoặc nhấp để upload:

  • Định dạng được hỗ trợ: JPEG, PNG, WebP, AVIF, HEIC, JP2, TIFF, BMP
  • Kích thước tối đa: 10 MB
  • Inference tự động: Kết quả tự động xuất hiện sau khi upload
Inference tự động

Panel predict tự động chạy inference khi bạn upload hình ảnh, chọn một ví dụ hoặc chụp frame từ webcam. Không cần nhấp nút.

Resize phía client

Trước khi upload, panel sẽ resize hình ảnh để cạnh dài nhất khớp với Image Size đã chọn và yêu cầu các tọa độ được chuẩn hóa. Điều này giúp quá trình kiểm thử trên trình duyệt nhanh hơn; các request do bạn tự gửi sẽ không được resize.

Hình ảnh ví dụ#

Panel predict hiển thị tối đa hai hình ảnh ví dụ từ dataset được liên kết với model của bạn, ưu tiên split val, tiếp đến test, rồi train. Nếu không có dataset nào được liên kết, các ví dụ mặc định sẽ được sử dụng:

Hì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 các model OBB, thay vào đó sẽ hiển thị hình ảnh trên không của thuyền và sân bay.

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

Các hình ảnh ví dụ được tải trước khi trang mở, vì vậy khi nhấp vào một ví dụ, inference sẽ diễn ra gần như ngay lập tức mà không phải chờ tải xuống.

Webcam#

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

  1. Cấp quyền camera khi được yêu cầu
  2. Nhấp vào phần xem trước video để chụp một frame
  3. Inference tự động chạy trên frame đã chụp
  4. Nhấp lại để khởi động lại webcam

Xem kết quả#

Kết quả inference hiển thị output phù hợp với task của model: boxes, masks, keypoints, oriented boxes, điểm số classification, độ phủ semantic hoặc depth map. Kết quả đối tượng sử dụng màu của class trong dataset khi có sẵn. Panel cũng hiển thị thời gian preprocess, inference, postprocess và network.

Kết quả tab dự đoán trên Ultralytics Platform hiển thị 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 detection hoặc 5 class đứng đầu đối với các model classification và semantic
Thống kê tốc độPreprocess, inference, postprocess và network (ms)
VersionsPhiên bản Ultralytics và PyTorch, cùng với khoảng depth hoặc kích thước mask nếu áp dụng
Response JSONResponse API thô trong một khối code, với dữ liệu map dạng base64 được lược bỏ

Sau khi có kết quả, hai control sẽ xuất hiện trên phần xem trước: nhấp vào hình ảnh để phóng to mà vẫn giữ nguyên overlay và sử dụng nút download để lưu JPEG có chú thích của kết quả hiện tại.

Tham số inference#

Điều chỉnh hành vi inference bằng ba thanh trượt bên dưới hình ảnh:

Ultralytics Platform Predict Tab Parameters Sliders

ParameterPhạ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 resize của input
Chạy lại tự động

Việc thay đổi bất kỳ tham số nào sẽ tự động chạy lại inference trên hình ảnh hiện tại với thời gian debounce 500ms. Không cần upload lại.

Ngưỡng confidence#

Lọc cá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, kèm một số 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#

Điều khiển NMS:

  • Cao hơn (0.7+): Cho phép nhiều box chồng lấn hơn
  • Thấp hơn (0.3-0.5): Loại bỏ các detection chồng lấn mạnh hơn
  • Mặc định (0.7): Hành vi NMS cân bằng cho hầu hết trường hợp sử dụng

Predict khi deployment#

Mỗi dedicated endpoint đang chạy đều bao gồm một tab Predict ngay trên thẻ deployment. Tab này sử dụng inference service riêng của deployment thay vì predict service dùng chung, cho phép bạn kiểm thử endpoint đã triển khai từ trình duyệt.

Trên một endpoint trả phí có bật tính năng giám sát, các ảnh đã xử lý cũng góp phần vào Monitoring tab. Các ví dụ lấy mẫu và biểu đồ tổng hợp của Monitoring tab là dữ liệu tạm thời, dung lượng 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 chúng. Hãy lưu các ví dụ vào một dataset để giữ lại chúng.

API của dedicated endpoint#

Thẻ API Docs trong tab Predict của model chứa các request mẫu bằng Python, JavaScript và cURL, được điền sẵn confidence, IoU và kích thước hình ảnh hiện đang thiết lập trên các thanh trượt. URL và key là các placeholder cho đến khi bạn deploy model — nút Deploy bên cạnh các tab code sẽ chuyển đến tab Deploy của model. Sau khi deployment hoàn tất, tab Code của thẻ deployment sẽ điền URL của endpoint đó và, đối với chủ workspace, 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 request:

Authorization: Bearer YOUR_API_KEY
Yêu cầu API key

Để chạy inference từ các script, notebook hoặc app của riêng bạn, hãy đưa vào một API key. Tạo key trong Settings > API Keys. Dedicated endpoint chỉ chấp nhận key duy nhất được tạo cùng nó; shared model API chấp nhận mọi key đang hoạt động trong workspace, và các model public cũng chấp nhận request ẩn danh.

Endpoint#

Dedicated endpoint nhận request tại URL riêng của chúng:

POST https://YOUR_DEPLOYMENT_URL.run.app/predict

Inference dùng chung sử dụng Platform API với full path của model:

POST https://platform.ultralytics.com/api/models/{owner}/{project}/{model}/predict

Cả hai đều chấp nhận cùng một body multipart/form-data và trả về cùng một dạng response. Với Python SDK, sử dụng client.models.predict(owner, project, model, body=...) cho inference dùng chung hoặc client.deployments.predict(owner, deployment, body=...) cho deployment chuyên dụng:

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

Request#

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

Ultralytics Platform Predict Tab Code Examples Python Tab

Tham số request#

ParameterKiểuMặc địnhPhạm viMô tả
filefile--File hình ảnh hoặc video (bắt buộc trừ khi đã thiết lập source)
conffloat0.250.01 – 1.0Ngưỡng confidence tối thiểu
ioufloat0.70.0 – 0.95Ngưỡng IoU của NMS
imgszint64032 – 1280Kích thước hình ảnh input tính bằng pixel
normalizeboolfalse-Trả về tọa độ bounding box trong khoảng 0 – 1
decimalsint50 – 10Độ chính xác thập phân của các giá trị tọa độ
bitsint88, 12, 16Lượng tử hóa depth map, chỉ dành cho các model depth
sourcestring--URL hình ảnh hoặc chuỗi base64 (thay thế cho file)

Response#

{
    "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,
        "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"
        }
    }
}

Ultralytics Platform Predict Tab Json Response View

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

TrườngKiểuMô tả
imagesmảngDanh sách các hình ảnh đã xử lý, mỗi mục tương ứng với một khung hình video đối với video
images[].shapemảngKích thước hình ảnh [chiều cao, chiều rộng]
images[].resultsmảngDanh sách các đối tượng phát hiện
images[].results[].classintChỉ số lớp (ID số nguyên)
images[].results[].namestringTên lớp
images[].results[].confidencefloatĐộ tin cậy của kết quả phát hiện (0-1)
images[].results[].boxđối tượngTọa độ hộp giới hạn
images[].semantic_maskđối tượngBản đồ lớp theo từng pixel (chỉ dành cho các model semantic)
images[].depthđối tượngBản đồ độ sâu theo từng pixel (chỉ dành cho các 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 hình ảnh, thời gian xử lý của dịch vụ, cùng các phiên bản Ultralytics/PyTorch

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 độ#

Shared model API bị giới hạn ở 20 request/phút cho mỗi API key, caller đã đăng nhập hoặc IP ẩn danh. Khi bị giới hạn tốc độ, API trả về 429 cùng với header Retry-After. Xem đầy đủ tài liệu tham khảo về giới hạn tốc độ để biết tất cả các nhóm endpoint.

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

Các request được gửi trực tiếp đến một dedicated endpoint không đi qua bộ giới hạn tốc độ của Platform API. Endpoint vẫn giảm tải bằng cách trả về 429 cùng 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 khối lượng lớn, hãy xem hướng dẫn Predict mode.

Xử lý lỗi#

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

Thông báoGiải pháp
400Hình ảnh không hợp lệKiểm tra định dạng tệp hoặc xem model đã có trained weights hay chưa
401Chưa được cấp quyềnXác minh API key
404Không tìm thấy modelKiểm tra tên owner, project và model
413Input quá lớnGiảm kích thước tệp xuống dưới giới hạn của endpoint
429Bị giới hạn tốc độChờ rồi thử lại hoặc gửi request trực tiếp đến một dedicated endpoint
500Lỗi máy chủThử lại request
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

FAQ#

  • Cả hai phương thức suy luận đều chấp nhận tệp video:

    • Dedicated endpoints chấp nhận trực tiếp các tệp video. Các định dạng được hỗ trợ (tối đa 100 MB): ASF, AVI, GIF, M4V, MKV, MOV, MP4, MPEG, MPG, TS, WEBM, WMV. Mỗi khung hình được xử lý riêng và kết quả được trả về theo từng khung hình. Xem dedicated endpoints để biết chi tiết.
    • Shared inference (POST /api/models/{owner}/{project}/{model}/predict) sử dụng cùng Predict service và chấp nhận các định dạng video tương tự. Tab Predict trên trình duyệt chỉ cho phép chọn hình ảnh, vì vậy hãy sử dụng API hoặc một dedicated endpoint cho video.
  • Trong tab Predict, nút tải xuống trên phần 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. Sử dụng các dự đoán để vẽ hộp cục bộ
    2. Sử dụng method plot() của Ultralytics:
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    results = model("image.jpg")
    results[0].save("annotated.jpg")

    Xem tài liệu Predict mode để biết đầy đủ 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 API: 100 MB cho cả shared inference và dedicated endpoints
    • Tự động thay đổi kích thước trong tab Predict: Hình ảnh được thay đổi kích thước về Image Size đã chọn trước khi tải lên

    Hình ảnh lớn được tự động thay đổi kích thước trong trình duyệt mà vẫn giữ nguyên tỷ lệ khung hình. Các request do bạn tự gửi sẽ không được thay đổi kích thước, vì vậy những hình ảnh 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 cho mỗi request. Để xử lý theo batch:

    1. Gửi các request riêng cho từng hình ảnh
    2. Phân phối request trên các dedicated endpoints khi phù hợp
    3. Sử dụng suy luận cục bộ cho các batch lớn
    Suy luận theo batch với 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