YOLO Vision 2026:

Đếm đối tượng bằng Ultralytics YOLO26#

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

Open Object Counting In Colab

Đếm đối tượng với Ultralytics YOLO26 liên quan đến việc nhận diện và đếm chính xác các đối tượng cụ thể trong video và luồng camera. YOLO26 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 các tình huống khác nhau như phân tích đám đông và giám sát, nhờ vào các thuật toán tối tân và khả năng deep learning.



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

Ưu điểm của việc đếm đối tượng#

  • Tối ưu hóa tài nguyên: Đếm đối tượng giúp quản lý tài nguyên hiệu quả bằng cách cung cấp số lượng chính xác, tối ưu hóa việc phân bổ tài nguyên trong các ứng dụng như inventory management.
  • Bảo mật nâng cao: Đếm đối tượng nâng cao tính bảo mật 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 threat detection chủ động.
  • Ra quyết định dựa trên dữ liệu: Đếm đối tượng cung cấp những thông tin chi tiết có giá trị để ra quyết định, tối ưu hóa các quy trình trong bán lẻ, traffic management, và nhiều lĩnh vực khác.

Các ứng dụng thực tế#

LogisticsNuôi trồng thủy sản
Conveyor Belt Packets Counting Using Ultralytics YOLO26Fish Counting in Sea using Ultralytics YOLO26
Đếm gói hàng trên băng chuyền bằng Ultralytics YOLO26Đếm cá dưới biển bằng Ultralytics YOLO26

Đếm đối tượng với YOLO26#

Định nghĩa một counting region — hai điểm cho một đường thẳng hoặc từ ba điểm trở lên cho một đa giác — và chuyển nó vào giải pháp ObjectCounter. Bộ đếm theo dõi từng đối tượng qua các khung hình và tổng kết số lượng ĐI/VÀO khi các đối tượng được theo dõi cắt ngang đường thẳng hoặc đi qua vùng, trả về một khung hình có chú thích mà bạn có thể ghi vào video đầu ra.

Đếm đối tượng bằng Ultralytics YOLO
# Run a counting example
yolo solutions count show=True

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

# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

Tham số region chấp nhận hoặc là hai điểm (cho một đường thẳng) hoặc một đa giác với ba điểm trở lên. Xác định tọa độ theo thứ tự cần kết nối để bộ đếm biết chính xác vị trí các điểm vào và ra xảy ra.

Đối số ObjectCounter#

Dưới đây là bảng chứa các đối số của ObjectCounter:

Đối sốLoạiMặc địnhMô tả
modelstrNoneĐường dẫn đến tệp model Ultralytics YOLO.
show_inboolTrueCờ để kiểm soát việc hiển thị số lượng đếm vào trên luồng video.
show_outboolTrueCờ để kiểm soát việc hiển thị số lượng đếm ra trên luồng video.
regionlist hoặc dictNoneCác điểm xác định vùng quan tâm (ROI), có thể là một danh sách các tuple (x, y) hoặc một từ điển ánh xạ tên vùng tới danh sách điểm cho nhiều vùng (chỉ áp dụng cho RegionCounter). Khi là None, các giải pháp yêu cầu một vùng sẽ quay về sử dụng giá trị mặc định được định nghĩa sẵn.
line_widthint2Độ dày đường viền cho các khung, keypoints và số lượng mà giải pháp vẽ ra.
verboseboolTrueBật nhật ký theo từng khung hình của giải pháp về hình dạng đầu vào, số lượng lớp và tốc độ xử lý. Bản thân lệnh gọi tracking luôn ở chế độ im lặng.

Giải pháp ObjectCounter cho phép sử dụng một số tham số track:

Đối sốLoạiMặc địnhMô tả
trackerstr'botsort.yaml'Chỉ định thuật toán theo dõi cần sử dụng. Các tùy chọn tích hợp sẵn: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Thiết lập ngưỡng tin cậy cho các phát hiện; các giá trị thấp hơn cho phép nhiều đối tượng được theo dõi 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 phát hiện trùng lặp.
classeslistNoneLọc kết quả theo chỉ mục lớp. Ví dụ: classes=[0, 2, 3] chỉ theo dõi các lớp được chỉ định.
devicestrNoneChỉ đị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, 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 được liệt kê dưới đây cũng được hỗ trợ:

