Đếm đối tượng trong các vùng với Ultralytics YOLO26#
RegionCounter solution trong Ultralytics YOLO26 thực hiện track đối tượng qua các frame video và trên mỗi frame, đếm các đối tượng có tâm bBox nằm bên trong từng region mà bạn định nghĩa. Mỗi region được vẽ lên frame với số đếm trực tiếp riêng, giúp bạn theo dõi nhiều zone như lối đi cửa hàng, làn đường, hoặc khu vực sản xuất chỉ với một lời gọi hàm Python hoặc câu lệnh CLI duy nhất.
Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions
Tại sao nên sử dụng đếm theo vùng?#
- Nhiều khu vực trong một lượt: Truyền một từ điển các đa giác được đặt tên và mỗi khu vực sẽ có số đếm độc lập được vẽ trên khung hình, do đó một luồng video có thể bao quát mọi khu vực bạn quan tâm.
- Tích hợp sẵn Tracking: Giải pháp chạy tính năng phát hiện của YOLO26 và object tracking bên trong, vì vậy không cần cấu hình thêm pipeline tracking riêng biệt nào khác.
- Số đếm có thể đọc theo lập trình: Mỗi khung hình được xử lý trả về một đối tượng kết quả với từ điển chứa số đếm của các vùng, sẵn sàng cho bảng điều khiển, cảnh báo hoặc ghi nhật ký.
Các ứng dụng thực tế#
| Bán lẻ | Đường phố thị trường |
|---|---|
![]() | ![]() |
| Đếm người theo vùng bằng Ultralytics YOLO | Đếm đám đông theo vùng bằng Ultralytics YOLO |
Cách đếm đối tượng trong các vùng với Ultralytics YOLO#
Chạy giải pháp RegionCounter trên nguồn video từ CLI hoặc Python. Một vùng có thể là một danh sách các điểm (một khu vực đơn lẻ) hoặc một từ điển ánh xạ tên khu vực tới các danh sách điểm. Ví dụ Python dưới đây đếm các đối tượng trong hai vùng được đặt tên và ghi các khung hình đã xử lý vào một tệp video đầu ra:
# Run a region counting example
yolo solutions region show=True
# Pass a source video
yolo solutions region source="path/to/video.mp4"
# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"Đối số RegionCounter()#
Dưới đây là bảng chứa các đối số của RegionCounter:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
region | list hoặc dict | None | Cá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. |
Giải pháp RegionCounter cho phép sử dụng các tham số object tracking:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
tracker | str | 'tracktrack.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. |
conf | float | 0.1 | Thiế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ả. |
iou | float | 0.7 | Đặt ngưỡng Intersection over Union (IoU) để lọc các phát hiện trùng lặp. |
classes | list | None | Lọ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. |
verbose | bool | True | Kiểm soát việc hiển thị kết quả theo dõi, cung cấp đầu ra trực quan của các đối tượng được theo dõi. |
device | str | None | Chỉ đị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 cài đặt trực quan hóa sau đây cũng được hỗ trợ:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nế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ử. |
line_width | int or None | None | Chỉ định độ dày đường viền của các hộp bao. Nếu là None, độ dày đường viền được tự động điều chỉnh dựa trên kích thước ảnh. Cung cấp khả năng tùy chỉnh trực quan để dễ quan sát. |
show_conf | bool | True | Hiể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_labels | bool | True | Hiể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ách thức hoạt động của đếm theo vùng#
RegionCounter solution biến mỗi region bạn truyền vào thành một đa giác với ít nhất ba điểm cho mỗi region. Một danh sách các điểm đơn thuần sẽ trở thành một zone duy nhất có tên Region#01, trong khi một dictionary sẽ giữ các tên zone của riêng bạn; mỗi zone được vẽ bằng màu sắc riêng từ bảng màu của Ultralytics. Mỗi frame sau đó được xử lý qua ba bước:
- Tính năng theo dõi của YOLO26 phát hiện và bám sát mọi đối tượng trong khung hình
- Đối với mỗi đối tượng được theo dõi, giải pháp tính toán tâm bbox và kiểm tra xem đa giác vùng nào chứa nó
- Số đếm của mỗi vùng được vẽ tại tâm của nó và các số đếm được đặt lại trước khung hình tiếp theo
Vì số đếm được thiết lập lại ở mỗi frame, con số hiển thị trên một region là số lượng hiện tại, tức là có bao nhiêu đối tượng bên trong đó ngay lúc này, chứ không phải tổng cộng dồn. Để đếm các đối tượng vượt qua ranh giới một cách cộng dồn, hãy sử dụng ObjectCounter solution.
Mỗi lần gọi cũng trả về một đối tượng kết quả có thuộc tính plot_im chứa frame đã được chú thích và dictionary region_counts ánh xạ tên region tới số đếm của chúng, cho phép bạn đưa các con số này vào logic ứng dụng của riêng mình.
Kết luận#
Giải pháp Ultralytics YOLO26 RegionCounter giám sát số lượng đối tượng trực tiếp ở bao nhiêu zone có tên tùy theo nhu cầu với chỉ vài dòng code. Để tìm hiểu sâu hơn, hãy đếm các lượt vượt qua ranh giới với object counting, theo dõi đối tượng trong một zone đơn lẻ với TrackZone, hoặc khám phá các Ultralytics Solutions khác.
Câu hỏi thường gặp#
Ultralytics YOLO26 đếm các đối tượng trong các region bằng cách track mọi đối tượng trong frame và kiểm tra xem tâm bBox của nó có nằm bên trong mỗi đa giác do người dùng định nghĩa hay không. Số đếm hiển thị trên một region là số lượng hiện tại cho frame đó, không phải tổng cộng dồn. Các tùy chọn cấu hình được liệt kê trong phần
RegionCounter()Arguments.Truyền đối số
regiondưới dạng một dictionary ánh xạ tên zone tới danh sách các điểm, như trong main example:from ultralytics import solutions region_points = { "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)], "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)], } regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)Mỗi khu vực được đặt tên sẽ được vẽ bằng màu sắc riêng với số đếm độc lập.
Đối tượng được trả về bởi mỗi lời gọi
regioncounter(im0)chứa một dictionaryregion_countsánh xạ tên region tới số đếm của chúng, bên cạnhplot_im(frame được chú thích) vàtotal_tracks(số lượng đối tượng được track). Hãy in đối tượng kết quả để kiểm tra tất cả các trường có sẵn.Có. Truyền đối số
classeskèm theo các chỉ số class cần giữ lại, ví dụclasses=[0]để chỉ đếm người với mô hình được train trước trên COCO. Danh sách đầy đủ các đối số liên quan đến tracking nằm trong phầnRegionCounter()Arguments.RegionCounterhiển thị số lượng đối tượng bên trong mỗi zone đa giác ở frame hiện tại, trong khi ObjectCounter đếm đối tượng cộng dồn khi chúng vượt qua một đường hoặc ranh giới region, track tổng số đi vào và đi ra. Sử dụngRegionCountercho số lượng hiện diện trực tiếp của một hoặc nhiều zone vàObjectCounterđể đếm số lượng vào và ra; các region có hình dạng đường thẳng chỉ được hỗ trợ bởiObjectCounter.

