owo12321/Yolov5_DeepSort_Traffic-counter: 基于Yolov5_DeepSort的物体计数器,可以统计车流或人流量等 (github.com)
1、环境配置
说一下我部署这段碰到的问题吧,得完全忽略掉原作者话
首先要python3.9起步
把requirements中porch和torchvision给注释掉。
用这段代码安装
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt
在./Yolov5_DeepSort_Traffic-counter/deep_sort_pytorch/deep_sort/deep/checkpoint路径下需要下载一个文件
链接:https://pan.baidu.com/s/1BwMUM9JGRhMQgmjTu_HXcw?pwd=bwux
提取码:bwux
默认使用Yolov5的5.0版本的yolov5s.pt模型文件,位于./yolov5/weights/yolov5s.pt,建议训练自己的数据集,参考,这段还没有尝试过
Train Custom Data · ultralytics/yolov5 Wiki · GitHub
2、检测原理
Yolov5_DeepSort会跟踪画面上检测出来的物体,并给每个框标上了序号,当有一个方框跨过检测线时,计数器就会+1
用户可以定义多条检测线,也可以指定框的四个顶点或中心点哪一个作为检测点
具体的参数设定见第3点
3、参数设置
在count.py中,设置以下参数
source_dir : 要打开的视频文件。若要调用摄像头,需要设置为字符串'0',而不是数字0,按q退出播放
output_dir : 要保存到的文件夹
show_video : 运行时是否显示
save_video : 是否保存运行结果视频
save_text : 是否保存结果数据到txt文件中,将会保存两个文本文件:result.txt和number.txt。result.txt的格式是(帧序号,框序号,框到左边距离,框到顶上距离,框横长,框竖高,-1,-1,-1,-1),number.txt的内容是统计到第几帧时每条线沿两个方向的跨线物体数
class_list : 要检测的类别序号,在coco_classes.txt中查看(注意是序号不是行号),可以有一个或多个类别
lines : 定义检测线的两个端点的xy坐标、颜色、粗细,可以定义多条检测线
point_idx : 方框的检测点位置(0, 1, 2, 3, 4),看下边的图,当一个方框的检测点跨过检测线时,统计数会+1
检测线的画法:给出两个端点的坐标,确定一条检测线,画布的坐标方向如下
|-------> x轴
|
|
V
y轴
方框的检测编号:当一个框的检测点跨过检测线时,计数器会+1,检测点的编号如下
#长度与帧宽即长方形长边,帧高即长方形短边,x为点距离左边的长度,y为点距离上边的长度
线的小侧是线与x轴所夹的锐角区域 这段要注意一下,否则在设置检测线的时候会很麻烦
测试文件是没法检测行人的,如果想检测行人,可以试试这段百度网盘 请输入提取码 提取码: 8ufq
这些都可以检测,我只测试了前三个
4、运行
设置好参数后,python运行count.py文件即可
如果跑不完,是没有输出视频的
python count.py