周文杰,伍文豪,丁德红,郭国强,帅勇
(1.国网湖南省电力有限公司常德供电分公司,常德 415000;2.湖南文理学院,常德 415000;3.湖南应用技术学院,常德 415099)
人体行为识别是利用计算机技术,通过特定的识别算法,分析视频设备采集到的数据,对视频中的人进行行为识别的技术[1]。随着我国在视频监控领域的市场不断扩大,传统的视频监控系统已经不能满足人们的需求,更期望能有一套完整的监控系统,对视频中我们感兴趣的事件能够自动地检测出来,不需要人工干预即可完成我们所需要的视频片段或者图片,当前有很多学者研究人员在这方面进行不断发掘,在传统的人体行为分析算法进行改进或者开发出新的算法。
文献[2]在复杂场景下的单人行为监测、实时连续行为监测、多人交互行为分类问题上给出了不同的解决方案,在复杂场景单人行为监测中使用了遮罩的模板匹配方法使用CMU数据库进行了算法测试,实验结果表明通过遮罩进行特征识别结果比没有遮罩识别结果效果好,文献[3]中提出了一种慢特征分析(SFA)方法进行视频中的人体行为分析,与改进型慢特征分析算法(D-SFA)进行实验对比,验证了慢特征分析方法和改进型的特征分析算法在人体行为分析提取慢特征的有效性,同时实验证明在一定程度上D-SFA比SFA的效果更好。文献[4]中作者将人脸识别、人体解析和行为解析应用到公安的交通治安、视频巡逻、调查取证、治安案件调查等多个重要业务应用,就不需要大量人力对视频内容进行手动筛选,减少工作量,并且提到监控领域对智能分析系统的需求日益增多。
目前我国市面上有很多平台都推出了用户可以根据自己的需求自定义事件模型,通过在公共的模型数据基础上,用户在不断地添加素材对模型进行二次训练,可以达到比较高识别准确率,但是这样本地部署会有很多的条件限制,例如:需要昂贵的GPU服务器及复杂的授权,等等。因此可以选择自带处理芯片的摄像头,可以节省成本加快研究发速度。
整个系统主要分为AI行为分析、MQTT服务器和后台三部分,也就是正好对应物联网的感知层、传输层和应用层,整体架构如图1所示。
AI行为分析主要是把我们在线上训练好的数据集部署到海康摄像头中,由它完成视频流采集和图像分析,对图像进行采集并且通过机器学习训练各种模型,如睡觉模型、玩手机、不着工装、看报、吃零食模型,等等,后期使用中可以不断提高模型的识别准确率;通过处理视频流分析出人体的异常行为动作,摄像头连接MQTT服务器,实时地推送消息到MQTT服务器,最后得出结果,主要的实现步骤如下:
(1)对各种异常行为进行样本视频采集,对视频进行结构化、行为化处理,打上相应的标签,从而训练出对应的行为模型。
(2)对多个行为模型进行混合,整理成混合行为模型。
(3)模型训练采用海康的AI框架进行线上训练。
(4)训练完成后下载离线的模型包以及标签文件,对局域网内的摄像头进行离线部署。
图1 AI行为分析整体架构图
MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器到机器”(M2M)或物联网(IoT)世界的连接设备,以及带宽和电池功率非常高的移动应用的理想选择[5]。我们通过加入MQTT中间件的加入,降低整个系统的耦合度,同时可以在不可靠的网络环境中,为远程连接的设备提供可靠的消息服务。MQTT服务器我们是借助第三方平台以降低整个系统的成本,把海康摄像头接入到该平台中,只要检测到有事件发生就会实时推送消息到该MQTT相应的Topic中,后台通过MQTT客户端订阅Topic就可以获取到发生的事件。
MQTT服务器主要是借助华为云提供的物联网服务通过网络经过MQTT协议把对应的消息传输到华为云的MQTT服务器中,传输过程如图2所示。
MQTT作为整个系统的中间产品,起到连接作用,也是传输消息重要通道,对整个系统的重要性不言而喻。MQTT是基于订阅/推送方式的消息传输协议,所以我们把海康摄像头接入华为云的物联网平台时,通过代码设置监测到有事件触发时推送到指定的Topic。
图2消息传输过程
MQTT进行二进制数据传输时,主要是以JSON格式的数据作为载体传输消息,JSON格式数据中主要包含了设备基本信息、监测到的事件类型、事件发生的时间以及对应事件图片的URL,如下JSON数据格式说明。
整个后台使用主流编程语言Java进行开发,利用Spring全家桶进行开发构建,同时也利用thymeleaf模板引擎开发前端界面,为了节省资源使用了Websocket进行消息的实时展示,并且把消息持久化到MySQL数据库中。
为了保证系统每次启动时,可以自动订阅海康摄像头推送检测事件的Topic,因此把这些订阅信息存储在数据库中,并且在接收消息后实时显示消息并且持久化数据库表中,我们也可以查看所有的历史消息。部分数据库表如表1。
表1 数据表mqtt_client
表2 数据表mqtt_topic
表3 数据表mqtt_data
每次系统启动初始化时都会从数据库中查询订阅信息,订阅Topic以接收MQTT服务器接收的消息。
本系统中为了避免使用AJAX轮询消耗较多的资源,该系统实时数据展示中使用Websocket技术,使用Websocket的点对点通信推送,在MQTT客户端的接收消息回调方法中发送消息给前端页面展示同时把相应的数据存储在数据库中。
本次AI行为分析算法利用的是海康威视AI开放平台,建立一个行为分析模型需要先让机器进行学习,机器学习主要包括以下四个步骤:
(1)数据采集
AI行为分析是通过一个机器去识别不同状态,机器就需要一个不断学习的过程,所以就需要大量的数据去发掘规律,一些定义的问题就需要这些数据作代表,这些大量的数据能让机器学习算法在从中学习到规律,最终得到预测模型。我们把已经知道结果的历史数据称为标记数据,每一条独立的标记数据叫做样本。一条样本包含两个部分:
目标值label:即结果,就是需要预测的答案。
特征值:即特征,特征值是指和目标值有关联关系的属性或者描述性的数据,变量值越丰富越好。
(2)特征工程
特征工程是把样本数据中的各变量数据处理得更具有表征意义,是将特征的选择、变换、组合等过程。目的是希望能够最大限度地从原始数据中提取特征以供算法和模型使用。提取特征值的过程包括以下几个方面:
特征选择:选取重要有用的特征用于建立模型。
特征组合:可以把已有的特征经过组合去形成一个新的有意的特征。
连续特征离散化:在算法应用中,某些算法很少直接将连续特征输入而是将连续特征离散化为一系列0、1特征交给逻辑回归处理,离散化之后的特征更加具有鲁棒性。如果特征没有离散化,会给模型造成很大的干扰。
(3)模型训练与优化
有了足够多的样本数据,通过选择合适的算法并配置合适的算法参数,就能进行模型训练。模型算法能学习到训练样本数据中变量和目标值之间的函数关系,我们把学习到的这个函数关系叫做模型。
实际训练过程中,我们训练出的模型通常需要通过尝试多次评估以及多次的参数设定,训练来产生一个较优的模型以供实际业务使用,这个过程也叫做模型优化。
(4)预测应用
通过上述模型训练,得到一个可用模型后,通过给模型输入新的待预测的数据,可以测得到预计结果。根据识别应用场景不同,应用方式可分为以下2种:
批量预测:通过一段时间的堆积,有很多要被预测结果的数据,需要通过模型一次性的产生这些数据的预测结果,这种批量预测的方式也称之为线下预测。
实时检测:通过模型对线上实时产生的一条或多条数据进行预测,实时地给出预测结果,这种预测方式也称之为线上检测。
有了对机器学习过程的了解,就可以利用海康的AI训练平台去训练和发布模型。主要步骤如下:
(1)对需要检测行为进行样本视频采集,对视频进行结构化、行为化。
(2)对采集到的每个单独数据打上相应的标签,指定要提取特征值的范围,构成一个待训练的数据集。
(3)将数据集进行训练成模型,可以选择合适的算法并配置合适的算法参数,就能进行模型训练,再进行多次评估和参数设定就可以训练成模型。
(4)模型训练完成之后就可以使用测试样本对其模型进行预测,也称之为线下测试。预测试可以检测出该模型分析行为的准确度,当测试的准确度没有达到一定预期值就能重新对该模型进行训练,为实际部署减低成本。
线下测试通过便将模式实际部署进机器,该模型可通过线上实时产生的一条或多条数据进行预测,实时地给出预测结果,称之为线上测试。
(5)预测试结果达标即可实际使用并实时检测行为,对其分析出结果。
人体行为识别的主要过程,第一通过海康摄像头采集视频流检测是否有我们所需要的模型事件发生,我们在模型训练时,采集了大量的不同动作类型的素材,对每种素材标上标签后进行统一的线上训练,在测试时发现只有摄像头只有正对着每个岗位,采集角度偏差不大时识别准确率会很高,并且后面在测试过程中不断地人工纠正识别错误的动作类型图片,使模型识别准确率基本可以达到95%以上,第二将海康摄像头将检测到的模型事件通过网络推送到MQTT服务器上,第三后台解析MQTT接收的消息并且展示出来。
图3实时识别效果
图4视频结构化(MQTT推送的识别结果)
本文详细地描述了如何使用海康摄像头和物联网技术融合开发出AI行为分析的整套系统,本系统开发中我们尝试过使用其他的几家大公司的AI平台上训练模型然后部署在本地GPU服务器进行高性能处理计算监测事件,这种方式的成本比较高,而且有很多授权条件限制,对于需要进行二次开发且成本受控追求高性价比的项目来说并不合适,浪费了很多的资源和精力。因此,采用了海康摄像头自带的芯片进行监测处理是不错的选择,虽然刚开始的时候识别准确率不是很高,但是随着素材的增加,模型识别准确率不断提高。本系统中主要利用AI和IoT的技术结合开发,具有识别准确率高、性价比高、可靠性高等特点。以上经验与教训,为同类项目的研究者提供参考。