Meet YOLO26: next-gen vision AI.

Link to this sectionDự đoán mô hình với Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionGiới thiệu#

Trong thế giới machine learningcomputer vision, quá trình xử lý dữ liệu hình ảnh thường được gọi là inference hoặc dự đoán. Ultralytics YOLO26 cung cấp một tính năng mạnh mẽ được gọi là predict mode, được tinh chỉnh để phục vụ inference thời gian thực, hiệu suất cao trên nhiều nguồn dữ liệu khác nhau.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Link to this sectionCác ứng dụng thực tế#

Sản xuấtThể thaoAn toàn
Phát hiện phụ tùng xePhát hiện cầu thủ bóng đáPhát hiện người ngã
Phát hiện phụ tùng xePhát hiện cầu thủ bóng đáPhát hiện người ngã

Link to this sectionTại sao nên sử dụng Ultralytics YOLO cho Inference?#

Dưới đây là lý do tại sao bạn nên cân nhắc sử dụng predict mode của YOLO26 cho các nhu cầu inference đa dạng:

  • Tính linh hoạt: Có khả năng thực hiện inference trên hình ảnh, video và cả các luồng phát trực tiếp.
  • Hiệu suất: Được thiết kế để xử lý tốc độ cao, thời gian thực mà không làm giảm accuracy.
  • Dễ sử dụng: Giao diện Python và CLI trực quan cho phép triển khai và kiểm thử nhanh chóng.
  • Khả năng tùy biến cao: Cung cấp nhiều thiết lập và tham số để điều chỉnh hành vi inference của mô hình theo yêu cầu cụ thể của bạn.
  • Sẵn sàng cho Production: Triển khai các mô hình dưới dạng endpoint API trên Ultralytics Platform với khả năng tự động mở rộng và giám sát, hoặc chạy inference cục bộ.

Link to this sectionCác tính năng chính của Predict Mode#

Predict mode của YOLO26 được thiết kế để trở nên mạnh mẽ và linh hoạt, bao gồm:

  • Tương thích với nhiều nguồn dữ liệu: Cho dù dữ liệu của bạn ở dạng hình ảnh đơn lẻ, tập hợp hình ảnh, tệp video hay luồng video thời gian thực, predict mode đều hỗ trợ tốt.
  • Streaming Mode: Sử dụng tính năng streaming để tạo một generator hiệu quả về bộ nhớ cho các đối tượng Results. Kích hoạt tính năng này bằng cách đặt stream=True trong phương thức gọi của predictor.
  • Batch Processing: Xử lý nhiều hình ảnh hoặc khung hình video trong một batch, giúp giảm tổng thời gian inference.
  • Dễ dàng tích hợp: Dễ dàng kết nối với các pipeline dữ liệu hiện có và các thành phần phần mềm khác nhờ API linh hoạt.

Các mô hình Ultralytics YOLO trả về một danh sách các đối tượng Results trong Python hoặc một generator hiệu quả về bộ nhớ cho các đối tượng Results khi tham số stream=True được truyền vào mô hình trong quá trình inference:

Dự đoán (Predict)
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # pretrained YOLO26n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Link to this sectionNguồn Inference#

YOLO26 có thể xử lý các loại nguồn đầu vào khác nhau cho việc inference, như được hiển thị trong bảng dưới đây. Các nguồn bao gồm hình ảnh tĩnh, luồng video và nhiều định dạng dữ liệu khác nhau. Bảng cũng chỉ ra liệu mỗi nguồn có thể được sử dụng trong streaming mode với đối số stream=True hay không ✅. Streaming mode rất hữu ích để xử lý video hoặc luồng trực tiếp vì nó tạo ra một generator các kết quả thay vì tải toàn bộ khung hình vào bộ nhớ.

Mẹo

Sử dụng stream=True để xử lý video dài hoặc tập dữ liệu lớn nhằm quản lý bộ nhớ hiệu quả. Khi stream=False, kết quả cho tất cả các khung hình hoặc điểm dữ liệu được lưu trữ trong bộ nhớ, điều này có thể nhanh chóng làm đầy bộ nhớ và gây ra lỗi tràn bộ nhớ (out-of-memory) đối với các đầu vào lớn. Ngược lại, stream=True sử dụng một generator, chỉ giữ kết quả của khung hình hoặc điểm dữ liệu hiện tại trong bộ nhớ, giúp giảm đáng kể mức tiêu thụ bộ nhớ và ngăn ngừa các vấn đề về tràn bộ nhớ.

