Bỏ qua nội dung

Mô hình dự đoán với Ultralytics YOLO

Ultralytics YOLO hệ sinh thái và tích hợp

Giới thiệu

Trong thế giới của máy họcthị giác máy tính , quá trình tìm ra ý nghĩa từ dữ liệu trực quan được gọi là 'suy luận' hoặc 'dự đoán'. Ultralytics YOLO11 cung cấp một tính năng mạnh mẽ được gọi là chế độ dự đoán , được thiết kế riêng cho việc suy luận hiệu suất cao, thời gian thực trên nhiều nguồn dữ liệu.



Đồng hồ: Làm thế nào để trích xuất các đầu ra từ Ultralytics YOLO Mô hình cho các dự án tùy chỉnh.

Ứng dụng thực tế

Chế tạo Thể thao Sự 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ã
Phát hiện phụ tùng xe Phát hiện cầu thủ bóng đá Phát hiện người ngã

Tại sao sử dụng Ultralytics YOLO để suy luận?

Đây là lý do tại sao bạn nên cân nhắc YOLO11 chế độ dự đoán của 's cho các nhu cầu suy luận khác nhau của bạn:

  • Tính linh hoạt: Có khả năng suy luận dựa trên hình ảnh, video và thậm chí cả phát trực tiếp.
  • Hiệu suất: Được thiết kế để xử lý tốc độ cao theo thời gian thực mà không làm giảm độ chính xác .
  • Dễ sử dụng: Trực quan Python Và CLI giao diện cho việc triển khai và thử nghiệm nhanh chóng.
  • Có khả năng tùy chỉnh cao: Nhiều cài đặt và thông số khác nhau để điều chỉnh hành vi suy luận của mô hình theo yêu cầu cụ thể của bạn.

Các tính năng chính của chế độ dự đoán

YOLO11 Chế độ dự đoán được thiết kế mạnh mẽ và linh hoạt, có các tính năng:

  • Khả năng 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 riêng lẻ, tập hợp hình ảnh, tệp video hay luồng video thời gian thực, chế độ dự đoán đều có thể đáp ứng nhu cầu của bạn.
  • Chế độ phát trực tuyến: Sử dụng tính năng phát trực tuyến để tạo ra một trình tạo hiệu quả về bộ nhớ Results đối tượng. Kích hoạt điều này bằng cách thiết lập stream=True trong phương thức gọi của trình dự đoán.
  • Xử lý hàng loạt: Khả năng xử lý nhiều hình ảnh hoặc khung hình video trong một đợt duy nhất, giúp tăng tốc thời gian suy luận.
  • Dễ tích hợp: Dễ dàng tích hợp với các đường ống dữ liệu hiện có và các thành phần phần mềm khác nhờ API linh hoạt.

Ultralytics YOLO các mô hình trả về một Python danh sách Results đối tượng, hoặc một bộ nhớ hiệu quả Python máy phát điện của Results các đối tượng khi stream=True được truyền cho mô hình trong quá trình suy luận:

Dự đoán

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n 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
from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")  # pretrained YOLO11n model

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

# Process results generator
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

Nguồn suy luận

YOLO11 có thể xử lý các loại nguồn đầu vào khác nhau để suy luận, như được hiển thị trong bảng bên dưới. 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 ở chế độ phát trực tuyến với đối số hay không stream=True ✅. Chế độ phát trực tuyến có lợi cho việc xử lý video hoặc phát trực tiếp vì nó tạo ra trình tạo kết quả thay vì tải tất cả khung hình vào bộ nhớ.

Mẹo

Sử dụng stream=True để xử lý các video dài hoặc các tập dữ liệu lớn để quản lý bộ nhớ hiệu quả. Khi stream=False, kết quả cho tất cả các khung hoặc điểm dữ liệu được lưu trữ trong bộ nhớ, có thể nhanh chóng tăng lên và gây ra lỗi ngoài bộ nhớ đối với các đầu vào lớn. Ngược lại, stream=True sử dụng trình tạo, chỉ lưu 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 sự cố hết bộ nhớ.

