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

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

目标行为分析难点

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

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

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

[AI开发]目标跟踪之行为分析的更多相关文章

  1. [AI开发]目标跟踪之速度计算

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

  2. [AI开发]目标跟踪之计数

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

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

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

  4. CVPR2018 关于视频目标跟踪(Object Tracking)的论文简要分析与总结

    本文转自:https://blog.csdn.net/weixin_40645129/article/details/81173088 CVPR2018已公布关于视频目标跟踪的论文简要分析与总结 一, ...

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

    KCF目标跟踪方法分析与总结 correlation filter Kernelized correlation filter tracking 读"J. F. Henriques, R. ...

  6. [AI开发]零代码分析视频结构化类应用结构设计

    视频结构化类应用涉及到的技术栈比较多,而且每种技术入门门槛都较高,比如视频接入存储.编解码.深度学习推理.rtmp流媒体等等.每个环节的水都非常深,单独拿出来可以写好几篇文章,如果没有个几年经验基本很 ...

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

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

  8. [AI开发]Python+Tensorflow打造自己的计算机视觉API服务

    "与其停留在概念理论层面,不如动手去实现一个简单demo ."       ——鲁迅 没有源码都是耍流氓github 前言 目前提供AI开发相关API接口的公司有很多,国外如微软. ...

  9. 百度AI开发平台简介

    AIstudio https://aistudio.baidu.com/aistudio/index 关于AI Studio AI Studio是基于百度深度学习平台飞桨的一站式AI开发平台,提供在线 ...

随机推荐

  1. WPF将点列连接成光滑曲线——贝塞尔曲线

    原文:WPF将点列连接成光滑曲线--贝塞尔曲线 背景 最近在写一个游戏场景编辑器,虽然很水,但是还是遇到了不少问题.连接离散个点列成为光滑曲线就是一个问题.主要是为了通过关键点产生2D的赛道场景.总之 ...

  2. 理解 node.js 的事件循环

    node.js 的第一个基本观点是,I/O 操作是昂贵的: 目前的编程技术最大的浪费来自等待 I/O 操作的完成.有几种方法可以解决这些对性能的影响(来自Sam Rushing): 同步:依次处理单个 ...

  3. 随机森林分类器(Random Forest)

    阅读目录 1 什么是随机森林? 2 随机森林的特点 3 随机森林的相关基础知识 4 随机森林的生成 5 袋外错误率(oob error) 6 随机森林工作原理解释的一个简单例子 7 随机森林的Pyth ...

  4. EF CodeFirst数据迁移与防数据库删除

    1 开启migrations功能 enable-migrations -force 2 添加迁移版本 add-migration 名称后缀 我们每次修改实体后,都应该使用这个add-migration ...

  5. 程序员该如何过好他的整个职业生涯?(最重要的是你得一直往前走。拐点不是你的工资。想起很久前有个人说我“逻辑性”比较强)good

    作者|池建强 编辑|小智   戳阅读原文,获得短信提醒,不错过下次InfoQ大咖说直播! 1 写在前面 加入极客邦的第一天就被拉到了「大咖说」的现场,这也是我始料未及的事情.从锤子科技正式离职之后,我 ...

  6. virtualbox ubuntu16.04 自动挂载共享文件夹

    为了操作方便,需要ubuntu 在开机运行时自动挂载共享文件夹,ubuntu的版本是16.04,宿主机是win10,步骤如下: 1. 在virtualbox “设备”-“共享文件夹”中设置共享文件夹如 ...

  7. 动态链接库(Dynamic Link Library)学习笔记(附PE文件分析)

    转载:http://www.cnblogs.com/yxin1322/archive/2008/03/08/donamiclinklibrary.html 作者:EricYou 转载请注明出处   注 ...

  8. 深入了解Windows句柄到底是什么(句柄是逻辑指针,或者是指向结构体的指针,图文并茂,非常清楚)good

    总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解. ...

  9. mysql远程表链接

    FEDERATED简介 FEDERATED存储引擎是访问远程数据库中的表,在平时开发中可以用此特性来访问远程库中的参数表之类的,还是非常方便的.使用时直接在本地构建一个federated表来链接远程数 ...

  10. 原生Js汉语拼音首字母匹配城市名/自动提示列表

    根据城市的汉语名称首字母把城市排序,基本思路: 1.处理数据,按照需要的格式分别添加{HOT:{hot:[],ABCDEFG:{a:[1,2,3],b:[1,2,3]},HIGHLMN:{},OPQR ...