NguồnVí dụLoạiLưu ý
image'image.jpg'str hoặc PathTệp hình ảnh đơn lẻ.
URL'https://ultralytics.com/images/bus.jpg'strURL đến một hình ảnh.
screenshot'screen'strChụp ảnh màn hình.
PILImage.open('image.jpg')PIL.ImageĐịnh dạng HWC với các kênh RGB.
OpenCVcv2.imread('image.jpg')np.ndarrayĐịnh dạng HWC với các kênh BGR uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayĐịnh dạng HWC với các kênh BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorĐịnh dạng BCHW với các kênh RGB float32 (0.0-1.0).
CSV'sources.csv'str hoặc PathTệp CSV chứa đường dẫn đến hình ảnh, video hoặc thư mục.
video ✅'video.mp4'str hoặc PathTệp video ở các định dạng như MP4, AVI, v.v.
directory ✅'path/'str hoặc PathĐường dẫn đến thư mục chứa hình ảnh hoặc video.
glob ✅'path/*.jpg'strMẫu Glob để khớp với nhiều tệp. Sử dụng ký tự * làm đại diện.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL đến một video YouTube.
stream ✅'rtsp://example.com/media.mp4'strURL cho các giao thức truyền phát như RTSP, RTMP, TCP hoặc địa chỉ IP.
multi-stream ✅'list.streams'str hoặc PathTệp văn bản *.streams với mỗi hàng là một URL luồng, ví dụ: 8 luồng sẽ chạy với batch-size 8.
webcam ✅0intChỉ số của thiết bị camera được kết nối để chạy inference.

Dưới đây là các ví dụ mã để sử dụng từng loại nguồn:

Nguồn dự đoán

Chạy inference trên tệp hình ảnh.

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Link to this sectionCác đối số suy luận#

model.predict() chấp nhận nhiều đối số có thể được truyền vào tại thời điểm suy luận để ghi đè các giá trị mặc định:

Link to this sectionKích thước cố định so với hình chữ nhật tối thiểu (rect)#

Theo mặc định, predict sử dụng rect=True, cho phép đệm hình chữ nhật tối thiểu khi có thể. Hình ảnh được thu nhỏ để vừa với imgsz và chỉ đệm đến bội số stride gần nhất, vì vậy tensor cuối cùng có thể nhỏ hơn imgsz. Đệm hình chữ nhật tối thiểu chỉ được sử dụng khi tất cả hình ảnh trong batch có cùng kích thước và backend hỗ trợ (PyTorch .pt hoặc ONNX / Triton động). Nếu không, hình ảnh sẽ được đệm theo mục tiêu imgsz đầy đủ.

Sử dụng rect=False để luôn đệm theo mục tiêu imgsz đầy đủ. Cách này được khuyến nghị khi bạn cần kích thước đầu vào cố định để khớp với các model đã xuất (ONNX, TensorRT, v.v.).

Số nguyên so với tuple imgsz

  • Một số nguyên imgsz=640 sẽ trở thành mục tiêu hình vuông (640, 640) sau khi làm tròn theo stride.
  • Một tuple imgsz=(384, 672) thiết lập mục tiêu hình chữ nhật. Với rect=Trueauto=True, tensor thực tế có thể nhỏ hơn mục tiêu này.

Training so với predict/export

Training chỉ chấp nhận một số nguyên imgsz duy nhất (danh sách [h, w] sẽ bị ép kiểu về giá trị lớn nhất). Predict và export chấp nhận cả số nguyên hoặc một tuple (height, width).

Ví dụ
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

Các đối số suy luận:

