Phân tích sử dụng Ultralytics YOLO26

Giới thiệu

Hướng dẫn này cung cấp 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 đồ cột và biểu đồ tròn. Mỗi phần bao gồm các hướng dẫn từng bước và đoạn mã để tạo các biểu đồ này bằng Python.



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

Mẫu trực quan

Biểu đồ đườngBiểu đồ cộtBiểu đồ tròn
Biểu đồ đường phân tích YOLO cho theo dõi đối tượngBiểu đồ cột phân tích YOLO cho số lượng phát hiệnBiểu đồ tròn phân tích YOLO cho phân phối lớp

Tại sao đồ thị lại quan trọng

  • Biểu đồ đường lý tưởng để theo dõi các thay đổi trong khoảng thời gian ngắn và dài, cũng như để so sánh các thay đổi cho nhiều nhóm trong cùng một khoảng thời gian.
  • Ngược lại, biểu đồ cột phù hợp để so sánh số lượng giữa các danh mục khác nhau và hiển thị mối quan hệ giữa một danh mục và giá trị số của nó.
  • Cuối cùng, biểu đồ tròn 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 sử dụ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

Các tham số Analytics

Dưới đây là bảng liệt kê các tham số Analytics:

Đối sốLoạiMặc địnhMô tả
modelstrNoneĐường dẫn đến một file model Ultralytics YOLO.
analytics_typestr'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 tham số track khác nhau trong giải pháp Analytics.

Đối sốLoạiMặc địnhMô tả
trackerstr'botsort.yaml'Chỉ định thuật toán theo dõi cần sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conffloat0.1Đặt ngưỡng tin cậy cho các phát hiện; các 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ác kết quả dương tính giả.
ioufloat0.7Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện chồng lấp.
classeslistNoneLọ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.
verboseboolTrueKiểm soát việc hiển thị các kết quả theo dõi, cung cấp đầu ra trực quan của các đối tượng được theo dõi.
devicestrNoneChỉ định thiết bị thực hiện suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để chạy model.

Ngoài ra, các tham số trực quan hóa sau đây cũng được hỗ trợ:

Đối sốLoạiMặc địnhMô tả
showboolFalseNếu True, hiển thị các ảnh hoặc video đã được 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_widthint or NoneNoneChỉ định độ dày đường kẻ của khung bao. Nếu là None, độ dày đường kẻ sẽ tự động được điều chỉnh dựa trên kích thước ảnh. Cung cấp khả năng tùy chỉnh trực quan để đảm bảo độ rõ nét.

Kết luận

Hiểu rõ khi nào và cách sử dụng các loại trực quan hóa khác nhau là rất quan trọng để phân tích dữ liệu hiệu quả. Biểu đồ đường, biểu đồ cột và biểu đồ tròn là những công cụ cơ bản 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 Analytics của Ultralytics YOLO26 cung cấp một cách tinh gọn để tạo các trực quan hóa này từ kết quả phát hiện đối tượng và theo dõi của bạn, giúp việc trích xuất thông tin chi tiết từ dữ liệu hình ảnh trở nên dễ dàng hơn.

Câu hỏi thường gặp (FAQ)

Làm cách nào để tạo biểu đồ đường bằng Ultralytics YOLO26 Analytics?

Để tạo biểu đồ đường bằng Ultralytics YOLO26 Analytics, hãy thực hiện các bước sau:

  1. Tải một model YOLO26 và mở tệp video của bạn.
  2. Khởi tạo lớp Analytics với loại (type) được đặt thành "line."
  3. Lặp 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 mỗi khung hình.
  4. Lưu video đầu ra hiển thị biểu đồ đườ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 cấu hình lớp Analytics, hãy truy cập phần Phân tích sử dụng Ultralytics YOLO26.

Lợi ích của việc sử dụng Ultralytics YOLO26 để tạo biểu đồ cột là gì?

Sử dụng Ultralytics YOLO26 để tạo biểu đồ cột mang lại nhiều lợi ích:

  1. Trực quan hóa dữ liệu 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 các biểu đồ cột để cập nhật động.
  2. 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.
  3. 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 yêu cầu cụ thể của bạn.
  4. Hiệu quả: Xử lý hiệu quả lượng dữ liệu lớn và cập nhật biểu đồ theo thời gian thực trong quá trình xử lý video.

Sử dụng ví dụ sau để tạo biểu đồ cột:

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 đồ cột trong hướng dẫn.

Tại sao tôi nên sử dụng Ultralytics YOLO26 để tạo biểu đồ tròn trong các dự án trực quan hóa dữ liệu?

Ultralytics YOLO26 là lựa chọn tuyệt vời để tạo biểu đồ tròn vì:

  1. Tích hợp với phát hiện đối tượng: Tích hợp trực tiếp kết quả phát hiện đối tượng vào biểu đồ tròn để có thông tin chi tiết tức thì.
  2. 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ã nguồn tối thiểu.
  3. Có thể 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.
  4. Cập nhật thời gian thực: Xử lý và trực quan hóa dữ liệu theo thời gian thực, điều này rất lý tưởng cho các dự án phân tích video.

Dưới đâ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.

Ultralytics YOLO26 có thể được sử dụng để theo dõi đối tượng và cập nhật trực quan hóa một cách động không?

Có, Ultralytics YOLO26 có thể được sử dụng để theo dõi đối tượng và cập nhật trực quan hóa động. 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 loại trực quan hóa khác nhau như biểu đồ đường, biểu đồ cột và biểu đồ tròn dựa trên dữ liệu đối tượng được theo dõi.

Ví dụ về việc 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ề chức năng đầy đủ, hãy xem phần Theo dõi.

Điều gì khiến Ultralytics YOLO26 khác biệt so với các giải pháp phát hiện đối tượng khác như OpenCVTensorFlow?

Ultralytics YOLO26 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:

  1. Độ chính xác tiên tiến: YOLO26 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.
  2. 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 lập trình phức tạp.
  3. Hiệu năng 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.
  4. Ứng dụng đa dạng: Hỗ trợ nhiều tác vụ bao gồm theo dõi đa đối tượng, huấn luyện model tùy chỉnh và xuất sang các định dạng khác nhau như ONNX, TensorRT và CoreML.
  5. Tài liệu toàn diện: Tài liệu mở rộng và tài nguyên blog để hướng dẫn người dùng qua từng bước.

Để biết 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.

Bình luận