Vào thẳng nội dung

Theo dõi và đếm

Tổng quan

Sử dụng YOLOv8 để Theo dõi và Đếm:

  • Với một đường kẻ, có thể đếm số lượng vào và ra so với đường đó.
  • Hoặc với một khu vực, có thể đếm các đối tượng trong khu vực đã chọn

Trước khi Đếm

Trước

Sau khi Đếm

Sau

Cài đặt yêu cầu

Vui lòng cài đặt ecos-core trước

cài đặt bytetrack

pip install git+https://github.com/ifzhang/ByteTrack.git
pip install loguru lap onemetric
pip install supervision==0.9.0

install cython_bbox:

Với hệ điều hành ubuntu:

pip install cython_bbox

Note*: Với hệ điều hành windows

pip install -e git+https://github.com/samson-wang/cython_bbox.git#egg=cython-bbox

Sử dụng

python predict.py --opt "<ĐƯỜNG_DẪN_TỚI_TẬP_TIN_OPT>" --weight-path "<ĐƯỜNG_DẪN_TỚI_TẬP_TIN_TRỌNG_SỐ>" --input-path "<ĐƯỜNG_DẪN_TỚI_VIDEO_ĐẦU_VÀO>" --output-path "<ĐƯỜNG_DẪN_TỚI_VIDEO_ĐẦU_RA>"
  • ĐƯỜNG_DẪN_TỚI_TẬP_TIN_OPT là đường dẫn đến tệp opt.json
  • ĐƯỜNG_DẪN_TỚI_TẬP_TIN_TRỌNG_SỐ là đường dẫn đến tệp yolov8.pt
  • ĐƯỜNG_DẪN_TỚI_VIDEO_ĐẦU_VÀO là đường dẫn đến video đầu vào
  • ĐƯỜNG_DẪN_TỚI_VIDEO_ĐẦU_RA là đường dẫn đến video đầu ra

Ví dụ với video:

python predict.py --opt opt.json --weight-path yolov8x.pt --input-path vehicle-counting.mp4 --output-path out.mp4
  1. Nội dung của opt.json như sau:
{
    "data": "data.yaml",
    "task": "detect",
    "imgsz":640,
    "batch_size": 4,
    "epochs": 20,
    "version":"x",
    "save": false,
    "device": "0",
    "classes_filter": [0],
    "polygon_zone": [[150, 10], [150, 700]],
    "thickness": 2,
    "text_thickness": 2,
    "text_scale": 1,
    "camera_resolution": [1280, 720]
}

Với:

  • classes_filter: là mảng chứa chỉ số lớp để lọc. Nếu sử dụng mô hình mặc định từ YOLO, chỉ số lớp được đặt theo lớp COCO. Ví dụ: 0 là người.
  • polygon_zone: à mảng chứa điểm để xác định khu vực đếm. Để xác định một đường, polygon_zone: "[[x1,y1]", "[x2,y2]]", với "[x1, y1]", "[x2, y2]" là tọa độ của các điểm bắt đầu và kết thúc. Hoặc một khu vực là một tập hợp nhiều điểm.
  • thickness, text_thickness, text_scale là các giá trị để vẽ văn bản và đường kẻ.
  • camera_resolution là mảng chứa độ phân giải của camera [chiều rộng, chiều cao]