Đối sốLoạiMặc địnhMô tả
sourcestr hoặc int hoặc NoneNoneChỉ định nguồn dữ liệu để suy luận. Có thể là đường dẫn ảnh, tệp video, thư mục, URL hoặc ID thiết bị cho các luồng trực tiếp. Nếu bỏ qua, một cảnh báo sẽ được ghi lại và model sẽ quay lại sử dụng các tài nguyên demo tích hợp sẵn (ultralytics/assets, hoặc URL demo cho OBB). Hỗ trợ nhiều định dạng và nguồn dữ liệu, cho phép ứng dụng linh hoạt trên các loại đầu vào khác nhau.
conffloat0.25Thiết lập ngưỡng tin cậy tối thiểu cho các lần phát hiện. Các đối tượng được phát hiện với độ tin cậy dưới ngưỡng này sẽ bị loại bỏ. Điều chỉnh giá trị này có thể giúp giảm các trường hợp dương tính giả.
ioufloat0.7Ngưỡng Intersection Over Union (IoU) cho Non-Maximum Suppression (NMS). Giá trị thấp hơn dẫn đến ít kết quả phát hiện hơn bằng cách loại bỏ các hộp chồng lấp, hữu ích để giảm các kết quả trùng lặp.
imgszint hoặc tuple640Mục tiêu Letterbox. Một số nguyên tạo ra N×N vuông; một tuple tạo ra (height, width). Với rect=True, tensor thực tế có thể nhỏ hơn mục tiêu này do padding hình chữ nhật tối thiểu. Sử dụng rect=False cho kích thước cố định. Xem Hình dạng cố định so với hình chữ nhật tối thiểu.
rectboolTrueNếu True, sử dụng padding hình chữ nhật tối thiểu khi có thể (batch cùng hình dạng và backend được hỗ trợ). Nếu False, luôn pad về kích thước imgsz đầy đủ. Xem Hình dạng cố định so với hình chữ nhật tối thiểu.
halfboolFalseKích hoạt suy luận bán độ chính xác (FP16), có thể tăng tốc độ suy luận của model trên các GPU được hỗ trợ với tác động tối thiểu đến độ chính xác.
devicestrNoneChỉ định thiết bị để suy luận (ví dụ: cpu, cuda:0, 0, npu hoặc npu:0). Cho phép người dùng chọn giữa CPU, một GPU cụ thể, NPU Huawei Ascend hoặc các thiết bị tính toán khác để thực thi model.
batchint1Chỉ định batch size để suy luận (chỉ hoạt động khi nguồn là thư mục, tệp video hoặc tệp .txt). Batch size lớn hơn có thể cung cấp lưu lượng cao hơn, rút ngắn tổng thời gian cần thiết cho suy luận.
max_detint300Số lượng phát hiện tối đa cho phép trên mỗi ảnh. Giới hạn tổng số đối tượng mà model có thể phát hiện trong một lần suy luận, tránh đầu ra quá mức trong các cảnh dày đặc đối tượng.
vid_strideint1Bước nhảy khung hình (frame stride) cho đầu vào video. Cho phép bỏ qua các khung hình trong video để tăng tốc độ xử lý với cái giá là độ phân giải thời gian. Giá trị 1 xử lý mọi khung hình, giá trị cao hơn sẽ bỏ qua khung hình.
stream_bufferboolFalseXác định xem có xếp hàng các khung hình đến cho luồng video hay không. Nếu False, các khung hình cũ sẽ bị loại bỏ để nhường chỗ cho khung hình mới (tối ưu cho các ứng dụng thời gian thực). Nếu True, xếp hàng các khung hình mới vào bộ đệm, đảm bảo không bỏ lỡ khung hình nào, nhưng sẽ gây ra độ trễ nếu FPS suy luận thấp hơn FPS của luồng.
visualizeboolFalseKích hoạt hiển thị các đặc trưng của model trong quá trình suy luận, cung cấp thông tin chi tiết về những gì model đang "nhìn thấy". Hữu ích cho việc gỡ lỗi và diễn giải model.
augmentboolFalseKích hoạt tăng cường dữ liệu khi kiểm thử (TTA) cho các dự đoán, có khả năng cải thiện độ ổn định khi phát hiện nhưng làm giảm tốc độ suy luận.
agnostic_nmsboolFalseKích hoạt Non-Maximum Suppression (NMS) không phụ thuộc vào lớp, giúp gộp các hộp chồng lấp của các lớp khác nhau. Hữu ích trong các kịch bản phát hiện đa lớp nơi các lớp thường chồng lấp. Đối với các model end-to-end (YOLO26, YOLOv10), điều này chỉ ngăn chặn việc cùng một kết quả phát hiện xuất hiện với nhiều nhãn lớp (trùng lặp IoU=1.0) và không thực hiện triệt tiêu dựa trên ngưỡng IoU giữa các hộp riêng biệt.
classeslist[int]NoneLọc các dự đoán theo một tập hợp ID lớp. Chỉ các kết quả phát hiện thuộc các lớp được chỉ định mới được trả về. Hữu ích để tập trung vào các đối tượng liên quan trong các tác vụ phát hiện đa lớp.
retina_masksboolFalseTrả về các mặt nạ phân đoạn độ phân giải cao. Các mặt nạ được trả về (masks.data) sẽ khớp với kích thước ảnh gốc nếu được bật. Nếu tắt, chúng sẽ có kích thước ảnh được sử dụng trong quá trình suy luận.
embedlist[int]NoneChỉ định các lớp để trích xuất các vector đặc trưng hoặc embeddings. Hữu ích cho các tác vụ hạ nguồn như phân cụm hoặc tìm kiếm tương đồng.
projectstrNoneTên của thư mục dự án nơi lưu đầu ra dự đoán nếu save được bật.
namestrNoneTên của lần dự đoán. Được sử dụng để tạo thư mục con trong thư mục dự án, nơi lưu trữ đầu ra dự đoán nếu save được bật.
streamboolFalseKích hoạt xử lý hiệu quả bộ nhớ cho các video dài hoặc nhiều hình ảnh bằng cách trả về một generator các đối tượng Results thay vì tải tất cả các khung hình vào bộ nhớ cùng lúc.
verboseboolTrueKiểm soát việc hiển thị nhật ký suy luận chi tiết trong terminal, cung cấp phản hồi thời gian thực về quá trình dự đoán.
compilebool hoặc strFalseBật tính năng biên dịch đồ thị torch.compile của PyTorch 2.x với backend='inductor'. Chấp nhận True"default", False → tắt, hoặc một chế độ dạng chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ tự động quay lại chế độ thực thi eager kèm theo cảnh báo.
end2endboolNoneGhi đè chế độ end-to-end trong các model YOLO hỗ trợ suy luận không cần NMS (YOLO26, YOLOv10). Thiết lập thành False cho phép bạn chạy dự đoán bằng pipeline NMS truyền thống, đồng thời cho phép bạn sử dụng đối số iou. Xem hướng dẫn Phát hiện End-to-End để biết chi tiết.

