时间:2015。

地点:武汉。

技能点:python,c++,machine learning,image processing。

 

最开始准备做这个异常视频事件检测的项目,还是因为看到了智慧城市大赛里面有这么一个项目。恰好,那个时候我正看一些关于异常事件检测的论文。

 

这个比赛中定义的异常事件分为5个类型,群体聚集,群体逃散,追赶,丢弃箱包,敏感区域徘徊。选手需要提供算法,针对每一个输入视频分别检测是否包含异常事件,以及异常事件的起始。然而,给定的训练样本只有拍摄得到的正常视频,没有包含异常视频

异常事件样例

 

显然比赛是希望我们用unsupervised learning 来解决这个问题,但是他们却人为的假设了5个异常事件类型。这实在是让人不解。结果就是比赛的时候大家基本都是用supervised learning的方式训练模型,并且通过人工标注得到正样本。最后也确实这样的方法成绩更好。

当时,看到这个题目的时候,我首先就想到了通过dictionary learning来从正常视频学习词典,并通过检验视频的重建误差来检测异常事件。后来发现,我们竟然是唯一的用unsupervised learning的参赛队伍。

具体的,我的思路如下:

  1. 通过前景分割提取前景目标区域。
  2. 提取图像的光流特征。
  3. 综合上述两个特征,来represent每一帧图像。
  4. 在正常视频中提取特征,并通过dictionary learning的方式学习词典。
  5. 在测试视频中提取特征,求出在词典基础上的重建误差,误差越大,越有可能是异常事件。

具体的提取特征可用下图表述。

 

具体的dictionary learning的思路可以参考相关论文。

我们的算法在一定程度上还是能够检测出视频中的异常事件的,如上图。但是其实在整个测试视频中的效果还是不太理想。

不过,最后还是得了全国三等奖,哈哈赢了5000.