README.md

    本文地址:https://blog.csdn.net/qq_43521665/article/details/117223138?spm=1001.2014.3001.5501

    注意:

    本项目使用Yolov5 3.0版本,4.0版本需要替换掉models和utils文件夹

    项目简介:

    使用YOLOv5+Deepsort+REID实现车辆行人追踪和徘徊检测,代码封装成一个Detector类,更容易嵌入到自己的项目中。车辆检测是理论上的,主要实现的是行人检测。注意这里因为项目背景,这里只一次识别3个行人,1辆卡车和1辆汽车。

    代码地址(欢迎star):

    https://codechina.csdn.net/qq_43521665/loitering-detection

    项目逻辑:

    使用yolov5进行物体的识别和筛选。将信息导入到deep_sort中进行分配跟踪id,并进行行人重识别,以保证重识别到的行人的id保持为之前使用的id.(如果对deep_sort分配id的方法没有概念,可以先看一下deep_sort单独对视频的处理。)最后将保存到的物体的移动轨迹进行简单的徘徊检测判断,也就是依据路程和位移的关系(所以真的是简单检测),当然你可以参考一些资料,实现更合理更精确的徘徊检测算法实现。

    项目运行:

    首先需要进行人物特征的导入,这是因为我临时加上了行人重识别,可一般的重识别模型都是在有参考视频的情况下进行的,所以……只好……运行PS/query_get进行图片的保存。截取的人物图片会保存在'PS/query'文件夹下,具体的配置文件在config中。之后运行demo即可。注意这里只允许不大于三人进行特征提取,其实这里应该不限制人数,但后来的徘徊检测已经固定死了。考虑到之后deep_sort还会为每个行人分配id,为了区分重识别人物的id,所以用负数和0进行标记。可以看到,这里将目标识别人物进行0,-1,-2标记。

        feats = {}
        feat = temp.get_feats()
        feats[0] = feat[0:2]
        feats[-1] = feat[2:4]
        feats[-2] = feat[4:6]

    PS下的temp文件是我将重识别模型的特征提取和特征匹配两个方法提取出来,整合成一个文件,这里也就是行人充实别的接口。 newtracker文件是徘徊检测问价,也是最核心的文件。这里是逻辑的集大成者,也就是yolov5,deep_sort,reid和徘徊检测算法都在这里进行。 plot_bboxes方法实现框和轨迹的绘制,update_tracker实现track_id的分配,并将结果输入到plot_bboxes方法,该方法中引用get_distance方法进行路程和位移的计算,并进行轨迹的保存,之后方便进行轨迹的绘画,当然轨迹是在提出警告后才开始进行保存绘制的。具体的内容还是参考https://blog.csdn.net/qq_43521665/article/details/117223138?spm=1001.2014.3001.5501 这篇代码中也有一些细节,例如超出视频范围内的轨迹预测,这里用到的就是离开的帧数和运动的速度,在使用过程中也要记得速度的更新。

    遵循 GNU General Public License v3.0 协议,标明目标检测部分来源:https://github.com/ultralytics/yolov5/

    项目简介

    当前项目暂无项目简介

    发行版本

    当前项目没有发行版本

    贡献者 1

    LuckyFucky @qq_43521665

    开发语言

    • Python 100.0 %