Các đối số trực quan hóa:

Đối sốLoạiMặc địnhMô tả
showboolFalseNếu True, hiển thị các hình ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích cho phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử.
saveboolFalse or TrueKích hoạt lưu các ảnh hoặc video đã được chú thích vào tệp. Hữu ích cho việc ghi tài liệu, phân tích thêm hoặc chia sẻ kết quả. Mặc định là True khi sử dụng CLI & False khi sử dụng trong Python.
save_framesboolFalseKhi xử lý video, lưu từng khung hình dưới dạng hình ảnh. Hữu ích để trích xuất các khung hình cụ thể hoặc phân tích chi tiết từng khung hình.
save_txtboolFalseLưu kết quả phát hiện trong tệp văn bản, theo định dạng [class] [x_center] [y_center] [width] [height] [confidence]. Hữu ích cho việc tích hợp với các công cụ phân tích khác.
save_confboolFalseBao gồm các điểm số tin cậy trong các tệp văn bản đã lưu. Tăng cường thông tin chi tiết cho việc hậu xử lý và phân tích.
save_cropboolFalseLưu các ảnh cắt của các kết quả phát hiện. Hữu ích cho việc tăng cường dữ liệu, phân tích hoặc tạo tập dữ liệu tập trung cho các đối tượng cụ thể.
show_labelsboolTrueHiển thị nhãn cho mỗi phát hiện trong đầu ra hình ảnh. Cung cấp khả năng nhận biết tức thì các đối tượng được phát hiện.
show_confboolTrueHiển thị điểm số tin cậy (confidence score) cho mỗi phát hiện cùng với nhãn. Cung cấp thông tin chi tiết về độ chắc chắn của model đối với từng phát hiện.
show_boxesboolTrueVẽ các hộp bao quanh các đối tượng được phát hiện. Cần thiết cho việc nhận diện trực quan và xác định vị trí của đối tượng trong ảnh hoặc khung hình video.
line_widthint or NoneNoneChỉ định độ dày đường của bounding box. Nếu None, độ dày đường được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp khả năng tùy chỉnh trực quan để rõ ràng hơn.

Link to this sectionCác định dạng hình ảnh và video#

YOLO26 hỗ trợ nhiều định dạng hình ảnh và video khác nhau, như được chỉ định trong ultralytics/data/utils.py. Xem các bảng dưới đây để biết các hậu tố hợp lệ và các lệnh predict ví dụ.

Link to this sectionHình ảnh#

Bảng dưới đây chứa các định dạng hình ảnh hợp lệ của Ultralytics.

Lưu ý

Các định dạng HEIC/HEIF yêu cầu pi-heif, được cài đặt tự động trong lần sử dụng đầu tiên. AVIF được Pillow hỗ trợ nguyên bản.

Hậu tố hình ảnhLệnh predict ví dụTham chiếu
.avifyolo predict source=image.avifAV1 Image File Format
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpeg2000yolo predict source=image.jpeg2000JPEG 2000
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Link to this sectionVideo#

Bảng dưới đây chứa các định dạng video hợp lệ của Ultralytics.

Hậu tố videoLệnh predict ví dụTham chiếu
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

Link to this sectionLàm việc với các kết quả#

Tất cả các lệnh predict() của Ultralytics sẽ trả về một danh sách các đối tượng Results:

Kết quả
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # batch inference

Các đối tượng Results có những thuộc tính sau:

Thuộc tínhLoạiMô tả
orig_imgnp.ndarrayẢnh gốc dưới dạng NumPy array.
orig_shapetupleKích thước ảnh gốc theo định dạng (chiều cao, chiều rộng).
boxesBoxes, optionalMột đối tượng Boxes chứa các khung bao (bounding box) phát hiện được.
masksMasks, optionalMột đối tượng Masks chứa các mask phát hiện được.
probsProbs, optionalMột đối tượng Probs chứa xác suất của mỗi lớp cho tác vụ phân loại.
keypointsKeypoints, optionalMột đối tượng Keypoints chứa các điểm đặc trưng (keypoint) đã phát hiện cho mỗi đối tượng.
obbOBB, optionalMột đối tượng OBB chứa các khung bao định hướng (oriented bounding box).
semantic_maskSemanticMask, optionalMột đối tượng SemanticMask chứa bản đồ lớp dày đặc theo từng pixel.
speeddictMột dictionary chứa tốc độ tiền xử lý, suy luận và hậu xử lý tính bằng mili giây trên mỗi ảnh.
namesdictMột dictionary ánh xạ các chỉ số lớp sang tên lớp.
pathstrĐường dẫn đến tệp ảnh.
save_dirstr, optionalThư mục để lưu kết quả.

