Flow Mosaicking: Real-time Pedestrian Counting without Scene-specific Learning 阅读小结
2009 CVPR IEEE会议
一、概述
研究问题:如何准确地计算出视频中行人的数目
应用场合:视频监控,区域某一时段人流量的统计及限制
研究意义:虽然近年来,该方向研究取得了很大的进步,但是这些方法容易受到行人密集和遮挡程度加重的影响而性能快速下降,另外前人没有研究90度外的情况。
论文提出的方法:基于flow velocity field(流速场)估计来计算行人经过某一侦测线(detection line)或者特定区域的数目。
二、思想方法
我们把行人经过侦测线看作流体,设计一个新的模型来估计流速场,计算像素速度,结合时间,利用速度值构造动态的镶嵌(dynamic mosaics)来计算通过侦测线的像素和边缘的数目。最后,把加权像素的数目和边缘的数目作为输入值使用二次回归算出行人的数目。其中,回归器是通过几个不同的摄像头角度并加上调整信息离线训练,属于机器学习中的应用。
(1)ROI 两种:
1)特征和像素回归法:提取感兴趣区域的像素和特征向量(如在前景块中或分割的运动分片中),使用机器学习算法对提取的像素和特征数目进行回归计算出
行人的数目。其中,特征包括边缘、小波系数或者大量特征的合并。回归可能是线性回归,神经网络,高斯处理回归或者离散分类器。
2)行人侦测:多目标侦测。通过背景分离,运动计算,外形连通分割,轮廓,形状匹配或标准的物体识别方法。
(2)LOI:大部分采用特征跟踪。通过不同帧的特征跟踪检测形成轨迹,聚集这些轨迹变成物体的跟踪。缺点:算法消耗时间大,在行人密集情况下鲁棒性差。
3、该论文的亮点:
(1) 提出一个在侦测线上健壮的流速场估计算法,在原本的方法上加上slow和smooth先验并可以使用在其他应用。
(2) 有别传统的特定场景的学习,采用了离线学习的方法,不同摄像头角度的训练,简单方便应用和避免过拟合。
(3) 提出的方法能同时解决两类(LOI和ROI)问题。用在LOI能做到实时(每秒17帧),用在ROI也能很高的帧速(每秒12帧左右)。
4、算法流程概述
背景建模→在流速场中估计侦测线各点的速度→在侦测线开始以速度值为宽度在前景中分割薄片→累积薄片成块(即是行人)→使用二次回归输入加权的像素和边缘的数目得到行人的数目
5、重点
(1) 流体速度场估计
多人经过一条侦测线,要跟踪和计数是个挑战的问题。我们把行人经过某一条线看作是流体场,计算其速度。在LOI计数中,我们主要考虑经过侦测线两个方向,并且约束方向为基本垂直线的方向,如下图:
在传统的光流场中,速度通过最小化由iso-brightness和smoothness约束项组成的能量函数来求解。iso-brightness约束是指移动前后的同以像素点应该具有相同的亮度值;smoothness约束指相邻的像素应该具有相似的速度。在此,我们加上如下改进:
1) 再加上两个约束slow慢约束和temporal smoothness时间平滑约束。
2) 在传统iso-brightness约束为两帧改为多帧约束提高鲁棒性。
3) 传统光流法能量向使用L1范式平方形式,有助于封闭解。改用L2范式更具健壮性。
在我们应用中,用户画定一条侦测线。假设线上有N个点{x1,x2,…, xn},我们通过光流法求解其对应的速度{u1,…,un}.It为在时刻t的帧图像,It(x)为像素在位置x的像素值。由多帧iso-brightness约束最小化:
(2) 利用回归计数
1) 我们把两个不同方向(左或右,上或下)分开处理。通过侦测线的前景的分块,我们使用当前帧的线上的像素点的平均速度作为宽度对其进行剪薄片并且累积成为块(blob),这个过程称为Dynamic Mosaic,如下图(b)所示。Mosaic以没有运动或者blob达到阈值停止。从实验效果看到这些blob其实就是行人的图像部分,这也证明了算法的正确性。前景的获得需要进行背景建模,各种方法效果都差不多,常用的是混合高斯建模。
2) 透视校正:使用F. Lv, T. Zhao, and R. Nevatia. Self-calibration of a camera from video of a walking human. In ICPR, 2002.中简单的校正算法得到粗略的校正矩阵。把线上的点看作一个圆作如下图的投影得到一个四方形,把四方形的面积作为该对应点的权值。在ROI中,我们只需沿着四周区域规整化其面积(不懂)。
3) 回归:采用离线训练(相比在线训练,可以避免过拟合,应用范围更广和实际运用算法更快),对不同的摄像头角度(90、65,45度)分别训练(有别于传统的基于特定场景),使用加权像素点个数A和边缘个数B两个特征来描述dynamic blob。边缘使用Canny边缘检测方法。给定校正矩阵,我们可以算出在侦测线上行人的高度H(90度时为肩宽)。最后使用(A,B,1/H)作为输入,行人数目为输出,训练二次回归函数。