Nguồn Ví dụ Kiểu Ghi chú
hình ảnh 'image.jpg' str hoặc Path Tệp hình ảnh đơn.
ĐỊA CHỈ URL 'https://ultralytics.com/images/bus.jpg' str URL tới một hình ảnh.
ảnh chụp màn hình '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.
MởCV cv2.imread('image.jpg') np.ndarray Định dạng HWC với kênh BGR uint8 (0-255).
số lượng lớn np.zeros((640,1280,3)) np.ndarray Định dạng HWC với 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ó định dạng như MP4, AVI, v.v.
thư mục ✅ 'path/' str hoặc Path Đường dẫn đến thư mục chứa hình ảnh hoặc video.
toàn cầu ✅ 'path/*.jpg' str Mẫu Glob để khớp với nhiều tệp. Sử dụng * ký tự như một ký tự đại diện.
YouTube ✅ 'https://youtu.be/LNwODJXcvt4' str URL tới video trên YouTube.
luồng ✅ 'rtsp://example.com/media.mp4' str URL cho các giao thức phát trực tuyến như RTSP, RTMP, TCP hoặc địa chỉ IP.
đa luồng ✅ 'list.streams' str hoặc Path *.streams tệp văn bản có một URL luồng cho mỗi hàng, tức là 8 luồng sẽ chạy ở kích thước lô là 8.
máy quay phim ✅ 0 int Chỉ mục của thiết bị camera được kết nối để chạy suy luận.

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 suy luận trên một tệp hình ảnh.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

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

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

Chạy suy luận trên nội dung màn hình hiện tại dưới dạng ảnh chụp màn hình.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

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

Chạy suy luận trên hình ảnh hoặc video được lưu trữ từ xa qua URL.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"

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

Chạy suy luận trên một hình ảnh được mở bằng Python Thư viện hình ảnh (PIL).

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Open an image using PIL
source = Image.open("path/to/image.jpg")

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

Chạy suy luận trên hình ảnh được đọc bằng OpenCV.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")

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

Chạy suy luận trên một hình ảnh được biểu diễn dưới dạng một mảng numpy.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

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

Chạy suy luận trên hình ảnh được biểu diễn dưới dạng PyTorch tensor .

import torch

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

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

Chạy suy luận trên bộ sưu tập hình ảnh, URL, video và thư mục được liệt kê trong tệp CSV.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"

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

Chạy suy luận trên một tệp video. Bằng cách sử dụng stream=True, bạn có thể tạo trình tạo đối tượng Kết quả để giảm dung lượng bộ nhớ sử dụng.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to video file
source = "path/to/video.mp4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Chạy suy luận trên tất cả hình ảnh và video trong một thư mục. Để chụp ảnh và video trong các thư mục con, hãy sử dụng mẫu glob, tức là path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to directory containing images and videos for inference
source = "path/to/dir"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Chạy suy luận trên tất cả hình ảnh và video khớp với biểu thức glob với * nhân vật.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"

# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Chạy suy luận trên video YouTube. Bằng cách sử dụng stream=True, bạn có thể tạo trình tạo đối tượng Kết quả để giảm dung lượng bộ nhớ sử dụng cho các video dài.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Sử dụng chế độ luồng để chạy suy luận trên luồng video trực tiếp bằng giao thức RTSP, RTMP, TCP hoặc địa chỉ IP. Nếu chỉ cung cấp một luồng, mô hình sẽ chạy suy luận với kích thước lô của 1. Đối với nhiều luồng, một .streams tệp văn bản có thể được sử dụng để thực hiện suy luận theo lô, trong đó kích thước lô được xác định bởi số luồng được cung cấp (ví dụ: kích thước lô 8 cho 8 luồng).

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP, or IP streaming address

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Đối với việc sử dụng luồng đơn, kích thước lô được đặt thành 1 theo mặc định, cho phép xử lý hiệu quả nguồn cấp dữ liệu video theo thời gian thực.

Để xử lý nhiều luồng video cùng lúc, hãy sử dụng .streams tệp văn bản chứa các nguồn phát trực tuyến. Mô hình sẽ chạy suy luận theo lô trong đó kích thước lô bằng số luồng. Thiết lập này cho phép xử lý hiệu quả nhiều nguồn cấp dữ liệu đồng thời.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per line

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Ví dụ .streams tập tin văn bản:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Mỗi hàng trong tệp biểu thị một nguồn phát trực tuyến, cho phép bạn theo dõi và suy luận trên nhiều luồng video cùng một lúc.

