Ultralytics YOLO27:

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

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

Open Object Counting In Colab

Đếm đối tượng bằng Ultralytics YOLO26 bao gồm 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 nổi bật 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 như phân tích đám đông và giám sát, nhờ các thuật toán hiện đại và khả năng học sâu.



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 hỗ trợ 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ư quản lý hàng tồn kho.
  • Tăng cường bảo mật: Đếm đối tượng nâng cao khả năng bảo mật và giám sát bằng cách theo dõi, đế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 dựa trên thông tin: Đếm đối tượng cung cấp thông tin chuyên sâu có giá trị cho việc ra quyết định, tối ưu hóa quy trình trong lĩnh vực bán lẻ, quản lý giao thông và nhiều lĩnh vực khác.

Ứng dụng thực tế#

LogisticsNuôi trồng thủy sản
Đếm các 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 các 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#

Xác định vùng đếm region — hai điểm cho một đường hoặc ba điểm trở lên cho một đa giác — rồi truyền vùng này vào giải pháp ObjectCounter. Bộ đếm theo dõi từng đối tượng qua các frame và tính số lượng VÀO/RA khi các đối tượng được theo dõi đi qua đường hoặc vùng, đồng thời trả về một frame 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)]"

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

Các argument của ObjectCounter#

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

Đối sốKiểuMặc địnhMô tả
modelstrNoneĐường dẫn đến file model Ultralytics YOLO.
show_inboolTrueCờ điều khiển việc hiển thị số lượng vào trên luồng video.
show_outboolTrueCờ điều khiển việc hiển thị số lượng ra trên luồng video.
regionlist hoặc dictNoneCác điểm xác định vùng quan tâm, có thể là một list các tuple (x, y) hoặc một dictionary ánh xạ tên vùng với list điểm cho nhiều vùng (chỉ dành cho RegionCounter). Khi None, các solution yêu cầu vùng sẽ sử dụng vùng mặc định được định nghĩa sẵn.
line_widthint2Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ.
verboseboolTrueBật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng.

Giải pháp ObjectCounter cho phép sử dụng nhiều đối số track:

Đối sốKiểuMặ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 detection; 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 false positive.
ioufloat0.7Thiết lập ngưỡng Intersection over Union (IoU) để lọc các detection chồng lấn.
classeslistNoneLọc kết quả theo chỉ số class. Ví dụ, classes=[0, 2, 3] chỉ theo dõi các class được chỉ định.
devicestrNoneChỉ định thiết bị dùng cho inference (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để thực thi model.
imgszint or tuple640Kích thước ảnh inference mục tiêu: một số nguyên cho ảnh vuông hoặc một cặp (height, width). Các hình dạng được điều chỉnh theo stride của model.
max_detint300Số lượng detection tối đa được giữ lại trên mỗi frame trước khi tracking, giới hạn các đối tượng mà một solution xử lý trong các scene đông đúc.
quantizeint or strNoneĐộ chính xác inference: 16 (FP16) hoặc 32/không thiết lập (FP32) đối với các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Thay thế cờ half đã bị loại bỏ.

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ốKiểuMặc địnhMô tả
showboolFalseNếu True, hiển thị image hoặc video đã được annotate 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 development hoặc testing.
show_confboolTrueHiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection.
show_labelsboolTrueHiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện.

FAQ#

  • Để đếm đối tượng trong video bằng Ultralytics YOLO26, bạn có thể thực hiện 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 tính năng thu video và khởi tạo bộ đếm đối tượng.
    4. Xử lý từng frame để theo dõi đối tượng và đếm chúng trong vùng đã xác định.

    Dưới đây là một 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")

    Để xem các cấu hình và tùy chọn nâng cao hơn, hãy tham khảo giải pháp RegionCounter để đếm đối tượng trong 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: Công cụ này hỗ trợ 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ư quản lý hàng tồn kho.
    2. Tăng cường bảo mật: Công cụ này nâng cao khả năng bảo mật và giám sát bằng cách theo dõi, đếm chính xác các thực thể, hỗ trợ phát hiện mối đe dọa chủ động và hệ thống bảo mật.
    3. Ra quyết định dựa trên thông tin: Công cụ này cung cấp thông tin chuyên sâu 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à nhiều lĩnh vực khác.
    4. Xử lý thời gian thực: Kiến trúc của YOLO26 cho phép suy luận thời gian thực, phù hợp với các luồng video trực tiếp và các ứng dụng nhạy cảm về thời gian.

    Để xem các ví dụ triển khai và ứng dụng thực tế, hãy khám phá giải pháp TrackZone để theo dõi đối tượng trong các vùng cụ thể.

  • Để đếm các lớp đối tượng cụ thể bằng Ultralytics YOLO26, bạn cần chỉ định những lớp quan tâm trong giai đoạn theo dõi. Dưới đây là một 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à đếm các đối tượng thuộc lớp 02 (ví dụ: người và ô tô trong bộ dữ liệu COCO). Bạn có thể tìm thêm thông tin về chỉ số lớp trong tài liệu bộ dữ liệu COCO.

  • Ultralytics YOLO26 mang lại một số ưu điểm so với các model phát hiện đối tượng khác như Faster R-CNN, SSD và các phiên bản YOLO trước đây:

    1. Tốc độ và hiệu quả: YOLO26 cung cấp khả năng xử lý thời gian thực, phù hợp với các ứng dụng yêu cầu suy luận tốc độ cao như giám sát và lái xe tự động.
    2. Độ chính xác: Model này cung cấp độ chính xác phát hiện và theo dõi hiện đại, giảm các trường hợp dương tính giả và cải thiện độ tin cậy tổng thể của hệ thống.
    3. Dễ dàng tích hợp: YOLO26 tích hợp liền mạch với nhiều nền tảng và thiết bị, bao gồm thiết bị di động và thiết bị biên, yếu tố then chốt đối với các ứng dụng AI hiện đại.
    4. Tính linh hoạt: Hỗ trợ các tác vụ phát hiệnphân đoạn, kết hợp chế độ theo dõi, cùng các model có thể cấu hình để đáp ứng yêu cầu của từng trường hợp sử dụng.

    Hãy tham khảo Tài liệu YOLO26 của Ultralytics để tìm hiểu sâu hơn về các tính năng và so sánh hiệu năng của model.

  • Có, Ultralytics YOLO26 rất phù hợp với 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à tính linh hoạt khi tích hợp. Các tính năng nâng cao của model 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. Một số trường hợp sử dụng gồm:

    • Phân tích đám đông: Giám sát và quản lý các khu vực tập trung đông người, đảm bảo an toàn và tối ưu hóa luồng di chuyển của đám đông bằng tính năng đếm dựa trên vùng.
    • Quản lý giao thông: Theo dõi và đếm phương tiện, phân tích mô hình giao thông và quản lý tình trạng ùn tắc theo thời gian thực bằng khả năng ước tính tốc độ.
    • Phân tích bán lẻ: Phân tích 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ố cục 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 dây chuyền sản xuất để kiểm soát chất lượng và nâng cao hiệu quả.

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

Bình luận