Link to this sectionDự đoán mô hình với Ultralytics YOLO#
Link to this sectionGiới thiệu#
Trong thế giới machine learning và computer 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ất | Thể thao | An toàn |
|---|---|---|
![]() | ![]() | ![]() |
| Phát hiện phụ tùng xe | Phá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 đặtstream=Truetrong 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:
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 diskLink 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ớ.
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ồn | Ví dụ | Loại | Lưu ý |
|---|---|---|---|
| image | 'image.jpg' | str hoặc Path | Tệp hình ảnh đơn lẻ. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL đến một hình ảnh. |
| screenshot | 'screen' | str | Chụp ảnh màn hình. |
| PIL | Image.open('image.jpg') | PIL.Image | Định dạng HWC với các kênh RGB. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | Định dạng HWC với các kênh BGR uint8 (0-255). |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | Định dạng HWC với các kênh BGR uint8 (0-255). |
| torch | torch.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 Path | Tệp CSV chứa đường dẫn đến hình ảnh, video hoặc thư mục. |
| video ✅ | 'video.mp4' | str hoặc Path | Tệ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' | str | Mẫ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' | str | URL đến một video YouTube. |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | URL 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 Path | Tệ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 ✅ | 0 | int | Chỉ 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:
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 objectsLink 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=640sẽ 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ớirect=Truevàauto=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).
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ại | Mặc định | Mô tả |
|---|---|---|---|
source | str hoặc int hoặc None | None | Chỉ đị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. |
conf | float | 0.25 | Thiế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ả. |
iou | float | 0.7 | Ngưỡ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. |
imgsz | int hoặc tuple | 640 | Mụ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. |
rect | bool | True | Nế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. |
half | bool | False | Kí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. |
device | str | None | Chỉ đị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. |
batch | int | 1 | Chỉ đị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_det | int | 300 | Số 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_stride | int | 1 | Bướ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_buffer | bool | False | Xá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. |
visualize | bool | False | Kí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. |
augment | bool | False | Kí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_nms | bool | False | Kí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. |
classes | list[int] | None | Lọ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_masks | bool | False | Trả 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. |
embed | list[int] | None | Chỉ đị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. |
project | str | None | Tên của thư mục dự án nơi lưu đầu ra dự đoán nếu save được bật. |
name | str | None | Tê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. |
stream | bool | False | Kí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. |
verbose | bool | True | Kiể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. |
compile | bool hoặc str | False | Bậ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. |
end2end | bool | None | Ghi đè 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ại | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nế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ử. |
save | bool | False or True | Kí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_frames | bool | False | Khi 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_txt | bool | False | Lư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_conf | bool | False | Bao 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_crop | bool | False | Lư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_labels | bool | True | Hiể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_conf | bool | True | Hiể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_boxes | bool | True | Vẽ 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_width | int or None | None | Chỉ đị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.
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 ảnh | Lệnh predict ví dụ | Tham chiếu |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Image File Format |
.bmp | yolo predict source=image.bmp | Microsoft BMP File Format |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | High Efficiency Image Format |
.heif | yolo predict source=image.heif | High Efficiency Image Format |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpeg2000 | yolo predict source=image.jpeg2000 | JPEG 2000 |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Tag Image File Format |
.tiff | yolo predict source=image.tiff | Tag Image File Format |
.webp | yolo predict source=image.webp | WebP |
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ố video | Lệnh predict ví dụ | Tham chiếu |
|---|---|---|
.asf | yolo predict source=video.asf | Advanced Systems Format |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Graphics Interchange Format |
.m4v | yolo predict source=video.m4v | MPEG-4 Part 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | QuickTime File Format |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Part 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Part 2 |
.ts | yolo predict source=video.ts | MPEG Transport Stream |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebM 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:
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 inferenceCác đối tượng Results có những thuộc tính sau:
| Thuộc tính | Loại | Mô tả |
|---|---|---|
orig_img | np.ndarray | Ảnh gốc dưới dạng NumPy array. |
orig_shape | tuple | Kích thước ảnh gốc theo định dạng (chiều cao, chiều rộng). |
boxes | Boxes, optional | Một đối tượng Boxes chứa các khung bao (bounding box) phát hiện được. |
masks | Masks, optional | Một đối tượng Masks chứa các mask phát hiện được. |
probs | Probs, optional | Mộ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. |
keypoints | Keypoints, optional | Mộ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. |
obb | OBB, optional | Một đối tượng OBB chứa các khung bao định hướng (oriented bounding box). |
semantic_mask | SemanticMask, optional | Một đối tượng SemanticMask chứa bản đồ lớp dày đặc theo từng pixel. |
speed | dict | Mộ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. |
names | dict | Một dictionary ánh xạ các chỉ số lớp sang tên lớp. |
path | str | Đường dẫn đến tệp ảnh. |
save_dir | str, optional | Thư 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ính | Loại | Kích thước | Mô tả |
|---|---|---|---|
result.boxes | Boxes | (N) | Các khung bao phát hiện. |
result.boxes.data | torch.float32 | (N,6/7) | Dữ liệu thô [x1,y1,x2,y2,conf,cls], kèm track ID tùy chọn. |
result.boxes.xyxy | torch.float32 | (N,4) | Các khung bao pixel xyxy. |
result.boxes.conf | torch.float32 | (N,) | Điểm độ tin cậy. |
result.boxes.cls | torch.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ức | Kiểu trả về | Mô tả |
|---|---|---|
update() | None | Cậ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() | Results | Trả 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() | Results | Trả 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() | Results | Trả 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() | Results | Trả 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() | Results | Tạ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.ndarray | Vẽ 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() | None | Hiển thị hình ảnh với các kết quả suy luận đã được chú thích. |
save() | str | Lư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() | str | Trả 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() | str | Lư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() | None | Lư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() | DataFrame | Chuyển đổi kết quả phát hiện thành một Polars DataFrame. |
to_csv() | str | Chuyển đổi kết quả phát hiện sang định dạng CSV. |
to_json() | str | Chuyể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.
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 boxesDướ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ên | Loại | Mô tả |
|---|---|---|
cpu() | Phương thức | Di chuyển đối tượng sang bộ nhớ CPU. |
numpy() | Phương thức | Chuyển đổi đối tượng sang mảng NumPy. |
cuda() | Phương thức | Di chuyển đối tượng sang bộ nhớ CUDA. |
to() | Phương thức | Di chuyển đối tượng sang thiết bị được chỉ định. |
xyxy | Thuộc tính (torch.Tensor) | Trả về các khung hình ở định dạng xyxy. |
conf | Thuộc tính (torch.Tensor) | Trả về các giá trị độ tin cậy của các khung hình. |
cls | Thuộc tính (torch.Tensor) | Trả về các giá trị lớp của các khung hình. |
id | Thuộc tính (torch.Tensor) | Trả về các ID theo dõi của các khung hình (nếu có). |
xywh | Thuộc tính (torch.Tensor) | Trả về các khung hình ở định dạng xywh. |
xyxyn | Thuộ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. |
xywhn | Thuộ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).
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 masksDướ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ên | Loại | Mô tả |
|---|---|---|
data | Thuộ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ức | Trả về tensor masks trên bộ nhớ CPU. |
numpy() | Phương thức | Trả về tensor masks dưới dạng mảng NumPy. |
cuda() | Phương thức | Trả về tensor masks trên bộ nhớ GPU. |
to() | Phương thức | Trả về tensor masks với thiết bị và dtype được chỉ định. |
xyn | Thuộc tính (list[np.ndarray]) | Danh sách các đa giác mask đã được chuẩn hóa. |
xy | Thuộ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.
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ên | Loại | Mô tả |
|---|---|---|
data | Thuộ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. |
shape | Thuộ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ức | Trả về tensor semantic mask trên bộ nhớ CPU. |
numpy() | Phương thức | Trả về tensor semantic mask dưới dạng mảng NumPy. |
cuda() | Phương thức | Trả về tensor semantic mask trên bộ nhớ GPU. |
to() | Phương thức | Trả 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 độ.
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 keypointsDướ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ên | Loại | Mô tả |
|---|---|---|
cpu() | Phương thức | Trả về tensor keypoints trên bộ nhớ CPU. |
numpy() | Phương thức | Trả về tensor keypoints dưới dạng mảng NumPy. |
cuda() | Phương thức | Trả về tensor keypoints trên bộ nhớ GPU. |
to() | Phương thức | Trả về tensor keypoints với thiết bị và kiểu dữ liệu được chỉ định. |
xyn | Thuộ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. |
xy | Thuộc tính (torch.Tensor) | Một danh sách các keypoints theo tọa độ pixel dưới dạng các tensor. |
conf | Thuộ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ố top1 và top5 cùng điểm số phân loại.
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 probabilitiesDướ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ên | Loại | Mô tả |
|---|---|---|
cpu() | Phương thức | Trả về một bản sao của tensor probs trên bộ nhớ CPU. |
numpy() | Phương thức | Trả về một bản sao của tensor probs dưới dạng mảng NumPy. |
cuda() | Phương thức | Trả về một bản sao của tensor probs trên bộ nhớ GPU. |
to() | Phương thức | Trả về một bản sao của tensor probs với thiết bị và kiểu dữ liệu được chỉ định. |
top1 | Thuộc tính (int) | Chỉ số của lớp top 1. |
top5 | Thuộc tính (list[int]) | Các chỉ số của top 5 lớp. |
top1conf | Thuộc tính (torch.Tensor) | Độ tin cậy của lớp top 1. |
top5conf | Thuộ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.
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 boxesDướ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ên | Loại | Mô tả |
|---|---|---|
cpu() | Phương thức | Di chuyển đối tượng sang bộ nhớ CPU. |
numpy() | Phương thức | Chuyển đổi đối tượng sang mảng NumPy. |
cuda() | Phương thức | Di chuyển đối tượng sang bộ nhớ CUDA. |
to() | Phương thức | Di chuyển đối tượng sang thiết bị được chỉ định. |
conf | Thuộc tính (torch.Tensor) | Trả về các giá trị độ tin cậy của các khung hình. |
cls | Thuộc tính (torch.Tensor) | Trả về các giá trị lớp của các khung hình. |
id | Thuộc tính (torch.Tensor) | Trả về các ID theo dõi của các khung hình (nếu có). |
xyxy | Thuộc tính (torch.Tensor) | Trả về các hộp nằm ngang theo định dạng xyxy. |
xywhr | Thuộc tính (torch.Tensor) | Trả về các hộp xoay theo định dạng xywhr. |
xyxyxyxy | Thuộc tính (torch.Tensor) | Trả về các hộp xoay theo định dạng xyxyxyxy. |
xyxyxyxyn | Thuộ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.
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ại | Mô tả | Mặc định |
|---|---|---|---|
conf | bool | Bao gồm điểm tin cậy phát hiện. | True |
line_width | float | Độ 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_size | float | Kích thước font chữ. Sẽ tự động co giãn theo kích thước ảnh nếu là None. | None |
font | str | Tên font cho chú thích văn bản. | 'Arial.ttf' |
pil | bool | Trả về ảnh dưới dạng đối tượng PIL Image. | False |
img | np.ndarray | Ảnh thay thế để vẽ. Sử dụng ảnh gốc nếu là None. | None |
im_gpu | torch.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_radius | int | Bán kính cho các keypoints được vẽ. | 5 |
kpt_line | bool | Nối các keypoints bằng các đường thẳng. | True |
labels | bool | Bao gồm nhãn lớp trong các chú thích. | True |
boxes | bool | Phủ các hộp bao lên ảnh. | True |
masks | bool | Phủ các mask lên ảnh. | True |
probs | bool | Bao gồm xác suất phân loại. | True |
show | bool | Hiển thị ảnh đã chú thích trực tiếp bằng trình xem ảnh mặc định. | False |
save | bool | Lưu ảnh đã chú thích vào tệp được chỉ định bởi filename. | False |
filename | str | Đường dẫn và tên tệp để lưu ảnh đã chú thích nếu save là True. | None |
color_mode | str | Chỉ định chế độ màu, ví dụ: 'instance' hoặc 'class'. | 'class' |
txt_color | tuple[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:
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-python và ultralytics).
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ĩa và phâ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() và 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ả.