Bạn có thể chạy suy luận trên thiết bị camera được kết nối bằng cách chuyển chỉ mục của camera cụ thể đó tới source.

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on the source
results = model(source=0, stream=True)  # generator of Results objects

Lập luận suy luận

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

Ví dụ

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

Lập luận suy luận:

Lý lẽ Kiểu Mặc định Sự miêu tả
source str 'ultralytics/assets' Chỉ định nguồn dữ liệu để suy luận. Có thể là đường dẫn hình ảnh, tệp video, thư mục, URL hoặc ID thiết bị cho nguồn cấp dữ liệu trực tiếp. Hỗ trợ nhiều định dạng và nguồn, cho phép ứng dụng linh hoạt trên nhiều loại đầu vào khác nhau .
conf float 0.25 Đặt ngưỡng tin cậy tối thiểu cho các 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ị bỏ qua. Điều chỉnh giá trị này có thể giúp giảm các kết quả dương tính giả.
iou float 0.7 Ngưỡng Giao điểm qua Liên hợp (IoU) cho Không triệt tiêu tối đa (NMS). Các giá trị thấp hơn dẫn đến ít phát hiện hơn bằng cách loại bỏ các hộp chồng chéo, hữu ích để giảm trùng lặp.
imgsz int or tuple 640 Xác định kích thước hình ảnh để suy luận. Có thể là một số nguyên duy nhất 640 để thay đổi kích thước hình vuông hoặc một bộ (chiều cao, chiều rộng). Kích thước phù hợp có thể cải thiện khả năng phát hiện sự chính xác và tốc độ xử lý.
half bool False Cho phép suy luận bán chính xác (FP16), có thể tăng tốc suy luận mô hình trên 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 hoặc 0). Cho phép người dùng lựa chọn giữa CPU , một cụ thể GPU hoặc các thiết bị tính toán khác để thực hiện mô hình.
batch int 1 Chỉ định kích thước lô để suy luận (chỉ hoạt động khi nguồn là một thư mục, tập tin video hoặc .txt tài liệu). Kích thước lô lớn hơn có thể cung cấp thông lượng cao hơn, rút ngắn tổng thời gian cần thiết cho quá trình suy luận.
max_det int 300 Số lượng phát hiện tối đa được phép trên mỗi hình ảnh. Giới hạn tổng số đối tượng mà mô hình có thể phát hiện trong một suy luận duy nhất, ngăn chặn đầu ra quá mức trong các cảnh dày đặc.
vid_stride int 1 Bước nhảy khung hình 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 chi phí là độ phân giải thời gian. Giá trị 1 xử lý mọi khung hình, giá trị cao hơn bỏ qua các khung hình.
stream_buffer bool False Xác định xem có nên xếp hàng các khung hình đến cho luồng video hay không. Nếu False, các khung cũ bị loại bỏ để chứa các khung mới (được tối ưu hóa cho các ứng dụng thời gian thực). Nếu `Đúng', xếp hàng các khung mới trong bộ đệm, đảm bảo không có khung nào bị bỏ qua, nhưng sẽ gây ra độ trễ nếu FPS suy luận thấp hơn FPS luồng.
visualize bool False Kích hoạt khả năng trực quan hóa các tính năng của mô hình trong quá trình suy luận, cung cấp thông tin chi tiết về những gì mô hình đang "nhìn thấy". Hữu ích cho việc gỡ lỗi và diễn giải mô hình.
augment bool False Cho phép tăng cường thời gian thử nghiệm (TTA) để dự đoán, có khả năng cải thiện độ mạnh mẽ của phát hiện với cái giá phải trả là tốc độ suy luận.
agnostic_nms bool False Cho phép Non-Maximum Suppression (NMS) không phân biệt lớp, hợp nhất các hộp chồng chéo của các lớp khác nhau. Hữu ích trong các tình huống phát hiện nhiều lớp trong đó sự chồng chéo lớp là phổ biến.
classes list[int] None Lọc các dự đoán thành một tập hợp ID lớp. Chỉ các phát hiện thuộc về 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 có liên quan trong các tác vụ phát hiện nhiều lớp.
retina_masks bool False Trả về mặt nạ phân đoạn có độ phân giải cao. Các mặt nạ trả về (masks.data) sẽ khớp với kích thước hình ảnh gốc nếu được bật. Nếu bị tắt, chúng sẽ có kích thước hình ả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 vectơ đặc điểm hoặc nhúng . Hữu ích cho các tác vụ hạ lưu như phân cụm hoặc tìm kiếm sự tương đồng.
project str None Tên của thư mục dự án nơi đầu ra dự đoán được lưu nếu save được bật.
name str None Tên của lần chạy dự đoán. Được sử dụng để tạo một thư mục con trong thư mục dự án, nơi lưu trữ các đầu ra dự đoán nếu save được bật.

Lập luận về hình ảnh:

Lý lẽ Kiểu Mặc định Sự miêu tả
show bool False Nếu như True, hiển thị 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 thử nghiệm.
save bool False hoặc True Cho phép lưu hình ảnh hoặc video có chú thích vào tệp. Hữu ích cho việc lập 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 & Sai 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 vào tệp văn bản, theo định dạng [class] [x_center] [y_center] [width] [height] [confidence]. Hữu ích khi tích hợp với các công cụ phân tích khác.
save_conf bool False Bao gồm điểm tin cậy trong các tệp văn bản đã lưu. Tăng cường chi tiết có sẵn để xử lý hậu kỳ và phân tích.
save_crop bool False Lưu hình ảnh đã cắt của các 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 các dữ liệu tập trung cho các đối tượng cụ thể.
show_labels bool True Hiển thị nhãn cho từng phát hiện trong đầu ra trực quan. Cung cấp sự hiểu biết ngay lập tức về các đối tượng được phát hiện.
show_conf bool True Hiển thị điểm tin cậy cho mỗi lần phát hiện cùng với nhãn. Cung cấp thông tin chi tiết về mức độ chắc chắn của mô hình cho mỗi lần phát hiện.
show_boxes bool True Vẽ các hộp giới hạn xung quanh các đối tượng được phát hiện. Cần thiết để nhận dạng trực quan và xác định vị trí của các đối tượng trong hình ảnh hoặc khung video.
line_width None hoặc int None Chỉ định độ rộng đường của hộp giới hạn. Nếu None, độ rộng của đường được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp tùy chỉnh trực quan để rõ nét hơn.

Định dạng hình ảnh và video

YOLO11 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 bên dưới để biết các hậu tố hợp lệ và ví dụ về lệnh dự đoán.

Hình ảnh

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

Ghi chú

Hình ảnh HEIC chỉ được hỗ trợ để suy luận chứ không phải để đào tạo.

Hậu tố hình ảnh Ví dụ lệnh Predict Thẩm quyền giải quyết
.bmp yolo predict source=image.bmp Microsoft Định dạng tập tin BMP
.dng yolo predict source=image.dng Adobe DNG
.jpeg yolo predict source=image.jpeg JPEG
.jpg yolo predict source=image.jpg JPEG
.mpo yolo predict source=image.mpo Đối tượng nhiều hình ảnh
.png yolo predict source=image.png Đồ họa mạng di động
.tif yolo predict source=image.tif Định dạng tệp hình ảnh thẻ
.tiff yolo predict source=image.tiff Định dạng tệp hình ảnh thẻ
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm FloatMap di động
.HEIC yolo predict source=image.HEIC Định dạng hình ảnh hiệu suất cao

Video

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

Hậu tố video Ví dụ lệnh Predict Thẩm quyền giải quyết
.asf yolo predict source=video.asf Định dạng hệ thống nâng cao
.avi yolo predict source=video.avi Âm thanh Video xen kẽ
.gif yolo predict source=video.gif Định dạng trao đổi đồ họa
.m4v yolo predict source=video.m4v MPEG-4 Phần 14
.mkv yolo predict source=video.mkv Matroska
.mov yolo predict source=video.mov Định dạng tập tin QuickTime
.mp4 yolo predict source=video.mp4 MPEG-4 Phần 14 - Wikipedia
.mpeg yolo predict source=video.mpeg MPEG-1 Phần 2
.mpg yolo predict source=video.mpg MPEG-1 Phần 2
.ts yolo predict source=video.ts Luồng truyền tải MPEG
.wmv yolo predict source=video.wmv Video của Windows Media
.webm yolo predict source=video.webm Dự án WebM

Làm việc với Kết quả

Tất cả Ultralytics predict() các cuộc gọi sẽ trả về một danh sách Results các đối tượng:

Kết quả

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

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

Thuộc tính Kiểu Sự miêu tả
orig_img numpy.ndarray Hình ảnh gốc dưới dạng một mảng numpy.
orig_shape tuple Hình dạng ả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 hộp giới hạn phát hiện.
masks Masks, optional Một đối tượng Mặt nạ chứa các mặt nạ phát hiện.
probs Probs, optional Một đối tượng Probs chứa xác suất của mỗi lớp cho nhiệm vụ phân loại.
keypoints Keypoints, optional Đối tượng Keypoints chứa các điểm chính được phát hiện cho từng đối tượng.
obb OBB, optional Một đối tượng OBB chứa các hộp giới hạn định hướng.
speed dict Từ điển về 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 hình ảnh.
names dict Từ điển tên lớp.
path str Đường dẫn đến tệp hình ảnh.

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

Phương pháp Kiểu trả về Sự miêu tả
update() None Cập nhật các thuộc tính hộp, mặt nạ và xác suất của đối tượng Kết quả.
cpu() Results Trả về một bản sao của đối tượng Results với tất cả các tenxơ trên CPU ký ức.
numpy() Results Trả về một bản sao của đối tượng Results với tất cả các tenxơ dưới dạng 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 tenxơ trên GPU ký ức.
to() Results Trả về một bản sao của đối tượng Results với các tenxơ trên thiết bị và kiểu dữ liệu được chỉ định.
new() Results Trả về một đối tượng Results mới có cùng hình ảnh, đường dẫn và tên.
plot() numpy.ndarray Biểu đồ kết quả phát hiện. Trả về một mảng numpy của hình ảnh được chú thích.
show() None Hiển thị kết quả có chú thích trên màn hình.
save() None Lưu kết quả có chú thích vào tệp.
verbose() str Trả về chuỗi nhật ký cho mỗi tác vụ.
save_txt() None Lưu dự đoán vào tệp txt.
save_crop() None Lưu các dự đoán đã cắt vào save_dir/cls/file_name.jpg.
tojson() str Chuyển đổi đối tượng sang định dạng JSON.

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

Hộp

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

Hộp

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Đây là một bảng cho Boxes các phương thức và thuộc tính của lớp, bao gồm tên, kiểu và mô tả của chúng:

Tên Kiểu Sự miêu tả
cpu() Phương pháp Di chuyển đối tượng đến CPU ký ức.
numpy() Phương pháp Chuyển đổi đối tượng thành mảng numpy.
cuda() Phương pháp Di chuyển đối tượng đến CUDA ký ức.
to() Phương pháp Di chuyển đối tượng đến thiết bị được chỉ định.
xyxy Tài sản (torch.Tensor) Trả về các hộp theo định dạng xyxy.
conf Tài sản (torch.Tensor) Trả về giá trị độ tin cậy của các hộp.
cls Tài sản (torch.Tensor) Trả về giá trị lớp của các hộp.
id Tài sản (torch.Tensor) Trả lại ID của các hộp (nếu có).
xywh Tài sản (torch.Tensor) Trả về các hộp theo định dạng xywh.
xyxyn Tài sản (torch.Tensor) Trả về các hộp theo định dạng xyxy được chuẩn hóa theo kích thước ảnh gốc.
xywhn Tài sản (torch.Tensor) Trả về các hộp theo định dạng xywh được chuẩn hóa theo kích thước ảnh gốc.

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

Mặt nạ

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

Mặt nạ

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Đây là một bảng cho Masks các phương thức và thuộc tính của lớp, bao gồm tên, kiểu và mô tả của chúng:

Tên Kiểu Sự miêu tả
cpu() Phương pháp Trả lại mặt nạ tensor TRÊN CPU ký ức.
numpy() Phương pháp Trả lại mặt nạ tensor dưới dạng một mảng numpy.
cuda() Phương pháp Trả lại mặt nạ tensor TRÊN GPU ký ức.
to() Phương pháp Trả lại mặt nạ tensor với thiết bị và kiểu dữ liệu được chỉ định.
xyn Tài sản (torch.Tensor) Danh sách các phân đoạn được chuẩn hóa được biểu diễn dưới dạng tenxơ.
xy Tài sản (torch.Tensor) Danh sách các phân đoạn theo tọa độ pixel được biểu diễn dưới dạng tenxơ.

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

Điểm chính

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

Điểm chính

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

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

Đây là một bảng cho Keypoints các phương thức và thuộc tính của lớp, bao gồm tên, kiểu và mô tả của chúng:

Tên Kiểu Sự miêu tả
cpu() Phương pháp Trả về các điểm chính tensor TRÊN CPU ký ức.
numpy() Phương pháp Trả về các điểm chính tensor dưới dạng một mảng numpy.
cuda() Phương pháp Trả về các điểm chính tensor TRÊN GPU ký ức.
to() Phương pháp Trả về các điểm chính tensor với thiết bị và kiểu dữ liệu được chỉ định.
xyn Tài sản (torch.Tensor) Danh sách các điểm chính được chuẩn hóa được biểu diễn dưới dạng tenxơ.
xy Tài sản (torch.Tensor) Danh sách các điểm chính trong tọa độ pixel được biểu diễn dưới dạng tenxơ.
conf Tài sản (torch.Tensor) Trả về giá trị độ tin cậy của các điểm chính nếu có, nếu không thì trả về Không có.

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

Vấn đề

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

Vấn đề

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

# Run inference on an image
results = model("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 pháp và thuộc tính cho Probs lớp học:

Tên Kiểu Sự miêu tả
cpu() Phương pháp Trả về một bản sao của probs tensor TRÊN CPU ký ức.
numpy() Phương pháp Trả về một bản sao của probs tensor dưới dạng một mảng numpy.
cuda() Phương pháp Trả về một bản sao của probs tensor TRÊN GPU ký ức.
to() Phương pháp Trả về một bản sao của probs tensor với thiết bị và kiểu dữ liệu được chỉ định.
top1 Tài sản (int) Chỉ số của lớp đứng đầu.
top5 Tài sản (list[int]) Chỉ số của 5 lớp đứng đầu.
top1conf Tài sản (torch.Tensor) Sự tự tin của lớp top 1.
top5conf Tài sản (torch.Tensor) Sự tự tin của 5 lớp đứng đầu.

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

OBB

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

OBB

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("boats.jpg")  # results list

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

Đây là một bảng cho OBB các phương thức và thuộc tính của lớp, bao gồm tên, kiểu và mô tả của chúng:

Tên Kiểu Sự miêu tả
cpu() Phương pháp Di chuyển đối tượng đến CPU ký ức.
numpy() Phương pháp Chuyển đổi đối tượng thành mảng numpy.
cuda() Phương pháp Di chuyển đối tượng đến CUDA ký ức.
to() Phương pháp Di chuyển đối tượng đến thiết bị được chỉ định.
conf Tài sản (torch.Tensor) Trả về giá trị độ tin cậy của các hộp.
cls Tài sản (torch.Tensor) Trả về giá trị lớp của các hộp.
id Tài sản (torch.Tensor) Trả lại ID của các hộp (nếu có).
xyxy Tài sản (torch.Tensor) Trả về các hộp nằm ngang theo định dạng xyxy.
xywhr Tài sản (torch.Tensor) Trả về các hộp đã xoay theo định dạng xywhr.
xyxyxyxy Tài sản (torch.Tensor) Trả về các hộp đã xoay theo định dạng xyxyxyxy.
xyxyxyxyn Tài sản (torch.Tensor) Trả về các hộp đã xoay theo định dạng xyxyxyxy được chuẩn hóa theo kích thước hình ảnh.

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

Vẽ kết quả

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

Vẽ đồ thị

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg'
results = model(["bus.jpg", "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")

plot() Tham số phương pháp

Các plot() phương pháp này hỗ trợ nhiều đối số khác nhau để tùy chỉnh đầu ra:

Lý lẽ Kiểu Sự miêu tả Mặc định
conf bool Bao gồm điểm tin cậy phát hiện. True
line_width float Chiều rộng đường của hộp giới hạn. Tỷ lệ với kích thước hình ảnh nếu None. None
font_size float Kích thước phông chữ văn bản. Tỷ lệ với kích thước hình ảnh nếu None. None
font str Tên phông chữ cho chú thích văn bản. 'Arial.ttf'
pil bool Trả về hình ảnh dưới dạng đối tượng Hình ảnh PIL. False
img numpy.ndarray Hình ảnh thay thế để vẽ đồ thị. Sử dụng hình ảnh gốc nếu None. None
im_gpu torch.Tensor GPU - hình ảnh được tăng tốc để vẽ mặt nạ nhanh hơn. Hình dạng: (1, 3, 640, 640). None
kpt_radius int Bán kính cho các điểm chính được vẽ. 5
kpt_line bool Kết nối các điểm chính bằng các đường thẳng. True
labels bool Bao gồm nhãn lớp trong chú thích. True
boxes bool Chèn các hộp giới hạn vào hình ảnh. True
masks bool Phủ mặt nạ lên hình ảnh. True
probs bool Bao gồm xác suất phân loại. True
show bool Hiển thị hình ảnh có chú thích trực tiếp bằng trình xem hình ảnh mặc định. False
save bool Lưu hình ảnh có chú thích vào một tập tin được chỉ định bởi filename. False
filename str Đường dẫn và tên của tệp để lưu hình ảnh có chú thích nếu saveTrue. None
color_mode str Chỉ định chế độ màu, ví dụ: 'thể hiện' hoặc 'lớp'. 'class'

Suy luận an toàn luồng

Đảm bảo an toàn luồng trong quá trình suy luận là rất quan trọng khi bạn đang chạy nhiều YOLO mô hình song song trên các luồng khác nhau. Suy luận an toàn luồng đảm bảo rằng các dự đoán của mỗi luồng được cô lập và không ảnh hưởng lẫn nhau, tránh tình trạng chạy đua và đảm bảo đầu ra nhất quán và đáng tin cậy.

Khi sử dụng YOLO mô hình trong ứng dụng đa luồng, điều quan trọng là phải khởi tạo các đối tượng mô hình riêng biệt cho mỗi luồng hoặc sử dụng bộ lưu trữ cục bộ luồng để ngăn ngừa xung đột:

Suy luận an toàn luồng

Khởi tạo một mô hình duy nhất bên trong mỗi luồng để suy luận an toàn cho 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()

Để có cái nhìn sâu sắc hơn về suy luận an toàn luồng với YOLO mô hình và hướng dẫn từng bước, vui lòng tham khảo Hướng dẫn suy luận an toàn luồng YOLO của chúng tôi. 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 những cạm bẫy phổ biến và đảm bảo suy luận đa luồng của bạn chạy trơn tru.

Nguồn phát trực tuyến for-vòng lặp

Đây là một Python tập lệnh sử dụng OpenCV (cv2) Và YOLO để chạy suy luận trên các khung 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).

Phát trực tuyến vòng lặp for

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.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 khỏi vòng lặp bằng cách nhấn 'q'.

CÂU HỎI THƯỜNG GẶP

Là gì Ultralytics YOLO và chế độ dự đoán của nó để suy luận theo thời gian thực?

Ultralytics YOLO là một mô hình tiên tiến để phát hiện, phân đoạn và phân loại đối tượng theo thời gian thực. Chế độ dự đoán của nó cho phép người dùng thực hiện suy luận 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ế để có hiệu suất và tính linh hoạt, nó cũng cung cấp chế độ xử lý hàng loạt và phát trực tuyến. Để biết thêm chi tiết về các tính năng của nó, hãy xem chế độ dự đoán YOLO Ultralytics .

Làm thế nào tôi có thể chạy suy luận bằng cách sử dụ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 hình ảnh, video, thư mục, URL và luồng riêng lẻ. Bạn có thể chỉ định nguồn dữ liệu trong model.predict() gọi. Ví dụ, sử dụng 'image.jpg' cho một hình ảnh cục bộ hoặc 'https://ultralytics.com/images/bus.jpg' cho một URL. Kiểm tra các ví dụ chi tiết cho nhiều nguồn suy luận trong tài liệu.

Làm thế nào để tôi tối ưu hóa YOLO tốc độ suy luận và sử dụng bộ nhớ?

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

Những lập luận suy luận nào Ultralytics YOLO ủng hộ?

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

Làm thế nào tôi có thể hình dung và lưu kết quả của YOLO dự đoán?

Sau khi chạy suy luận với YOLO , các Results các đối tượng chứa các phương pháp để hiển thị và lưu hình ảnh có chú thích. Bạn có thể sử dụng các phương pháp như result.show()result.save(filename="result.jpg") để trực quan hóa và lưu kết quả. Để biết danh sách đầy đủ các phương pháp này, hãy tham khảo làm việc với kết quả phần.

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 1 tháng

Bình luận