Phân tích bằng Ultralytics YOLO11
Giới thiệu
Hướng dẫn này cung cấp một cái nhìn tổng quan toàn diện về ba loại trực quan hóa dữ liệu cơ bản: biểu đồ đường, biểu đồ thanh và biểu đồ hình tròn. Mỗi phần bao gồm hướng dẫn từng bước và các đoạn mã về cách tạo các hình ảnh trực quan này bằng Python.
Xem: Cách Tạo Đồ Thị Phân Tích bằng Ultralytics | Đồ Thị Đường, Biểu Đồ Thanh, Diện Tích và Hình Tròn
Các mẫu trực quan
Đồ thị đường | Biểu đồ cột | Biểu đồ tròn |
---|---|---|
![]() |
![]() |
![]() |
Tại sao đồ thị lại quan trọng
- Đồ thị đường thẳng rất lý tưởng để theo dõi các thay đổi trong thời gian ngắn và dài, đồng thời so sánh các thay đổi cho nhiều nhóm trong cùng một khoảng thời gian.
- Mặt khác, biểu đồ cột phù hợp để so sánh số lượng giữa các danh mục khác nhau và thể hiện mối quan hệ giữa một danh mục và giá trị số của nó.
- Cuối cùng, biểu đồ hình tròn rất hiệu quả để minh họa tỷ lệ giữa các danh mục và hiển thị các phần của một tổng thể.
Phân tích bằng Ultralytics YOLO
yolo solutions analytics show=True
# Pass the source
yolo solutions analytics source="path/to/video.mp4"
# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True
# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True
# Generate the area plots
yolo solutions analytics analytics_type="area" show=True
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
"analytics_output.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
# Initialize analytics object
analytics = solutions.Analytics(
show=True, # display the output
analytics_type="line", # pass the analytics type, could be "pie", "bar" or "area".
model="yolo11n.pt", # path to the YOLO11 model file
# classes=[0, 2], # display analytics for specific detection classes
)
# Process video
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
# print(results) # access the output
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows() # destroy all opened windows
Analytics
Các đối số
Dưới đây là bảng phác thảo các đối số Analytics:
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
model |
str |
None |
Đường dẫn đến Tệp Mô hình Ultralytics YOLO. |
analytics_type |
str |
line |
Loại biểu đồ, ví dụ: line , bar , area , hoặc pie . |
Bạn cũng có thể tận dụng các track
các đối số trong Analytics
giải pháp.
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Chỉ định thuật toán theo dõi để sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml . |
conf |
float |
0.3 |
Đặt ngưỡng tin cậy cho các phát hiện; giá trị thấp hơn cho phép theo dõi nhiều đối tượng hơn nhưng có thể bao gồm các kết quả dương tính giả. |
iou |
float |
0.5 |
Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp. |
classes |
list |
None |
Lọc kết quả theo chỉ số lớp. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định. |
verbose |
bool |
True |
Kiểm soát việc hiển thị kết quả theo dõi, cung cấp đầu ra trực quan về các đối tượng được theo dõi. |
device |
str |
None |
Chỉ định thiết bị cho 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 GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình. |
Ngoài ra, các đối số trực quan hóa sau đây được hỗ trợ:
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
show |
bool |
False |
Nếu True , hiển thị hình ảnh hoặc video đã chú thích trong một cửa sổ. Hữu ích để có 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. |
line_width |
None or int |
None |
Chỉ định độ rộng đường của hộp giới hạn. Nếu None , độ rộng đường kẻ đượ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õ ràng hơn. |
Kết luận
Hiểu rõ khi nào và cách sử dụng các loại hình ảnh trực quan khác nhau là rất quan trọng để phân tích dữ liệu hiệu quả. Biểu đồ đường, biểu đồ thanh và biểu đồ tròn là những công cụ cơ bản có thể giúp bạn truyền tải câu chuyện dữ liệu của mình một cách rõ ràng và hiệu quả hơn. Giải pháp Ultralytics YOLO11 Analytics cung cấp một cách thức hợp lý để tạo ra những hình ảnh trực quan này từ kết quả phát hiện đối tượng và theo dõi của bạn, giúp bạn dễ dàng trích xuất những hiểu biết có ý nghĩa từ dữ liệu trực quan của mình.
Câu hỏi thường gặp
Làm cách nào để tạo biểu đồ đường bằng Ultralytics YOLO11 Analytics?
Để tạo biểu đồ đường bằng Ultralytics YOLO11 Analytics, hãy làm theo các bước sau:
- Tải mô hình YOLO11 và mở tệp video của bạn.
- Khởi tạo
Analytics
lớp với loại được đặt thành "line". - Lặp lại qua các khung hình video, cập nhật biểu đồ đường với dữ liệu liên quan, chẳng hạn như số lượng đối tượng trên mỗi khung hình.
- Lưu video đầu ra hiển thị đồ thị đường.
Ví dụ:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="line",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Để biết thêm chi tiết về cách định cấu hình Analytics
lớp, hãy truy cập Phân tích bằng Ultralytics YOLO11 ở phần này.
Những lợi ích khi sử dụng Ultralytics YOLO11 để tạo biểu đồ thanh là gì?
Sử dụng Ultralytics YOLO11 để tạo biểu đồ thanh mang lại một số lợi ích:
- Trực quan hóa dữ liệu theo thời gian thực: Tích hợp liền mạch kết quả phát hiện đối tượng vào biểu đồ thanh để cập nhật động.
- Dễ sử dụng: API và các hàm đơn giản giúp triển khai và trực quan hóa dữ liệu một cách dễ dàng.
- Tùy chỉnh: Tùy chỉnh tiêu đề, nhãn, màu sắc và hơn thế nữa để phù hợp với các yêu cầu cụ thể của bạn.
- Hiệu quả: Xử lý hiệu quả lượng lớn dữ liệu và cập nhật đồ thị theo thời gian thực trong quá trình xử lý video.
Sử dụng ví dụ sau để tạo biểu đồ thanh:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="bar",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Để tìm hiểu thêm, hãy truy cập phần Biểu đồ thanh trong hướng dẫn.
Tại sao tôi nên sử dụng Ultralytics YOLO11 để tạo biểu đồ tròn trong các dự án trực quan hóa dữ liệu của mình?
Ultralytics YOLO11 là một lựa chọn tuyệt vời để tạo biểu đồ tròn vì:
- Tích hợp với Nhận diện đối tượng: Tích hợp trực tiếp kết quả nhận diện đối tượng vào biểu đồ tròn để có thông tin chi tiết ngay lập tức.
- API Thân thiện với Người dùng: Dễ dàng thiết lập và sử dụng với mã tối thiểu.
- Tùy chỉnh: Nhiều tùy chọn tùy chỉnh cho màu sắc, nhãn và hơn thế nữa.
- Cập nhật theo thời gian thực: Xử lý và trực quan hóa dữ liệu trong thời gian thực, rất lý tưởng cho các dự án phân tích video.
Đây là một ví dụ nhanh:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="pie",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Để biết thêm thông tin, hãy tham khảo phần Biểu đồ tròn trong hướng dẫn.
Có thể sử dụng Ultralytics YOLO11 để theo dõi các đối tượng và cập nhật trực quan hóa một cách linh hoạt không?
Có, Ultralytics YOLO11 có thể được sử dụng để theo dõi các đối tượng và cập nhật trực quan hóa một cách linh hoạt. Nó hỗ trợ theo dõi nhiều đối tượng trong thời gian thực và có thể cập nhật các hình ảnh trực quan khác nhau như đồ thị đường, biểu đồ thanh và biểu đồ tròn dựa trên dữ liệu của các đối tượng được theo dõi.
Ví dụ về theo dõi và cập nhật biểu đồ đường:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="line",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
Để tìm hiểu về đầy đủ chức năng, hãy xem phần Theo dõi.
Điều gì làm cho Ultralytics YOLO11 khác biệt so với các giải pháp phát hiện đối tượng khác như OpenCV và TensorFlow?
Ultralytics YOLO11 nổi bật so với các giải pháp phát hiện đối tượng khác như OpenCV và TensorFlow vì nhiều lý do:
- Độ chính xác vượt trội: YOLO11 cung cấp độ chính xác vượt trội trong các tác vụ phát hiện đối tượng, phân đoạn và phân loại.
- Dễ sử dụng: API thân thiện với người dùng cho phép triển khai và tích hợp nhanh chóng mà không cần viết code nhiều.
- Hiệu suất theo thời gian thực: Được tối ưu hóa cho suy luận tốc độ cao, phù hợp cho các ứng dụng thời gian thực.
- Ứng dụng Đa dạng: Hỗ trợ nhiều tác vụ khác nhau bao gồm theo dõi đa đối tượng, huấn luyện mô hình tùy chỉnh và xuất sang các định dạng khác nhau như ONNX, TensorRT và CoreML.
- Tài Liệu Đầy Đủ: Tài liệu chi tiết và tài nguyên blog phong phú hướng dẫn người dùng qua từng bước.
Để so sánh chi tiết hơn và các trường hợp sử dụng, hãy khám phá Blog Ultralytics của chúng tôi.