多人徘徊检测代码实现-loitering detection

首先我的项目是应用于边防,并且是不完善的
尤其是在行人重识别部分,因为分配的track_id与轨迹保存是一一对应的关系,因此如果在行人重识别和deep_sort的分配id部分没有处理好,之后的轨迹分析和绘画都将出现失误。这里我的效果并不好。

徘徊定义:
所谓徘徊就是运动人体在一个地方停留超过一段时间或者运动轨迹出现异常(在一个地方来回反复的走)

问题分析:
在这里插入图片描述

解题思路:

在这里插入图片描述

最终实现:

  1. 1.首先使用yolov5m模型进行物体检测,筛选出行人,卡车和汽车。考虑到运行效 率和使用背景,只进行三个行人,一辆卡车和一辆汽车的徘徊判定。如果行人过多,就发出人员密集的提示信息。
  2. 使用deep_sort进行目标跟踪。在实现过程中,发现跟踪算法对视频中连续的物体移动跟踪效果很不错,但对物体(或者身体一部分)移动到视频外,会发生ID跳变,识别并不准确,需要使用行人重识别进行track_id的更正
  3. 进行行人重识别,对deep_sort中分配给物体的track_id进行更正。根据track_id进行物体坐标的对应保存
  4. 每50帧进行一次轨迹判断,计算物体移动的路程和位移,若路程和位移相差30,记为警告一次,如果发生警告2次,即发出警告提示(发出警报),并开始保存并绘画运动轨迹,每50帧修正一次运动轨迹。考虑到警告提示发出后,在边防背景下,会立刻安排人进行处理,如果没有响应,可能就会默认接受,因此警告提示会持续100帧,100帧后会自行消失。在整个徘徊检测过程中,五个物体是独立进行检测的,互不干扰

想法:

  1. 其实最大的问题就是行人重识别部分,一个人还好,如果是多人的话,个体之间的特征如果类似,那么可能会识别的id互换,那么保存的轨迹坐标会发生很大的变化,在轨迹绘画的时候也会变得很乱。使用deep_sort是为了区分不同的个体,但无法识别离开视频再回来的人是同一个人。
    所以需要使用行人重识别再进行判断。
  2. 行人重识别就是将track_id变更为正确的id,这是在给每个跟踪的人分配唯一的跟踪id的前提下进行的。在我的代码中,我是直接设置定死的,这样是不对的。合理的是每个人的跟踪id先由deep+sort分配,如果行人重识别中有记录,那就修正为对应id。
  3. 其次就是对于一直出现在视频内的物体,deep_sort跟踪是比较准确的,对于进入视频被行人重识别识别到的行人,更改其跟踪id,但是随着行人在视频内的各种行为,可能行人重识别就会识别出错,但是我们的deep+_sort跟踪其实知道是同一个物体,所以如果在视频内使用deep_sort进行基础的识别,行人重识别的错误就可以被降低。
  4. 但这种情况要防止1号行人刚出视频,另一个就紧接着进来,这是会被deep_sort分配同一个跟踪id,所以这时又要依赖行人重识别。一句话,重点就是要注意行人重识别和deep_sort的搭配使用。当然也需要提高行人重识别模型的准确率。在我的代码中是使用每个人两张图片进行的,效果一般。尤其是行人较多的时候(容易发生id switching),和视频边缘,容易发生track_id跟踪错误。
  5. 行人重识别模型并不是自己训练的(我只是个方法搬运工),由于行人重识别主要是在嫌疑人的识别中,所以是在有目的行人照片的前提下进行匹配的,所以我的代码中是提前进行了照片的提取,进行特征提取的前提下,再去匹配的。而在真正的徘徊检测中是没有目的行人的图片的,可能需要对第一次出现的行人进行随机截取,但是截取的图片形态是影响行为重识别的,所以也不好估量。
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值