Bỏ để qua phần nội dung

Đếm đối tượng bằng cách sử dụng Ultralytics YOLO11

Đếm đối tượng là gì?

Đếm đối tượng với Ultralytics YOLO11 liên quan đến việc xác định chính xác và đếm các đối tượng cụ thể trong video và luồng camera. YOLO11 vượt trội trong các ứng dụng thời gian thực, cung cấp khả năng đếm đối tượng hiệu quả và chính xác cho nhiều tình huống khác nhau như phân tích đám đông và giám sát, nhờ các thuật toán tiên tiến và khả năng học sâu .


Xem: Đếm đối tượng bằng cách sử dụng Ultralytics YOLOv8

Xem: Đếm đối tượng theo lớp bằng cách sử dụng Ultralytics YOLO11

Ưu điểm của đếm đối tượng?

  • Tối ưu hóa tài nguyên: Đếm đối tượng tạo điều kiện quản lý tài nguyên hiệu quả bằng cách cung cấp số lượng chính xác và tối ưu hóa phân bổ tài nguyên trong các ứng dụng như quản lý hàng tồn kho.
  • Tăng cường bảo mật: Đếm đối tượng tăng cường an ninh và giám sát bằng cách theo dõi và đếm chính xác các thực thể, hỗ trợ phát hiện mối đe dọa chủ động.
  • Ra quyết định sáng suốt: Đếm đối tượng cung cấp thông tin chi tiết có giá trị cho việc ra quyết định, tối ưu hóa các quy trình trong bán lẻ, quản lý lưu lượng truy cập và nhiều lĩnh vực khác.

Ứng dụng trong thế giới thực

Hậu cầnNuôi trồng thủy sản
Băng tải đếm gói sử dụng Ultralytics YOLO11Đếm cá trong biển bằng cách sử dụng Ultralytics YOLO11
Băng tải đếm gói sử dụng Ultralytics YOLO11Đếm cá trong biển bằng cách sử dụng Ultralytics YOLO11

Đếm đối tượng sử dụng ví dụ YOLO11

# Run a counting example
yolo solutions count show=True

# Pass a source video
yolo solutions count source="path/to/video/file.mp4"

# Pass region coordinates
yolo solutions count region=[(20, 400), (1080, 404), (1080, 360), (20, 360)]
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))

# Define region points
# region_points = [(20, 400), (1080, 400)]  # For line counting
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]  # For rectangle region counting
# region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 400)]  # For polygon region counting

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init Object Counter
counter = solutions.ObjectCounter(
    show=True,  # Display the output
    region=region_points,  # Pass region points
    model="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting using YOLO11 OBB model.
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
    # show_in=True,  # Display in counts
    # show_out=True,  # Display out counts
    # line_width=2,  # Adjust the line width for bounding boxes and text display
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    im0 = counter.count(im0)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Lý lẽ ObjectCounter

Đây là bảng với ObjectCounter Lập luận:

TênKiểuMặc địnhSự miêu tả
modelstrNoneĐường dẫn đến Ultralytics YOLO Tệp mẫu
regionlist[(20, 400), (1260, 400)]Danh sách các điểm xác định khu vực đếm.
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.
show_inboolTrueGắn cờ để kiểm soát việc có hiển thị số vào trên luồng video hay không.
show_outboolTrueGắn cờ để kiểm soát việc có hiển thị số lượng ra trên 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.

FAQ

Làm thế nào để đếm các đối tượng trong video bằng cách sử dụng Ultralytics YOLO11 là gì?

Để đếm các đối tượng trong video bằng cách sử dụng Ultralytics YOLO11, bạn có thể làm theo các bước sau:

  1. Nhập các thư viện cần thiết (cv2, ultralytics).
  2. Xác định vùng đếm (ví dụ: đa giác, đường, v.v.).
  3. Thiết lập quay video và khởi tạo bộ đếm đối tượng.
  4. Xử lý từng khung hình để theo dõi các đối tượng và đếm chúng trong khu vực xác định.

Dưới đây là một ví dụ đơn giản để đếm trong một khu vực:

import cv2

from ultralytics import solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    cap = cv2.VideoCapture(video_path)
    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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]
    counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")

Khám phá thêm các cấu hình và tùy chọn trong phần Đếm đối tượng .

Những lợi ích của việc sử dụng là gì? Ultralytics YOLO11 để đếm đồ vật?