Link to this sectionKết quả theo tác vụ#

Mỗi dự đoán trả về một đối tượng Results cho mỗi ảnh hoặc frame. Các trường phổ biến ở trên luôn khả dụng, trong khi dữ liệu dự đoán đặc thù cho từng tác vụ được lưu trữ trong các trường dưới đây. Các tensor về tọa độ, độ tin cậy và xác suất là torch.float32 trừ khi sử dụng độ chính xác bán phần (half precision), khi đó sẽ là torch.float16. Sau khi gọi result.numpy(), các tensor trở thành NumPy array với các NumPy dtype tương ứng. Các mask thực thể (instance mask) là các tensor nhị phân torch.uint8, trong khi các mask ngữ nghĩa sử dụng dtype số nguyên thực tế nhỏ nhất cho ID lớp: torch.uint8, torch.int16 hoặc torch.int32, tùy thuộc vào số lượng lớp.

Thuộc tínhLoạiKích thướcMô tả
result.boxesBoxes(N)Các khung bao phát hiện.
result.boxes.datatorch.float32(N,6/7)Dữ liệu thô [x1,y1,x2,y2,conf,cls], kèm track ID tùy chọn.
result.boxes.xyxytorch.float32(N,4)Các khung bao pixel xyxy.
result.boxes.conftorch.float32(N,)Điểm độ tin cậy.
result.boxes.clstorch.float32(N,)ID lớp; ép kiểu sang int để lấy tên.

Các đối tượng Results có các phương thức sau:

Phương thứcKiểu trả vềMô tả
update()NoneCập nhật đối tượng Results với dữ liệu mới như khung hình (boxes), masks, probs, obb, keypoints, hoặc semantic masks.
cpu()ResultsTrả về một bản sao của đối tượng Results với tất cả các tensor được chuyển sang bộ nhớ CPU.
numpy()ResultsTrả về một bản sao của đối tượng Results với tất cả các tensor được chuyển đổi thành mảng NumPy.
cuda()ResultsTrả về một bản sao của đối tượng Results với tất cả các tensor được chuyển sang bộ nhớ GPU.
to()ResultsTrả về một bản sao của đối tượng Results với các tensor được chuyển sang thiết bị và dtype chỉ định.
new()ResultsTạo một đối tượng Results mới với cùng các thuộc tính hình ảnh, đường dẫn, tên và tốc độ.
plot()np.ndarrayVẽ kết quả phát hiện lên một hình ảnh BGR đầu vào và trả về hình ảnh đã được chú thích.
show()NoneHiển thị hình ảnh với các kết quả suy luận đã được chú thích.
save()strLưu hình ảnh kết quả suy luận đã được chú thích vào tệp và trả về tên tệp.
verbose()strTrả về một chuỗi log cho từng tác vụ, chi tiết kết quả phát hiện và phân loại.
save_txt()strLưu kết quả phát hiện vào một tệp văn bản và trả về đường dẫn đến tệp đã lưu.
save_crop()NoneLưu các hình ảnh phát hiện đã cắt vào thư mục được chỉ định.
summary()List[Dict[str, Any]]Chuyển đổi kết quả suy luận thành một từ điển tóm tắt với tùy chọn chuẩn hóa.
to_df()DataFrameChuyển đổi kết quả phát hiện thành một Polars DataFrame.
to_csv()strChuyển đổi kết quả phát hiện sang định dạng CSV.
to_json()strChuyển đổi kết quả phát hiện sang định dạng JSON.

Để biết thêm chi tiết, hãy xem tài liệu lớp Results.

Link to this sectionBoxes#

Đối tượng Boxes có thể được sử dụng để lập chỉ mục, thao tác và chuyển đổi các khung bao (bounding boxes) sang các định dạng khác nhau.

Boxes
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

Dưới đây là bảng các phương thức và thuộc tính của lớp Boxes, bao gồm tên, loại và mô tả của chúng:

TênLoạiMô tả
cpu()Phương thứcDi chuyển đối tượng sang bộ nhớ CPU.
numpy()Phương thứcChuyển đổi đối tượng sang mảng NumPy.
cuda()Phương thứcDi chuyển đối tượng sang bộ nhớ CUDA.
to()Phương thứcDi chuyển đối tượng sang thiết bị được chỉ định.
xyxyThuộc tính (torch.Tensor)Trả về các khung hình ở định dạng xyxy.
confThuộc tính (torch.Tensor)Trả về các giá trị độ tin cậy của các khung hình.
clsThuộc tính (torch.Tensor)Trả về các giá trị lớp của các khung hình.
idThuộc tính (torch.Tensor)Trả về các ID theo dõi của các khung hình (nếu có).
xywhThuộc tính (torch.Tensor)Trả về các khung hình ở định dạng xywh.
xyxynThuộc tính (torch.Tensor)Trả về các khung hình ở định dạng xyxy được chuẩn hóa theo kích thước hình ảnh gốc.
xywhnThuộc tính (torch.Tensor)Trả về các khung hình ở định dạng xywh được chuẩn hóa theo kích thước hình ảnh gốc.

