Bỏ qua nội dung

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

Giới thiệu

Hướng dẫn này cung cấp tổng quan toàn diện về ba loại hình 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à đoạn mã về cách tạo các hình ảnh trực quan này bằng cách sử dụng Python .



Đồng hồ: Cách tạo Biểu đồ phân tích bằng cách sử dụng Ultralytics | Biểu đồ đường, Biểu đồ thanh, Biểu đồ diện tích và Biểu đồ tròn

Mẫu hình ảnh

Biểu đồ đường Biểu đồ thanh Biểu đồ hình tròn
Biểu đồ đường Biểu đồ thanh Biểu đồ hình tròn

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

  • Biểu đồ đường lý tưởng để theo dõi những thay đổi trong thời gian ngắn và dài hạn, cũng như để so sánh những thay đổi của nhiều nhóm trong cùng một thời gian.
  • Mặt khác, biểu đồ thanh thích 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 danh mục đó.
  • Cuối cùng, biểu đồ hình tròn có hiệu quả trong việc minh họa tỷ lệ giữa các danh mục và thể hiện các bộ phận của 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
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 Lập luận

Sau đây là bảng tóm tắt các đối số của Analytics:

Lý lẽ Kiểu Mặc định Sự miêu tả
model str None Đường dẫn đến Ultralytics YOLO Tệp mẫu.
analytics_type str line Loại đồ thị, tức là, line, bar, area, hoặc pie.

Bạn cũng có thể tận dụng các cách khác nhau track các lập luận trong Analytics giải pháp.

Lý lẽ Kiểu Mặc định Sự miêu 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 việ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 Giao điểm trên Liên hợp (IoU) để lọc các phát hiện chồng chéo.
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 hình ảnh trực quan về các đối tượng được theo dõi.
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.

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

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.
line_width None or 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.

Phần kết luận

Hiểu được 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 đồ hình 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 rõ ràng và hiệu quả hơn. Ultralytics YOLO11 Giải pháp phân tích cung cấp một phương pháp hợp lý để tạo ra các hình ảnh trực quan này từ kết quả theo dõi và phát hiện đối tượng của bạn, giúp bạn dễ dàng trích xuất thông tin chi tiế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 thế nào để tôi tạo biểu đồ đường bằng cách sử dụng Ultralytics YOLO11 Phân tích?

Để tạo biểu đồ đường bằng cách sử dụng Ultralytics YOLO11 Phân tích, hãy làm theo các bước sau:

  1. Tải một YOLO11 mô hình và mở tệp video của bạn.
  2. Khởi tạo Analytics lớp có kiểu được đặt thành "dòng".
  3. Lặp lại các khung hình video, cập nhật biểu đồ đường bằng dữ liệu có 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ị 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ấu hình Analytics lớp, thăm quan Phân tích sử dụng Ultralytics YOLO11 phần.

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

Sử dụng Ultralytics YOLO11 để tạo biểu đồ thanh 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 chức năng đơn giản giúp việc triển khai và trực quan hóa dữ liệu trở nên dễ dàng.
  3. Tùy chỉnh : Tùy chỉnh tiêu đề, nhãn, màu sắc và nhiều nội dung khác để 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 đồ 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 đồ hình tròn trong các dự án trực quan hóa dữ liệu của tôi?

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

  1. Tích hợp với tính năng 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 đồ hình 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ễ thiết lập và sử dụng với mã tối thiểu.
  3. Có thể tùy chỉnh : Nhiều tùy chọn tùy chỉnh khác nhau về màu sắc, nhãn và nhiều thứ khác.
  4. Cập nhật theo thời gian thực : Xử lý và trực quan hóa dữ liệu theo thời gian thực, lý tưởng cho các dự án phân tích video.

Sau đâ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ể Ultralytics YOLO11 có thể được sử dụng để theo dõi các đối tượng và cập nhật hình ảnh động không?

Đúng, 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 động. Nó hỗ trợ theo dõi nhiều đối tượng theo thời gian thực và có thể cập nhật nhiều trực quan hóa khác nhau như biểu đồ đường, biểu đồ thanh và biểu đồ hình 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ề chức năng đầy đủ, hãy xem phần Theo dõi .

Điều gì làm cho Ultralytics YOLO11 khác với các giải pháp phát hiện đối tượng khác như OpenCVTensorFlow ?

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:

  1. Độ chính xác hiện đại : YOLO11 cung cấp độ chính xác cao trong các nhiệm vụ phát hiện, phân đoạn và phân loại đối tượng.
  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 phải viết mã nhiều.
  3. Hiệu suất thời gian thực : Được tối ưu hóa để suy luận tốc độ cao, phù hợp với 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 nhiều đối tượng, đào tạo 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 toàn diện : Tài liệublog mở rộng hướng dẫn người dùng từng bước.

Để biết thêm thông tin so sánh và trường hợp sử dụng chi tiết, hãy khám phá Blog Ultralytics của chúng tôi.

📅 Được tạo cách đây 10 tháng ✏️ Đã cập nhật cách đây 5 ngày

Bình luận