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
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
- 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]