Sử dụng Ultralytics YOLO11 dùng để đếm đồ vật có một số ưu điểm sau:

  1. Tối ưu hóa tài nguyên: Nó tạo điều kiện quản lý tài nguyên hiệu quả bằng cách cung cấp số lượng chính xác, giúp tối ưu hóa phân bổ tài nguyên trong các ngành như quản lý hàng tồn kho.
  2. Tăng cường bảo mật: Nó tăng cường an ninh và giám sát bằng cách theo dõi và đếm chính xác các thực thể, hỗ trợ phát hiện mối đe dọa chủ động.
  3. Ra quyết định sáng suốt: Nó cung cấp thông tin chi tiết có giá trị cho việc ra quyết định, tối ưu hóa các quy trình trong các lĩnh vực như bán lẻ, quản lý lưu lượng truy cập, v.v.

Để biết các ứng dụng trong thế giới thực và các ví dụ về mã, hãy truy cập phần Ưu điểm của việc đếm đối tượng .

Làm thế nào tôi có thể đếm các lớp đối tượng cụ thể bằng cách sử dụng Ultralytics YOLO11 là gì?

Để đếm các lớp đối tượng cụ thể bằng cách sử dụng Ultralytics YOLO11, bạn cần chỉ định các lớp bạn quan tâm trong giai đoạn theo dõi. Dưới đây là Python ví dụ:

import cv2

from ultralytics import solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    cap = cv2.VideoCapture(video_path)
    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 = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    line_points = [(20, 400), (1080, 400)]
    counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or video processing has been successfully completed.")
            break
        im0 = counter.count(im0)
        video_writer.write(im0)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])

Trong ví dụ này, classes_to_count=[0, 2], có nghĩa là nó đếm các đối tượng của lớp 02 (ví dụ: người và xe).

Tại sao tôi nên sử dụng YOLO11 thay vì các mô hình phát hiện đối tượng khác cho các ứng dụng thời gian thực?

Ultralytics YOLO11 cung cấp một số lợi thế so với các mô hình phát hiện đối tượng khác như Faster R-CNN, SSD và các mô hình trước đó YOLO phiên bản:

  1. Tốc độ và hiệu quả: YOLO11 cung cấp khả năng xử lý thời gian thực, lý tưởng cho các ứng dụng yêu cầu suy luận tốc độ cao, chẳng hạn như giám sát và lái xe tự động.
  2. Độ chính xác : Cung cấp độ chính xác tiên tiến cho các nhiệm vụ phát hiện và theo dõi đối tượng, giảm số lượng báo động giả và cải thiện độ tin cậy của toàn bộ hệ thống.
  3. Dễ tích hợp: YOLO11 cung cấp khả năng tích hợp liền mạch với nhiều nền tảng và thiết bị khác nhau, bao gồm thiết bị di động và thiết bị biên, điều này rất quan trọng đối với các ứng dụng AI hiện đại.
  4. Linh hoạt: Hỗ trợ các tác vụ khác nhau như phát hiện đối tượng, phân đoạn và theo dõi với các mô hình có thể định cấu hình để đáp ứng các yêu cầu trường hợp sử dụng cụ thể.

Kiểm tra Ultralytics Tài liệu YOLO11 cung cấp thông tin chi tiết hơn về các tính năng và so sánh hiệu suất của nó.

Tôi có thể sử dụng YOLO11 cho các ứng dụng nâng cao như phân tích đám đông và quản lý giao thông không?

Đúng, Ultralytics YOLO11 hoàn toàn phù hợp cho các ứng dụng nâng cao như phân tích đám đông và quản lý giao thông do khả năng phát hiện theo thời gian thực, khả năng mở rộng và tính linh hoạt tích hợp. Các tính năng nâng cao của nó cho phép theo dõi, đếm và phân loại đối tượng có độ chính xác cao trong môi trường động. Các trường hợp sử dụng ví dụ bao gồm:

  • Phân tích đám đông: Giám sát và quản lý các cuộc tụ tập đông người, đảm bảo an toàn và tối ưu hóa lưu lượng đám đông.
  • Quản lý giao thông: Theo dõi và đếm xe, phân tích mô hình giao thông và quản lý tắc nghẽn trong thời gian thực.

Để biết thêm thông tin và chi tiết triển khai, hãy tham khảo hướng dẫn về Ứng dụng thực tế của việc đếm đối tượng với YOLO11.

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

Ý kiến