Để biết thêm chi tiết, hãy xem tài liệu lớp Boxes.

Link to this sectionMasks#

Đối tượng Masks có thể được sử dụng để lập chỉ mục, thao tác và chuyển đổi các mask thành các phân đoạn (segments).

Masks
from ultralytics import YOLO

# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

Dưới đây là bảng các phương thức và thuộc tính của lớp Masks, bao gồm tên, loại và mô tả của chúng:

TênLoạiMô tả
dataThuộc tính (torch.Tensor)Tensor mask nhị phân torch.uint8 với hình dạng (N,H,W) và các giá trị 0 hoặc 1.
cpu()Phương thứcTrả về tensor masks trên bộ nhớ CPU.
numpy()Phương thứcTrả về tensor masks dưới dạng mảng NumPy.
cuda()Phương thứcTrả về tensor masks trên bộ nhớ GPU.
to()Phương thứcTrả về tensor masks với thiết bị và dtype được chỉ định.
xynThuộc tính (list[np.ndarray])Danh sách các đa giác mask đã được chuẩn hóa.
xyThuộc tính (list[np.ndarray])Danh sách các đa giác mask trong tọa độ pixel.

Để biết thêm chi tiết, hãy xem tài liệu lớp Masks.

Link to this sectionSemanticMask#

SemanticMask lưu trữ một bản đồ lớp dày đặc cho kết quả phân đoạn ngữ nghĩa (semantic segmentation). Không giống như Masks, nó không chứa một mask nhị phân trên mỗi đối tượng và không cung cấp các trình hỗ trợ đa giác.

SemanticMask
from ultralytics import YOLO

# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
TênLoạiMô tả
dataThuộc tính (torch.Tensor)Bản đồ Class-ID với hình dạng (H,W). Dtype là torch.uint8, torch.int16, hoặc torch.int32, được chọn dựa trên số lượng lớp.
shapeThuộc tính (tuple)Hình dạng của bản đồ lớp, thường khớp với result.orig_shape.
cpu()Phương thứcTrả về tensor semantic mask trên bộ nhớ CPU.
numpy()Phương thứcTrả về tensor semantic mask dưới dạng mảng NumPy.
cuda()Phương thứcTrả về tensor semantic mask trên bộ nhớ GPU.
to()Phương thứcTrả về tensor semantic mask với thiết bị và dtype được chỉ định.

Link to this sectionKeypoints#

Đối tượng Keypoints có thể được sử dụng để lập chỉ mục, thao tác và chuẩn hóa tọa độ.

Keypoints
from ultralytics import YOLO

# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

Dưới đây là bảng các phương thức và thuộc tính của lớp Keypoints, bao gồm tên, loại và mô tả của chúng:

TênLoạiMô tả
cpu()Phương thứcTrả về tensor keypoints trên bộ nhớ CPU.
numpy()Phương thứcTrả về tensor keypoints dưới dạng mảng NumPy.
cuda()Phương thứcTrả về tensor keypoints trên bộ nhớ GPU.
to()Phương thứcTrả về tensor keypoints với thiết bị và kiểu dữ liệu được chỉ định.
xynThuộc tính (torch.Tensor)Một danh sách các keypoints được chuẩn hóa dưới dạng các tensor.
xyThuộc tính (torch.Tensor)Một danh sách các keypoints theo tọa độ pixel dưới dạng các tensor.
confThuộc tính (torch.Tensor)Trả về các giá trị độ tin cậy của keypoints nếu có, nếu không thì trả về None.

Để biết thêm chi tiết, hãy xem tài liệu về lớp Keypoints.

Link to this sectionProbs#

Đối tượng Probs có thể được sử dụng để lập chỉ mục, lấy các chỉ số top1top5 cùng điểm số phân loại.

Probs
from ultralytics import YOLO

# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

Dưới đây là bảng tóm tắt các phương thức và thuộc tính cho lớp Probs:

TênLoạiMô tả
cpu()Phương thứcTrả về một bản sao của tensor probs trên bộ nhớ CPU.
numpy()Phương thứcTrả về một bản sao của tensor probs dưới dạng mảng NumPy.
cuda()Phương thứcTrả về một bản sao của tensor probs trên bộ nhớ GPU.
to()Phương thứcTrả về một bản sao của tensor probs với thiết bị và kiểu dữ liệu được chỉ định.
top1Thuộc tính (int)Chỉ số của lớp top 1.
top5Thuộc tính (list[int])Các chỉ số của top 5 lớp.
top1confThuộc tính (torch.Tensor)Độ tin cậy của lớp top 1.
top5confThuộc tính (torch.Tensor)Độ tin cậy của top 5 lớp.

