Chuyển đến nội dung

Phân tích bằng Ultralytics YOLO26

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ị đườngBiểu đồ cộtBiểu đồ tròn
YOLO Biểu đồ đường phân tích cho việc theo dõi đối tượngYOLO Biểu đồ cột phân tích số lần phát hiệnYOLO Biểu đồ hình tròn phân tích về phân bổ lớp học

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="yolo26n.pt",  # path to the YOLO26 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ạiMặc địnhMô tả
modelstrNoneĐường dẫn đến tệp mô hình 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 track các đối số trong Analytics giải pháp.

Đối sốLoạiMặc địnhMô tả
trackerstr'botsort.yaml'Chỉ định thuật toán theo dõi để 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; 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ả.
ioufloat0.7Đặt ngưỡng Intersection over Union (IoU) để lọc các detect chồng chéo.
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ị kết quả theo dõi, cung cấp đầu ra trực quan về các đối tượng được theo dõi.
devicestrNoneChỉ đị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ạiMặc địnhMô tả
showboolFalseNế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_widthint or NoneNoneChỉ đị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õ thời điểm 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 đồ cột 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 YOLO26 Analytics cung cấp một cách hợp lý để tạo ra các hình ảnh trực quan này từ kết quả object detection và track của bạn, giúp 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 bạn.

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

Làm thế nào để tôi tạo biểu đồ đường bằng Ultralytics YOLO26 Analytics?

Để tạo biểu đồ đường bằng Ultralytics YOLO26 Analytics, hãy làm theo các bước sau:

  1. Tải mô hình YOLO26 và mở tệp video của bạn.
  2. Khởi tạo Analytics lớp với loại được đặt thành "line".
  3. 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.
  4. 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 YOLO26 ở phần này.

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

Việc sử dụng Ultralytics YOLO26 để tạo biểu đồ cột mang lại một số lợi ích:

  1. 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.
  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 các yêu cầu cụ thể của bạn.
  4. 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 YOLO26 để tạo biểu đồ tròn trong các dự án trực quan hóa dữ liệu của mình?

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

  1. 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.
  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ã tối thiểu.
  3. 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 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.

Ultralytics YOLO26 có thể được sử dụng để track các đối tượng và cập nhật động các hình ảnh trực quan không?

Có, Ultralytics YOLO26 có thể được sử dụng để track đối tượng và cập nhật động các hình ảnh trực quan. Nó hỗ trợ track nhiều đối tượng trong thời gian thực và có thể cập nhật nhiều hình ảnh trực quan khác nhau như biểu đồ đường, biểu đồ cột và biểu đồ tròn dựa trên dữ liệu của các đối tượng được track.

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 YOLO26 khác biệt so với các giải pháp detect đối tượng khác như OpenCVTensorFlow?

Ultralytics YOLO26 nổi bật so với các giải pháp detect đối tượng khác như OpenCV và TensorFlow vì nhiều lý do:

  1. Độ chính xác hàng đầu: YOLO26 mang lại độ chính xác vượt trội trong các tác vụ detect đối tượng, segment 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 viết code nhiều.
  3. 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.
  4. Ứ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.
  5. 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.



📅 Được tạo 1 năm trước ✍️ Cập nhật 2 ngày trước
glenn-jocherRizwanMunawarMatthewNoycelakshanthadUltralyticsAssistantIvorZhu331

Bình luận