Dự đoán mô hình với Ultralytics YOLO
Giới thiệu
Trong thế giới của máy học và thị 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.
Xem: 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 trong thế giới thực
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ã người |
Tại sao sử dụng Ultralytics YOLO cho suy luận?
Sau đây là lý do tại sao bạn nên cân nhắc chế độ dự đoán của YOLO11 cho các nhu cầu suy luận khác nhau của mình:
- Linh hoạt: Có khả năng suy luận về hình ảnh, video và thậm chí cả luồng 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 để triển khai và thử nghiệm nhanh chóng.
- Khả năng tùy biến cao: Các 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
Chế độ dự đoán của YOLO11 đượ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 nhiều nguồn dữ liệu: Cho dù dữ liệu của bạn ở dạng hình ảnh riêng lẻ, bộ sưu tập hình ảnh, tệp video hay luồng video thời gian thực, chế độ dự đoán sẽ giúp bạn.
- Chế độ phát trực tuyến: Sử dụng tính năng phát trực tuyến để tạo trình tạo bộ nhớ hiệu quả
Results
Đối tượng. Bật tùy chọn này bằng cách cài đặtstream=True
trong phương thức gọi của người 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 hơn nữa thời gian suy luận.
- Tích hợp thân thiện: 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 trong hai Python Danh sách Results
đối tượng hoặc bộ nhớ hiệu quả Python Máy phát điện của Results
Đối tượng khi stream=True
được chuyển đến 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 luồng trực tiếp vì nó tạo ra một trình tạo kết quả thay vì tải tất cả các khung hình vào bộ nhớ.
Mẹo
Dùng stream=True
để xử lý video dài hoặc bộ 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ớ, điều này có thể nhanh chóng cộng lại và gây ra lỗi hết bộ nhớ cho các đầu vào lớn. Ngược lại, stream=True
sử dụng một máy phát điện, chỉ giữ kết quả của khung hoặc điểm dữ liệu hiện tại trong bộ nhớ, giảm đáng kể mức tiêu thụ bộ nhớ và ngăn ngừa các vấn đề hết bộ nhớ.
Nguồn | Ví dụ | Kiểu | Ghi chú |
---|---|---|---|
ảnh | 'image.jpg' | str hoặc Path | Tệp hình ảnh đơn. |
ĐỊA CHỈ | 'https://ultralytics.com/images/bus.jpg' | str | URL đến 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 các kênh BGR uint8 (0-255) . |
tê liệt | 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. |
thư mục ✅ | 'path/' | str hoặc Path | Đường dẫn đến thư mục chứa hình ảnh hoặc video. |
quả ✅ cầu | 'path/*.jpg' | str | Mẫu hình cầu để khớp với nhiều tệp. Sử dụng * nhân vật như một ký tự đại diện. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL đến video YouTube. |
dò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 trên mỗi hàng, tức là 8 luồng sẽ chạy ở kích thước hàng loạt 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ụ về mã để sử dụng từng loại nguồn:
Nguồn dự đoán
Chạy suy luận trên tệp hình ảnh.
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.
Chạy suy luận trên hình ảnh hoặc video được lưu trữ từ xa qua URL.
Chạy suy luận trên hình ảnh được mở bằng Python Thư viện hình ảnh (PIL).
Chạy suy luận trên một hình ảnh được đọc bằng OpenCV.
Chạy suy luận trên một hình ảnh được biểu diễn dưới dạng 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 tập hợp hình ảnh, URL, video và thư mục được liệt kê trong tệp CSV.
Chạy suy luận trên tệp video. Bằng cách sử dụng stream=True
, bạn có thể tạo một trình tạo các đối tượng Kết quả để giảm mức sử dụng bộ nhớ.
Chạy suy luận trên tất cả hình ảnh và video trong một thư mục. Để cũng chụp ảnh và quay video trong các thư mục con, hãy sử dụng mẫu hình cầu, tức là path/to/dir/**/*
.
Chạy suy luận trên tất cả các hình ảnh và video phù hợp với biểu thức hình cầu với *
Ký 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 một trình tạo các đối tượng Kết quả để giảm mức sử dụng bộ nhớ cho các video dài.
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
.
Lập luận suy luận
model.predict()
Chấp nhận nhiều đối số có thể được truyền tại thời điểm suy luận để ghi đè các giá trị mặc định:
Ví dụ
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 để 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 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ể GPUhoặc các thiết bị điện toán khác để thực thi mô hình. |
max_det | int | 300 | Số lần phát hiện tối đa được phép cho 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 | Sải chân 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í phân giải tạm thời. Giá trị 1 xử lý mọi khung, giá trị cao hơn bỏ qua khung. |
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 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à giải thích mô hình. |
augment | bool | False | Cho phép tăng thời gian kiểm tra (TTA) cho các dự đoán, có khả năng cải thiện độ mạnh phát hiện với chi phí là tốc độ suy luận. |
agnostic_nms | bool | False | Cho phép ngăn chặn không tối đa bất khả tri lớp (NMS), kết hợp 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 cho một tập hợp ID lớp. Chỉ những 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 có liên quan trong các nhiệm 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. |
Đối số trực quan hóa:
Lý lẽ | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
show | bool | False | Nếu True , hiển thị hình ảnh hoặc video có chú thích trong 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, hãy lưu các khung hình riêng lẻ dưới dạng hình ảnh. Hữu ích để trích xuất các khung 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 đ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 tập dữ liệu, phân tích hoặc tạo bộ 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 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 phát hiện cùng với nhãn. Cung cấp cái nhìn sâu sắc về sự 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 cho việc nhận dạng trực quan và 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 chiều rộng đường của các hộp giới hạn. Nếu None , chiều rộng dò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 cho rõ ràng. |
Đị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 hợp lệ Ultralytics định dạng hình ảnh.
Ghi
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ụ về lệnh dự đoán | Tham khảo |
---|---|---|
.bmp | yolo predict source=image.bmp | Microsoft Định dạng tệp 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 đa 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 hợp lệ Ultralytics định dạng video.
Hậu tố video | Ví dụ về lệnh dự đoán | Tham khảo |
---|---|---|
.asf | yolo predict source=video.asf | Định dạng hệ thống nâng cao |
.avi | yolo predict source=video.avi | Xen kẽ video âm thanh |
.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 QuickTime |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 – Wikipedia tiếng Việt |
.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 | Windows Media Video |
.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
Đối tượng:
Kết quả
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 hình ảnh gốc ở định dạng (chiều cao, chiều rộng). |
boxes | Boxes, optional | Một đối tượng Hộp 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 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 | Một đối tượng Keypoints chứa các keypoint được phát hiện cho mỗi đố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 cho mỗi hình ảnh. |
names | dict | Một từ điển tên lớp. |
path | str | Đường dẫn đến tệp hình ảnh. |
Results
Đối tượng có các phương thức sau:
Phương pháp | Loại trả hàng | Sự miêu tả |
---|---|---|
update() | None | Cập nhật các thuộc tính hộp, mặt nạ và probs của đối tượng Kết quả. |
cpu() | Results | Trả về một bản sao của đối tượng Kết quả với tất cả các tensor bật CPU trí nhớ. |
numpy() | Results | Trả về một bản sao của đối tượng Kết quả với tất cả các tensor dưới dạng mảng numpy. |
cuda() | Results | Trả về một bản sao của đối tượng Kết quả với tất cả các tensor bật GPU trí nhớ. |
to() | Results | Trả về một bản sao của đối tượng Kết quả với tensor trên thiết bị được chỉ định và dtype. |
new() | Results | Trả về một đối tượng Kết quả mới có cùng hình ảnh, đường dẫn và tên. |
plot() | numpy.ndarray | Vẽ kết quả phát hiện. Trả về mảng numpy của hình ảnh được chú thích. |
show() | None | Hiển thị kết quả có chú thích để sàng lọc. |
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 dự đoán đã xén 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
Dưới đây là bảng cho Boxes
Các phương thức và thuộc tính của lớp, bao gồm tên, loại 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 trí nhớ. |
numpy() | Phương pháp | Chuyển đổi đối tượng thành một mảng numpy. |
cuda() | Phương pháp | Di chuyển đối tượng đến CUDA trí nhớ. |
to() | Phương pháp | Di chuyển đối tượng đến thiết bị được chỉ định. |
xyxy | Bất động sản (torch.Tensor ) | Trả lại các hộp ở định dạng xyxy. |
conf | Bất động sản (torch.Tensor ) | Trả về giá trị tin cậy của các hộp. |
cls | Bất động sản (torch.Tensor ) | Trả về giá trị lớp của các hộp. |
id | Bất động sản (torch.Tensor ) | Trả về ID theo dõi của các hộp (nếu có). |
xywh | Bất động sản (torch.Tensor ) | Trả lại các hộp ở định dạng xywh. |
xyxyn | Bất động sản (torch.Tensor ) | Trả về các hộp ở định dạng xyxy được chuẩn hóa theo kích thước hình ảnh gốc. |
xywhn | Bất động sản (torch.Tensor ) | Trả lại các hộp ở đị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 Boxes
Tài liệu lớp học.
Mặt nạ
Masks
Đối tượng có thể được sử dụng chỉ mục, thao tác và chuyển đổi mặt nạ thành phân đoạn.
Mặt nạ
Dưới đây là bảng cho Masks
Các phương thức và thuộc tính của lớp, bao gồm tên, loại và mô tả của chúng:
Tên | Kiểu | Sự miêu tả |
---|---|---|
cpu() | Phương pháp | Trả về mặt nạ tensor trên CPU trí nhớ. |
numpy() | Phương pháp | Trả về mặt nạ tensor như một mảng numpy. |
cuda() | Phương pháp | Trả về mặt nạ tensor trên GPU trí nhớ. |
to() | Phương pháp | Trả về mặt nạ tensor Với thiết bị được chỉ định và DTYPE. |
xyn | Bất động sản (torch.Tensor ) | Một danh sách các phân đoạn chuẩn hóa được biểu diễn dưới dạng tensor. |
xy | Bất động sản (torch.Tensor ) | Danh sách các phân đoạn trong tọa độ pixel được biểu diễn dưới dạng tensor. |
Để 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 index, thao tác và chuẩn hóa tọa độ.
Điểm chính
Dưới đây là bảng cho Keypoints
Các phương thức và thuộc tính của lớp, bao gồm tên, loại 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 trí nhớ. |
numpy() | Phương pháp | Trả về các điểm chính tensor như một mảng numpy. |
cuda() | Phương pháp | Trả về các điểm chính tensor trên GPU trí nhớ. |
to() | Phương pháp | Trả về các điểm chính tensor Với thiết bị được chỉ định và DTYPE. |
xyn | Bất động sản (torch.Tensor ) | Một danh sách các điểm chính chuẩn hóa được biểu diễn dưới dạng tensor. |
xy | Bất động 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 tensor. |
conf | Bất động 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ì Không có. |
Để biết thêm chi tiết, hãy xem Keypoints
Tài liệu lớp học.
Thăm dò
Probs
Đối tượng có thể được sử dụng index, get top1
và top5
chỉ số và điểm số phân loại.
Thăm dò
Dưới đây là bảng tóm tắt các phương thức và thuộc tính cho Probs
lớp:
Tên | Kiểu | Sự miêu tả |
---|---|---|
cpu() | Phương pháp | Trả về một bản sao của prob tensor trên CPU trí nhớ. |
numpy() | Phương pháp | Trả về một bản sao của prob tensor như một mảng numpy. |
cuda() | Phương pháp | Trả về một bản sao của prob tensor trên GPU trí nhớ. |
to() | Phương pháp | Trả về một bản sao của prob tensor Với thiết bị được chỉ định và DTYPE. |
top1 | Bất động sản (int ) | Chỉ số của lớp 1 hàng đầu. |
top5 | Bất động sản (list[int] ) | Chỉ số của 5 lớp hàng đầu. |
top1conf | Bất động sản (torch.Tensor ) | Sự tự tin của lớp top 1. |
top5conf | Bất động sản (torch.Tensor ) | Sự tự tin của 5 lớp hà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
Dưới đây là bảng cho OBB
Các phương thức và thuộc tính của lớp, bao gồm tên, loại 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 trí nhớ. |
numpy() | Phương pháp | Chuyển đổi đối tượng thành một mảng numpy. |
cuda() | Phương pháp | Di chuyển đối tượng đến CUDA trí nhớ. |
to() | Phương pháp | Di chuyển đối tượng đến thiết bị được chỉ định. |
conf | Bất động sản (torch.Tensor ) | Trả về giá trị tin cậy của các hộp. |
cls | Bất động sản (torch.Tensor ) | Trả về giá trị lớp của các hộp. |
id | Bất động sản (torch.Tensor ) | Trả về ID theo dõi của các hộp (nếu có). |
xyxy | Bất động sản (torch.Tensor ) | Trả về các hộp ngang ở định dạng xyxy. |
xywhr | Bất động sản (torch.Tensor ) | Trả về các hộp đã xoay ở định dạng xywhr. |
xyxyxyxy | Bất động sản (torch.Tensor ) | Trả về các hộp đã xoay ở định dạng xyxyxyxy. |
xyxyxyxyn | Bất động sản (torch.Tensor ) | Trả về các hộp đã xoay ở định dạng xyxyxyxyy đượ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.
Kết quả vẽ
Các plot()
Phương pháp trong Results
Các đối tượng 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 (chẳng hạ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 thức 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ẽ
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 hỗ trợ các đố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 các hộp giới hạn. Tỷ lệ với kích thước hình ảnh nếu None . | None |
font_size | float | Cỡ 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 PIL Image. | False |
img | numpy.ndarray | Hình ảnh thay thế cho âm mưu. Sử dụng hình ảnh gốc nếu: None . | None |
im_gpu | torch.Tensor | GPU-Tăng tốc hình ảnh để 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 với các dòng. | True |
labels | bool | Bao gồm nhãn lớp trong chú thích. | True |
boxes | bool | Các hộp giới hạn lớp phủ trên hình ảnh. | True |
masks | bool | Mặt nạ phủ trê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 đượ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: save Là True . | None |
color_mode | str | Chỉ định chế độ màu, ví dụ: 'phiên bản' hoặc 'lớp'. | 'class' |
Suy luận an toàn cho 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 chủ đề khác nhau. Suy luận an toàn theo 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 can thiệp lẫn nhau, tránh các điều kiện cuộc đua và đảm bảo đầu ra nhất quán và đáng tin cậy.
Khi sử dụng YOLO Các mô hình Trong một ứ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 lưu trữ luồng-cục bộ để ngăn xung đột:
Suy luận an toàn cho 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 theo 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 về suy luận an toàn theo luồng với YOLO Mô hình và hướng dẫn từng bước, vui lòng tham khảo YOLO Hướng dẫn suy luận an toàn theo luồng. Hướng dẫn này sẽ cung cấp cho bạn tất cả các thông tin cần thiết để tránh những cạm bẫy phổ biến và đảm bảo rằng 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 script 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-python
và ultralytics
).
Phát trực tuyến theo vòng lặp
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 các 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 cửa sổ. Vòng lặp có thể được thoát ra bằng cách nhấn 'q'.
FAQ
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ô hình tiên tiến nhất để 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 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 các khác nhau 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 cài đặt stream=True
trong phương thức gọi của người dự đoán. Chế độ phát trực tuyến tạo ra một trình tạo hiệu quả bộ nhớ Results
thay vì tải tất cả các khung hình vào bộ nhớ. Để xử lý video dài hoặc bộ 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à hơn thế nữa. Các đối số này cho phép bạn tùy chỉnh quy 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ề các đối số này có thể được tìm thấy trong Đối số 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 thức để 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()
và 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.