基于视频结构化的应用中,目标在经过跟踪算法后,会得到一个唯一标识和它对应的运动轨迹,利用这两个数据我们可以做一些后续工作:测速(交通类应用场景)、计数(交通类应用场景、安防类应用场景)以及行为检测(交通类应用场景、安防类应用场景)。我会写三篇文章依次介绍这三个主题。

(1)目标跟踪之速度计算

(2)目标跟踪之计数

(3)目标跟踪之行为检测

至此,三个主题都结束了。

本篇文章以交通类应用场景为例,介绍车辆异常行为分析方法。车辆异常行为通常又称“车辆异常交通事件”,指车辆在行驶道路上出现的违法行为,一般包括 停车、逆行(倒车)、占用应急车道、拥堵等等。本篇文章分别介绍这四种车辆异常交通事件的分析方法。

注意:高速交通中,通常异常交通事件还包括行人闯入、抛洒物、烟火等,由于这些跟车辆没有直接关联,本文不涉及此类事件。

(停车事件)

定位目标轨迹点

前面系列文章已经提到过,目标检测算法会输出目标的位置,一个四元组(Left、Top、Width、Height),代表一个矩形框,该矩形框住的范围就是图像中目标的位置。我们在进行目标行为分析时,需要先找到一个二维点(X,Y),使它最能代表目标在地面上的位置,原因很简单,因为画面中的目标实际是在三维世界中的地面上移动。大家可能第一反应应该选择矩形框的中心点(Left + Width / 2, Top + Height /2),虽然这个点非常好计算,但是实际应用中该点并不非常准确,通过它并不能准确地反映目标在地面上的实际位置。

如上图所示,黄色矩形框代表货车在画面中的位置,如果选取矩形框中心点来定位车辆在路面上的位置,那么货车应该在行车道(右侧车道)上行驶,而实际情况货车正在超车道(左侧车道)上。显然用这种方式去判断车辆在路面上的位置非常不准确。

另外一种方式是选取矩形底边的中心点(Left + Width/2, Top + Height),这种方式比前一种更准确,但是当车道方向与摄像夹角非常大时,定位误差非常明显。

如上图,黄色矩形框代表客车在画面中的位置,如果选取矩形框底边中心点来定位车辆在路面上的位置,那么客车应该压线了,而实际情况客车行驶正常。

实际经验得到,只取矩形框底边中心点还不够,还需要根据车辆行驶方向与垂直方向的夹角大小来动态调整该点的X指,也就是说,最终选取的点应该是 (Left + Width/2 + delta, Top + Height),其中delta可正可负,最终的效果如下:

停车

停车时,目标静止不动,理论上目标轨迹点不变,我们只需要判断轨迹点在连续若干帧之内都没发生变化即可(Xm == Xn && Ym == Yn)。但现实场景中,由于目标检测算法的准确性,同一个目标即使静止不动,每一帧检测到的矩形框也有可能不一样(位置不同、大小不同等),最后得到的轨迹点也不会重合。因此更好的判断方式是:目标轨迹点连续若干帧之内欧氏距离(平面直线距离)不大于某值,比如50像素,那么我们即可认为车辆静止不动(停车事件发生)。

逆行(倒车)

逆行时,目标第M帧轨迹点和第N帧轨迹点的射线与道路方向之间的夹角如果大于某值,比如大于90°,那么判定为逆行。其中M<N

占用应急车道

当车辆行驶时,判断目标轨迹点在连续若干帧内是否都在应急车道中,若是,则为占用应急车道,其他类似的区域事件判定逻辑与这个一样

拥堵 和 缓行

连续若干帧内静止车辆数大于某值,车辆静止的逻辑可以参照前面停车的逻辑。当路面多辆车静止不动时,判定道路发生拥堵。该方式很简单,但是通常情况下,除了这种堵死的情况外,我们更需要知道是否出现缓行(提前应对拥堵发生)。

缓行有两种方式去判断:

(1)结合前几篇文章提到的测速,如果发现多辆行驶车辆的速度都小于某值(可以分级定义),那么判定道路缓行;

(2)很多情况下,车速测不出来(前面文章中有提到,没有参照物的道路测不出车速),那么我们需要使用其他方式先判断单个车辆是否缓行:在连续若干帧中,车辆轨迹点直线距离小于某值,但是大于另外一个值(保证车辆没有停止)。如果连续多帧中出现缓行的车辆数大于某值,那么判定整个道路进入缓行状态。

目标行为分析难点

前面所有的行为逻辑判断全部基于理想状态下:检测算法比较准确,矩形方框锁定目标比较稳定,不会出现丢帧、矩形框抖动严重(位置、大小跳跃厉害)。实际应用场景中,由于各种各样的因素,目标锁定不够准确,会对目标行为分析造成非常大的负面影响。

另外,上面所有判断逻辑全部基于像素单位(图像二维坐标系),这个判断依据存在一定缺陷,检测算法能检测到很远的车辆,虽然这时候车辆一直处于运动状态,但是它反应到平面二维画面上时,车辆几乎静止不动,根据前面的判断逻辑,这种情况会出现停车、拥堵等误报。避免这种误报的方式之一是尽量将摄像头斜对行车道,而不是刚好在车道的正前方/正后方。