Để biết thêm chi tiết, hãy xem tài liệu về lớp Probs.

Link to this sectionOBB#

Đối tượng OBB có thể được sử dụng để lập chỉ mục, thao tác và chuyển đổi các hộp bao xoay sang các định dạng khác nhau.

OBB
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg")  # results list

# View results
for r in results:
    print(r.obb)  # print the OBB object containing the oriented detection bounding boxes

Dưới đây là bảng cho các phương thức và thuộc tính của lớp OBB, bao gồm tên, loại và mô tả:

TênLoạiMô tả
cpu()Phương thứcDi chuyển đối tượng sang bộ nhớ CPU.
numpy()Phương thứcChuyển đổi đối tượng sang mảng NumPy.
cuda()Phương thứcDi chuyển đối tượng sang bộ nhớ CUDA.
to()Phương thứcDi chuyển đối tượng sang thiết bị được chỉ định.
confThuộc tính (torch.Tensor)Trả về các giá trị độ tin cậy của các khung hình.
clsThuộc tính (torch.Tensor)Trả về các giá trị lớp của các khung hình.
idThuộc tính (torch.Tensor)Trả về các ID theo dõi của các khung hình (nếu có).
xyxyThuộc tính (torch.Tensor)Trả về các hộp nằm ngang theo định dạng xyxy.
xywhrThuộc tính (torch.Tensor)Trả về các hộp xoay theo định dạng xywhr.
xyxyxyxyThuộc tính (torch.Tensor)Trả về các hộp xoay theo định dạng xyxyxyxy.
xyxyxyxynThuộc tính (torch.Tensor)Trả về các hộp xoay theo định dạng xyxyxyxy đã được chuẩn hóa theo kích thước ảnh.

Để biết thêm chi tiết, hãy xem tài liệu về lớp OBB.

Link to this sectionTrực quan hóa kết quả#

Phương thức plot() trong các đối tượng Results giúp trực quan hóa các dự đoán bằng cách phủ các đối tượng đã phát hiện (chẳng hạn như hộp bao, mask, keypoints và xác suất) lên ảnh gốc. Phương thức này trả về ảnh đã chú thích dưới dạng mảng NumPy, cho phép hiển thị hoặc lưu dễ dàng.

Vẽ (Plotting)
from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

Link to this sectionCác tham số của phương thức plot()#

Phương thức plot() hỗ trợ nhiều đối số để tùy chỉnh kết quả đầu ra:

Đối sốLoạiMô tảMặc định
confboolBao gồm điểm tin cậy phát hiện.True
line_widthfloatĐộ dày đường vẽ của hộp bao. Sẽ tự động co giãn theo kích thước ảnh nếu là None.None
font_sizefloatKích thước font chữ. Sẽ tự động co giãn theo kích thước ảnh nếu là None.None
fontstrTên font cho chú thích văn bản.'Arial.ttf'
pilboolTrả về ảnh dưới dạng đối tượng PIL Image.False
imgnp.ndarrayẢnh thay thế để vẽ. Sử dụng ảnh gốc nếu là None.None
im_gputorch.TensorẢnh được tăng tốc bằng GPU để vẽ mask nhanh hơn. Hình dạng: (1, 3, 640, 640).None
kpt_radiusintBán kính cho các keypoints được vẽ.5
kpt_lineboolNối các keypoints bằng các đường thẳng.True
labelsboolBao gồm nhãn lớp trong các chú thích.True
boxesboolPhủ các hộp bao lên ảnh.True
masksboolPhủ các mask lên ảnh.True
probsboolBao gồm xác suất phân loại.True
showboolHiển thị ảnh đã chú thích trực tiếp bằng trình xem ảnh mặc định.False
saveboolLưu ảnh đã chú thích vào tệp được chỉ định bởi filename.False
filenamestrĐường dẫn và tên tệp để lưu ảnh đã chú thích nếu saveTrue.None
color_modestrChỉ định chế độ màu, ví dụ: 'instance' hoặc 'class'.'class'
txt_colortuple[int, int, int]Màu chữ BGR cho hộp bao và nhãn phân loại ảnh.(255, 255, 255)

Link to this sectionSuy luận an toàn với đa luồng#

Đảm bảo tính an toàn của luồng (thread safety) trong quá trình inference là rất quan trọng khi bạn chạy nhiều model YOLO song song trên các luồng khác nhau. Inference an toàn với luồng đảm bảo rằng các dự đoán của mỗi luồng là độc lập và không can thiệp lẫn nhau, tránh tình trạng race conditions và đảm bảo kết quả nhất quán và đáng tin cậy.

