Bỏ để qua phần 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 .



Xem: 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 đồ đườngCốt truyện quán barBiểu đồ hình tròn
Biểu đồ đườngCốt truyện quán barBiểu đồ hình tròn

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

  • Biểu đồ đường lý tưởng để theo dõi các thay đổi trong thời gian ngắn và dài và để 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 đồ thanh phù hợp để so sánh số lượng trên 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 đồ hình tròn có 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 tổng thể.

Ví dụ về Analytics

 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à bảng với Analytics Lập luận:

TênKiểuMặc địnhSự miêu tả
analytics_typestrlineKiểu biểu đồ như "đường", "thanh", "diện tích", "hình tròn"
modelstrNoneĐường dẫn đến Ultralytics YOLO Tệp mẫu
line_widthint2Độ dày dòng cho các hộp giới hạn.
showboolFalseGắn cờ để kiểm soát việc có hiển thị luồng video hay không.

Lập luận model.track

Lý lẽKiểuMặc địnhSự miêu tả
sourcestrNoneChỉ định thư mục nguồn cho hình ảnh hoặc video. Hỗ trợ đường dẫn tệp và URL.
persistboolFalseCho 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.
trackerstrbotsort.yamlChỉ định thuật toán theo dõi để sử dụng, ví dụ: bytetrack.yaml hoặc botsort.yaml.
conffloat0.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ả.
ioufloat0.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.
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 hình ảnh trực quan về các đối tượng được theo dõi.

Kết thúc

Hiểu khi nào và làm thế nào để 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 đồ 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.

FAQ

Làm thế nào để tôi tạo biểu đồ đường bằng cách sử dụng Ultralytics Phân tích YOLO11?

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

  1. Tải mô hình YOLO11 và mở tệp video của bạn.
  2. Khởi tạo Analytics lớp với kiểu được đặt thành "dòng".
  3. Lặp qua các khung 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ị 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ách định cấu hình Analytics lớp học, ghé thăm 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 dùng để tạo biểu đồ thanh mang lại một số lợi ích sau:

  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 đơn giản.
  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 lớn dữ liệu và cập nhật cốt truyện trong 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 Bar Plot 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à lựa chọn tuyệt vời để tạo biểu đồ hình 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 đồ 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: Đơn giản để thiết lập và sử dụng với mã tối thiểu.
  3. Có thể tùy chỉnh: Các tùy chọn tùy chỉnh khác nhau 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 trong thời gian thực, 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/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 đồ hình 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 đồ 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 hoàn chỉnh, hãy xem phần Theo dõi .

Điều gì làm cho Ultralytics YOLO11 có gì 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 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 tiên tiến : YOLO11 cung cấp độ chính xác vượt trội 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 mã hóa mở rộng.
  3. Hiệu suất thời gian thực: Được tối ưu hóa cho 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ợ các tác vụ khác nhau bao gồm theo dõi đa đố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, TensorRTvà 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 thêm thông tin so sánh chi tiết và trường hợp sử dụng, hãy khám phá Ultralytics Tin tức.

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

Ý kiến