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ể.

Ví dụ về phân tích

 yolo solutions analytics show=True

# pass the source
yolo solutions analytics source="path/to/video/file.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/file.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))

# Video writer
out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

# Init analytics
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],  # If you want to count specific classes i.e person and car with COCO pretrained model.
)

# Process video
frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Lý lẽ Analytics

Đây là một bảng với Analytics lập luận:

Tên Kiểu Mặc định Sự miêu tả
analytics_type str line Kiểu biểu đồ như "đường", "thanh", "diện tích", "hình tròn"
model str None Đường dẫn đến Ultralytics YOLO Tệp mẫu
line_width int 2 Độ dày của đường cho hộp giới hạn.
show bool False Đánh dấu để kiểm soát việc hiển thị luồng video hay không.

Lập luận model.track

Lý lẽ Kiểu Mặc định Sự miêu tả
source str None Chỉ định thư mục nguồn cho hình ảnh hoặc video. Hỗ trợ đường dẫn tệp và URL.
persist bool False Cho phép theo dõi liên tục các đối tượng giữa các khung hình, duy trì ID trên các chuỗi video.
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.

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 đồ 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.

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/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # 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/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # 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/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # 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/file.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,
    (1920, 1080),  # 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
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # 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.

📅 Created 6 months ago ✏️ Updated 29 days ago

Bình luận