文/杨慧松 北京汉邦高科数字技术股份有限公司
视频监控已成为现代社会改善公共安全水平的基础设施。它可帮助系统操作员分析已发生的异常事件进行事后追忆;或检测到正在发生的威胁,以便及时安排警力处理(快速做出反应)。视频监控系统从最初的单机模拟式CCTV系统发展到如今分布式网络环境下的综合视频信息处理系统,在体系结构上日趋复杂。系统包括众多布控于现场的视觉传感器(摄像机)、传输链路、智能前端设备以及高级监控管理中心。
视觉监控的架构设计
系统架构
基于众多视频安防监控工程解决方案,我们总结出这样一条经验:一个实际的分布式智能视觉监控系统不仅应具备强大的视频分析功能,且还应具有“多层递阶”信息处理结构。如图1所示结构图,系统主要包括如下组件:
.多个节点工作站;
.一个数据中心平台站;
.一个监控管理站。
在图1所示拓扑图中,节点工作站实现形式位于视频监控现场的摄像机(IP摄像机或SDI摄像机)和智能终端(嵌入式硬盘录像机NVR或支持高清的SDI硬盘录像机),NVR或SDI硬盘录像机同时管理着多台摄像机。在IP视频监控解决方案中,高清IP摄像机将压缩后的视频流以略带延迟的方式传入NVR,NVR可有选择地分析收集到的各路视频的图像内容,并把分析结果和压缩视频流通过IP网络上传到监控数据中心平台站。在智能交通业务中,NVR除收集从一体化摄像机中传来的视频流外还包括该路视频中的智能视觉分析结果。在SDI-CCTV解决方案中,高清视频流通过同轴电缆以无压缩的方式高速地传入SDI硬盘录像机。SDI硬盘录像机上的智能分析软件直接对原始高清视频流进行视觉内容分析,并经由视频线向监控数据中心平台站上传分析结果和非压缩视频流。每个节点工作站上的操作系统通常为Linux且运行智能视频分析软件。
数据的分层传输方法
我们还提出了一种基于TCP/IP协议集的“数据的分层传输方法”——无论网络上有无“路由解析”或是“防火墙”(通常会对多媒体通信会话的建立造成干扰)设置,智能分析的结果数据和实时的音视频流数据都可以直接在开放的网际间传输。其具体技术方案以下两个:
1、底层通信协议采用XMPP即可扩展消息和呈现协议,这是专门为建立即时消息系统设计的。其虚拟的非限制性扩展功能使它被广泛应用在通用型服务器和分布式系统中。XMPP协议使用为保证安全消息完整性层(基于TLS标准)、认证、寻址策略提供了一种增值能力。XMPP协议还提供了一种基于XML消息的容器来存储自描述的结构化信息。本方案中,我们在此协议层实现智能分析结果数据(元数据)的路由传输。
2、XMPP协议的扩展部分用于建立视频监控中的多媒体通信会话。在本方案中,我们采用加密后的RTP协议来实现网络上的各种音频数据流和海量视频数据流的传输功能。当网络上设置有路由转发设备或在路由器上有防火墙时,为了保证高效的数据流传输,我们在系统中实现了代理服务功能。
移动目标的检测和跟踪
移动目标的检测
移动目标检测是视频分析处理链条的第一个环节,检测结果可为后续处理和分析使用。很多视频目标分割的算法通常使用空间和时间模型来产生目标的二值掩膜(对于精细的目标分割而言,而这也是图像分割的终极理想),而实际上得到的是对这个掩膜逼近的像素块Blob。在我们的系统框架中,我们采用基于时空复合模型的背景减除方法来检测前景目标。这种方法对很多应用场景都很适用,因它可有效地处理光照条件变化带来的干扰,很好地自适应背景变化带来的背景模型的更新方式,如:静止不动的目标逐渐融入到背景中,背景中的目标突然启动而容易使原来的背景模型难以适应更新的速度而产生“鬼影”(检测效果如图2所示)。
目标分割之外,还有一个辅助算法用于消除目标在光照作用下投射的阴影。首先是阴影的检测,然后是阴影的消除。通常,投射的阴影会成为检出的前景的一部分,阴影检测算法只要依据这部分在背景减除时误判的区域在连续若干帧之间的色度分量基本保持不变,且亮度分量很低(低于某一个阈值)的特性。每一个被检测为前景的像素都要经过上述的这种基于规则的判断,从而得到真实的前景。为了保证算法的实时性,我们在背景建模时摈弃了多维模型,从而避免了在线EM算法复杂的迭代和多分布模型排队的过程。另一种方法是采用灰度纹理相似度匹配的方式。
目标的跟踪
目标从连续帧中被检测到之后,我们需要知道目标在帧序列中的运动规律,以便在这个动态时间序列中确定每个移动目标各自唯一的身份,这就是目标跟踪模块任务。图3所示为多目标视觉跟踪的场景。对多个目标进行视觉跟踪可借助动态地维护一个相互关联的链表系统来实现,包括:检测链表、中间跟踪链表和输出跟踪链表。当场景内多个目标在空间上相对独立时,目标跟踪处于常态,链表系统的维护仅是完成节点匹配和节点搬移的工作。当检测链表和另外两个跟踪链表内的节点发生目标失配时,目标跟踪进入非常态,跟踪系统须马上进入失配处理程序,且链表系统需要对失配的节点进行保持连续的多帧,以决定是否从跟踪链表中删除节点或是恢复节点,以及建立新的节点。非常态跟踪的任务就是处理目标在场景中被局部遮挡(暂时消失)或是彻底消失,以及新目标进入场景的情况。
多目标跟踪系统还要判断和处理的另外两种情形:目标合并(含目标之间相互的局部遮挡)和目标分离。在检测链表和跟踪链表仅是基于独立数据关联时,这种目标分合情况的判别条件相对比较复杂。具体来说,在基于像素集合(Blobs)进行跟踪的系统中,当多个目标相互靠得很近或发生局部遮挡时,一个大尺度单目标将覆盖多个原来的小尺度目标,这时可在跟踪链表中触发相关目标合并的标志。由于此时各个小尺度目标已失去观测值,因此它们需要单独保持原先的预测跟踪状态(基于预测器),输入各自预测器的观测向量值由如下表其中p表示在本帧内跟踪器刚输出的先验预测值,由此带入跟踪器得到本帧内后验输出值。该过程称为“盲跟踪”阶段。在每一帧跟踪中,都要检测目标是否被覆盖,若覆盖始终存在,则跟踪链表中相关目标合并标志不能解除。
5.人脸检测、跟踪和识别
在图4所示智能视频分析功能所采用的多层递阶结构内,人脸目标的检测、跟踪和识别都是针对实时视频场景而言的。在实际应用中,人脸目标具有如下一些特点:
a、有些非高清场景视频中,图像质量不高;即便是高清视频,对于某些应用场合(如智能交通的卡口业务),获取的人脸目标尺度(20×20像素)相比基于静止图片的人脸识别应用(如公安机关的静态人脸比对系统)的人脸图片尺寸(128×128像素)小很多;这直接影响到定位人脸区域内的特征点精度,从而降低了识别算法的准确度。
b、在场景监控内的人脸目标通常容易受到光照条件、局部遮挡、人脸姿态和表情等因素的干扰,从而使得身份聚类的类内距离大于类间距离,导致误识率显著增加。
在多层递阶式场景视觉监控系统中,人脸识别通常建立在人脸目标检测和跟踪之上,为某种具体应用业务服务,其中跟踪功能和识别业务相对独立。这就决定着视频中人脸识别方式是一种“视频——图像(多幅图像)”模式的人脸识别,后台利用静止图像人脸数据库进行识别或验证。我们的做法是:对输入视频中的人脸进行跟踪, 寻找满足一定规则(如大小、姿态、清晰度等)的人脸图像, 然后再利用基于静止图像的人脸识别方法(如图5所示)。在图5中,多个人脸目标首先被检测和在视频的各帧之间连续可靠地跟踪到,然后依次与人脸数据库中的特征模型进行匹配,最终找到与之最相似的身份信息作为该人脸的视觉标签。
考虑到实用性效果,人脸检测的特征通常选取Haar特征或扩展后的Haar特征,可采用瀑布式级联分类器,通过Boosting学习算法得到分类器模型参数。多人脸跟踪原理和大致方法同前面章节所述,多人脸在场景内动态变化由一个链表系统来管理,特定人脸在场景中运动模型由Kalman预测器来描述。当人脸在场景中丢失观测时,可采用Harris角点信息作为提供可能的人脸特征点所在场景中位置的校验方案。
车牌检测和牌号识别
多层递阶式的视觉监控系统中还有一种触发事件检测的功能模块(子系统)就是针对车辆牌号的识别系统。它在智能交通系统和停车场安全监控中具有广泛的应用。
车牌识别的正确率除了字符识别(OCR)的性能外,还极大地依赖于车牌分割定位的准确性。传统车牌定位算
法主要根据车牌几何特征及图像纹理特征进行定位,而在相当多的复杂背景条件下,车牌外观表象经常不符合标准的特征,这使得车牌定位算法的可靠性受到严重的挑战:
.摄像机的安装位置和拍摄角度不规范;
.白天环境光较强及背景阴影的干扰下,边缘检测的准确性会降低;
.夜晚光照不足,夜间车灯干扰会发生误判;
.采集的图像质量导致车牌区域字符分辨率降低;
.车牌泥点遮挡或其它文字干扰了正常的车牌字符识别区。
要把车牌检测纳入机器学习框架内,垂直边缘信息和角点信息特征提取通常基于统计量方式。我们可基于一个48×16像素大小的扫描窗口对图像进行车牌模式信号检测。如可定义统计量区域密度为DG和区域密度方差VG,
其中,G(i,j)表示位于(i,j)位置上的梯度幅值,N是扫描窗口区域内的像素数量。 其中,n表示扫描窗口内被平均分成的子块数量,gi表示第i个子块内梯度幅值的平均值,g表示整个扫描窗口内梯度幅值的平均值。这清楚地刻画出车牌区域与非车牌区域的明显差异。
车牌识别的环节基于字符识别(OCR)核心算法的软件模块,这与通用的OCR软件相比比较简单,我们可以加入一些启发式的约束条件以提高识别的正确率:
.通过现场摄像机定标的方式,得到以像素为单位的具体字符的尺寸规则;
.字符滤波器:汉字仅在省市简称的字符集内,字母在A~Z之间,数字在0~9之间;
.字符串的规则:车牌字符串的汉字之后,不能以数字开始,所有字母都是大写。
车牌识别的OCR环节是在车辆出现在业务场景中的每帧进行的,可以把每次识别的结果存入一个缓冲区,当缓冲区填满后采用一种投票仲裁的方式,把识别结果相同率最高的那个字符串作为最终的识别结果。对于实际的工程(如重大的智能交通工程),为了使车牌识别的准确度达到最高的水平,最好能构造一个符合具体应用场景的字符数据库,以供OCR软件能事先学习得到最好的识别性能。
事件检测
事件检测是多层递阶式视觉监控系统的最后一层,这层有承上启下的作用,它把来自视频现场的经过前置智能分析层析出的视觉元素数据(如检测出的前景目标,被跟踪的场景中有唯一ID的目标跟踪轨迹,目标运动时序,场景中目标身份)统筹起来,检查是否有定义的规则及受到的触发,然后向语义层输出视觉监控最终结果,最终以两种方式提交:一种是以视觉告警、事件记录或快球聚焦的方式给现场操作员,另一种是把这个事件机器翻译成用语义表达的接近自然语言的格式,且保存在数据库中供用户层调用,追求的目标就是构造一个完整的W6(What、Where、When、Who、Why、How)系统。其中事件检测就是回答How的问题。
具备规则属性的事件检测
规则解释系统的操作对象是从底层视觉分析模块中输出的视觉元素数据,这些数据包括场景中目标的位置,它们当前的状态、类别及特定目标身份信息。事件检测器还识别目标之间的交互行为两个和场景的侵入。另外事件检测器还利用事件的历史记录,因此事件检测是支持闭环逻辑分析的。
在公共场所(如机场和火车站)的安全业务中,遗留包裹或行李包长时间无人看管是值得关注的,因出于安全考虑这有可能预示着恐怖爆炸案的发生。作为演示事件触发报警的例子,在这里用图6来说明。
这是一个联合使用底层事件检测器和高层事件检测器的例子。第一个条件是一个人离开行李箱:这个行为被检测到,当一个被识别为人(或拉行李箱的人)的目标分裂为两个目标:即这个人的目标(现在没行李箱了,但原来的跟踪器仍然锁定他),和行李箱目标(处于静止状态且被分配了新跟踪id)。第二个规则检查行李箱是否在被监控区域内保持静止长达相应时间,第三个规则检查刚才离开行李箱的人是否与行李箱离开了相应的距离。第四个规则检查人与离开的行李箱是否达到了相应的时间。最后,高层事件检测器检查在最近分析的若干帧内,是否上面四个规则定义的事件都被底层事件检测器探测到了。如果是,则高层事件检测器输出一个类似的事件描述:“一个人在监控区域A内离开了行李箱,并不在那里看管箱子了”。那么这个警告信息将直接发送到操作员的人机界面上。
上述基于规则的推理算法可以采用如图7所示的“IF-THEN结构”自然语言机制来现。当然还可采用模糊集方法实现更加准确的判断结果。
结语
本文提出的系统方案具备柔性的算法功能结构,为适应各种工程应用领域对目标识别和场景事件检测的需求,可选择不同功能模块来构建智能节点上视频分析组件,进而实现一个工程化分布式智能视觉监控系统。随着视觉物联网时代到来,基于大数据环境下的云存储和智能视频分析云计算架构,分布式智能视频监控系统可向云端视频监控管理中心提供结构化的海量视频数据和元数据。