Khi sử dụng các model YOLO trong ứng dụng đa luồng, điều quan trọng là phải khởi tạo các đối tượng model riêng biệt cho từng luồng hoặc sử dụng bộ lưu trữ cục bộ của luồng (thread-local storage) để tránh xung đột:

Suy luận an toàn với đa luồng

Khởi tạo một model duy nhất bên trong mỗi luồng để có inference an toàn với luồng:

from threading import Thread

from ultralytics import YOLO

def thread_safe_predict(model, image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    model = YOLO(model)
    results = model.predict(image_path)
    # Process results

# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()

Để có cái nhìn sâu sắc về inference an toàn với luồng với các model YOLO và hướng dẫn từng bước, vui lòng tham khảo Hướng dẫn về Inference An toàn với Luồng YOLO. Hướng dẫn này sẽ cung cấp cho bạn tất cả thông tin cần thiết để tránh các lỗi phổ biến và đảm bảo inference đa luồng của bạn chạy trơn tru.

Link to this sectionVòng lặp for nguồn streaming#

Dưới đây là một tập lệnh Python sử dụng OpenCV (cv2) và YOLO để chạy inference trên các khung hình video. Tập lệnh này giả định rằng bạn đã cài đặt các gói cần thiết (opencv-pythonultralytics).

Vòng lặp for streaming
import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo26n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

Tập lệnh này sẽ chạy dự đoán trên từng khung hình của video, trực quan hóa kết quả và hiển thị chúng trong một cửa sổ. Có thể thoát vòng lặp bằng cách nhấn phím 'q'.

Link to this sectionCâu hỏi thường gặp#

Link to this sectionUltralytics YOLO và chế độ predict của nó cho inference thời gian thực là gì?#

Ultralytics YOLO là model hiện đại nhất cho phát hiện đối tượng, phân đoạn instance, phân đoạn ngữ nghĩaphân loại theo thời gian thực. Chế độ predict của nó cho phép người dùng thực hiện inference tốc độ cao trên nhiều nguồn dữ liệu khác nhau như hình ảnh, video và luồng trực tiếp. Được thiết kế cho hiệu suất và tính linh hoạt, nó cũng cung cấp các chế độ xử lý theo batch và streaming. Để biết thêm chi tiết về các tính năng, hãy kiểm tra chế độ predict của Ultralytics YOLO.

Link to this sectionLàm thế nào để tôi có thể chạy inference bằng Ultralytics YOLO trên các nguồn dữ liệu khác nhau?#

Ultralytics YOLO có thể xử lý nhiều nguồn dữ liệu, bao gồm từng ảnh, video, thư mục, URL và luồng. Bạn có thể chỉ định nguồn dữ liệu trong lệnh gọi model.predict(). Ví dụ, sử dụng 'image.jpg' cho một ảnh cục bộ hoặc 'https://ultralytics.com/images/bus.jpg' cho một URL. Hãy xem các ví dụ chi tiết cho các nguồn inference khác nhau trong tài liệu.

Link to this sectionLàm thế nào để tôi tối ưu hóa tốc độ inference và việc sử dụng bộ nhớ của YOLO?#

Để tối ưu hóa tốc độ inference và quản lý bộ nhớ hiệu quả, bạn có thể sử dụng chế độ streaming bằng cách đặt stream=True trong phương thức gọi của predictor. Chế độ streaming tạo ra một trình tạo các đối tượng Results tiết kiệm bộ nhớ thay vì tải tất cả các khung hình vào bộ nhớ. Đối với việc xử lý video dài hoặc các tập dữ liệu lớn, chế độ streaming đặc biệt hữu ích. Tìm hiểu thêm về chế độ streaming.

Link to this sectionUltralytics YOLO hỗ trợ những đối số inference nào?#

Phương thức model.predict() trong YOLO hỗ trợ nhiều đối số như conf, iou, imgsz, device và nhiều đối số khác. Các đối số này cho phép bạn tùy chỉnh quá trình inference, thiết lập các tham số như ngưỡng tin cậy, kích thước ảnh và thiết bị được sử dụng để tính toán. Mô tả chi tiết về các đối số này có thể được tìm thấy trong phần đối số inference.

Link to this sectionLàm thế nào để tôi có thể trực quan hóa và lưu kết quả dự đoán của YOLO?#

Sau khi chạy inference với YOLO, các đối tượng Results chứa các phương thức để hiển thị và lưu ảnh đã chú thích. Bạn có thể sử dụng các phương thức như result.show()result.save(filename="result.jpg") để trực quan hóa và lưu kết quả. Bất kỳ thư mục cha nào bị thiếu trong đường dẫn filename sẽ được tạo tự động (ví dụ: result.save("path/to/result.jpg")). Để có danh sách đầy đủ các phương thức này, hãy tham khảo phần làm việc với kết quả.

Bình luận