除此之外,还有其他一些局限性,比如上面提到的各种阈值的调整,也是非常考验人的一项工作。一般视频分析应用很难同时满足多个场景,针对不同的需求最好做一些特定的优化。

转载于:https://www.cnblogs.com/xiaozhi_5638/p/11178029.html

[AI开发]目标跟踪之行为分析相关推荐

  1. [AI开发]目标检测之素材标注

    算力和数据是影响深度学习应用效果的两个关键因素,在算力满足条件的情况下,为了到达更好的效果,我们需要将海量.高质量的素材数据喂给神经网络,训练出高精度的网络模型.吴恩达在深度学习公开课中提到,在算力满 ...

  2. 无需标注数据集,自监督注意力机制就能搞定目标跟踪

    选自towardsdatascience 作者:Rishab Sharma 机器之心编译 编辑:陈萍.杜伟 深度学习的蓬勃发展得益于大规模有标注的数据驱动,有监督学习推动深度模型向着性能越来越高的方向 ...

  3. 视频目标跟踪算法综述

    视频跟踪:基于对比度分析的目标跟踪.基于匹配的目标跟踪和基于运动检测的目标跟踪       基于对比度分析的目标跟踪:主要利用目标和背景的对比度差异实现目标的检测与跟踪.这类算法按照跟踪参考点的不同可 ...

  4. 【滤波跟踪】Singer-Kalman模型下的机动目标跟踪算法含Matlab源码

    1 简介 现实跟踪场景中,运动方式多样性.随机性运动和运动规则不确定性是机动目标的典型运动特征.机动目标跟踪的难点主要有: 建模一个准确的.通用的先验数学模型来表示机动目标的运动特性; 设计基于完善的 ...

  5. 了解CV和RoboMaster视觉组(五)目标跟踪:概述与光流法

    --neozng1@hnu.edu.cn 5.4.目标跟踪 为了简化分析和学习过程,本文所指的目标跟踪皆为单目标跟踪.其任务是在给定某图像序列初始帧中的目标位置和范围(cx,cy,h,w)的情况下,预 ...

  6. 【项目合作】最高50万元!道路缝隙检测、目标跟踪优化、机器人平台开发

    点击我爱计算机视觉标星,更快获取CVML新技术 分享几个计算机视觉项目,需要使用的技术主要为目标检测.视觉跟踪.SLAM,欢迎联系,也欢迎加入我们的高质量付费知识星球,获取.发布更多项目外包.求职招聘 ...

  7. CVPR2018已公布关于视频目标跟踪的论文简要分析与总结

    CVPR2018已公布关于视频目标跟踪的论文简要分析与总结 一,A Twofold Siamese Network for Real-Time Object Tracking 论文名称 A Twofo ...

  8. MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral)

    MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral) Tracking by Instance Detection: A Meta-Learning Approach 论文链接:h ...

  9. KCF目标跟踪方法分析与总结

    KCF目标跟踪方法分析与总结 两个竖杠是什么数学符号    就是这个 | |  这个符号叫做范数,它事实上是由线性赋范空间到非负实数的映射 在线性赋范空间中,它可以表示空间中的点与原点间的距离,两点间 ...

最新文章

  1. 如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)
  2. hdu 1506(dp || 单调栈)
  3. Android MediaRecorder系统结构
  4. apache安全—用户登录验证
  5. 动态添加XtraTabControl
  6. 第五人格pcmac_第五人格:未上线,勘探员已经让庄园内的CP乱了分寸,祭司最绝...
  7. 纯JavaScript实现的调用设备摄像头并拍照的功能
  8. Java EE 8 MVC:使用表单参数
  9. 【资源下载】《Pytorch模型训练实现教程》(附下载链接)
  10. OAuth 1.0a 的 C# 代码实现
  11. 小程序模拟服务器,小程序模拟请求服务器json数据
  12. 解决库仑计初始化卡死问题
  13. 物联网工程导论笔记一:RFID及二维码技术
  14. 个人陈述 计算机专业,研究生个人陈述范例,计算机专业
  15. 即时通讯软件会取代电子邮件吗?
  16. mac-Pro13 电池图标一直保持充电状态的问题解决
  17. 查找共家庭组计算机,家庭组多台电脑共享方法
  18. 一定要让你彻底明白什么是USB子系统
  19. DeepLab语义分割
  20. vue笔记1 渐进式、 MVVM 框架

热门文章

  1. 教您怎么从spring 官网下载参考文档
  2. postgres使用dblink
  3. mdcsoft服务器网络安全解决方案-SQL注入解决
  4. sudo mount -o loop pm.img /mnt/floppy/mount 错误解决办法--mount 您必须指定文件系统的类型
  5. Operation not allowed after ResultSet closed--操作mysql数据库
  6. Struts2中表单与Action传递数据三种方式
  7. Lisp语言: 在Windows下搭建CLisp环境
  8. 封装一个类搞定90%安卓客户端与服务器端交互
  9. 从数组中取出n个元素的所有组合(递归实现)
  10. C#之windows桌面软件第三课:完整的串口调试助手