Đối sốLoạiMặc địnhMô tả
showboolFalseNếu là True, hiển thị các hình ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử.
show_confboolTrueHiển thị điểm số tin cậy (confidence score) cho mỗi phát hiện cùng với nhãn. Cung cấp thông tin chi tiết về độ chắc chắn của model đối với từng phát hiện.
show_labelsboolTrueHiển thị nhãn cho mỗi phát hiện trong đầu ra hình ảnh. Cung cấp khả năng nhận biết tức thì các đối tượng được phát hiện.

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

  • Để đếm đối tượng trong video bằng Ultralytics YOLO26, 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 thẳng, v.v.).
    3. Thiết lập trình bắt video và khởi tạo bộ đếm đối tượng.
    4. Xử lý từng khung hình để theo dõi đối tượng và đếm chúng trong vùng đã xác định.

    Dưới đây là ví dụ đơn giản về việc đếm trong một vùng:

    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, 400), (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 processing is complete.")
                break
            results = counter(im0)
            video_writer.write(results.plot_im)
    
        cap.release()
        video_writer.release()
        cv2.destroyAllWindows()
    
    count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")

    Để có các cấu hình và tùy chọn nâng cao hơn, hãy xem qua RegionCounter solution để đếm các đối tượng ở nhiều vùng đồng thời.

  • Sử dụng Ultralytics YOLO26 để đếm đối tượng mang lại một số ưu điểm:

    1. Tối ưu hóa tài nguyên: Nó giúp 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 việc phân bổ tài nguyên trong các ngành như inventory management.
    2. Bảo mật nâng cao: Nó nâng cao bảo mật 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 và security systems.
    3. Ra quyết định dựa trên dữ liệu: 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 quy trình trong các lĩnh vực như bán lẻ, quản lý giao thông và hơn thế nữa.
    4. Xử lý thời gian thực: Kiến trúc của YOLO26 cho phép real-time inference, giúp nó phù hợp với các luồng video trực tiếp và các ứng dụng đòi hỏi độ trễ thấp.

    Đối với các ví dụ thực thi và ứng dụng thực tế, hãy khám phá TrackZone solution để theo dõi các đối tượng trong các khu vực cụ thể.

  • Để đếm các lớp đối tượng cụ thể bằng Ultralytics YOLO26, 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à ví dụ bằng Python:

    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 processing is complete.")
                break
            results = counter(im0)
            video_writer.write(results.plot_im)
    
        cap.release()
        video_writer.release()
        cv2.destroyAllWindows()
    
    count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])

    Trong ví dụ này, classes_to_count=[0, 2] có nghĩa là nó đếm các đối tượng thuộc lớp 02 (ví dụ: person và car trong tập dữ liệu COCO). Bạn có thể tìm thêm thông tin về các chỉ số lớp trong COCO dataset documentation.

  • Ultralytics YOLO26 cung cấp một số ưu điểm 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 phiên bản YOLO trước đó:

    1. Tốc độ và hiệu quả: YOLO26 cung cấp khả năng xử lý thời gian thực, lý tưởng cho các ứng dụng đòi hỏi suy luận tốc độ cao, như giám sát và autonomous driving.
    2. Accuracy: Mang lại độ chính xác về phát hiện và theo dõi đạt tiêu chuẩn tiên tiến, giảm thiểu các kết quả dương tính giả và cải thiện độ tin cậy tổng thể của hệ thống.
    3. Dễ tích hợp: YOLO26 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 di động và edge devices, điều rất quan trọng đối với các ứng dụng AI hiện đại.
    4. Flexibility: Hỗ trợ các tác vụ detectionsegmentation cùng với chế độ track mode phía trên, đồng thời cung cấp các model có thể cấu hình để đáp ứng các yêu cầu cụ thể của trường hợp sử dụng.

    Hãy xem YOLO26 Documentation của Ultralytics để tìm hiểu sâu hơn về các tính năng và so sánh hiệu suất.

  • Có, Ultralytics YOLO26 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 nhờ khả năng phát hiện thời gian thực, khả năng mở rộng và sự linh hoạt trong tích hợp. Các tính năng tiên tiến của nó cho phép theo dõi, đếm và phân loại đối tượng với độ chính xác cao trong các môi trường năng động. Các trường hợp sử dụng ví dụ bao gồm:

    • Phân tích đám đông: Theo dõi và quản lý các cuộc tụ tập lớn, đảm bảo an toàn và tối ưu hóa luồng đám đông với các tính năng region-based counting.
    • Quản lý giao thông: Theo dõi và đếm phương tiện, phân tích các mẫu giao thông, và quản lý ùn tắc trong thời gian thực với khả năng speed estimation.
    • Phân tích bán lẻ: Phân tích các mô hình di chuyển của khách hàng và tương tác với sản phẩm để tối ưu hóa bố trí cửa hàng và cải thiện trải nghiệm khách hàng.
    • Tự động hóa công nghiệp: Đếm sản phẩm trên băng chuyền và giám sát các dây chuyền sản xuất để kiểm soát chất lượng và cải thiện hiệu suất.

    Đối với các ứng dụng chuyên specialized hơn, hãy khám phá Ultralytics Solutions để có một bộ công cụ toàn diện được thiết kế cho các thách thức thị giác máy tính trong thế giới thực.

Bình luận