1. 引言
党的二十大报告坚持系统观念,对国家安全现代化进行了体系化设计,提出强化风险监测预警体系、重点领域安全保障体系。电厂作为电力系统的源头,承担电力生产的重要责任,其对生产区域的安全等级要求极高。电厂的生产区域较为开阔、设备复杂、一旦出现火灾是很难被工作人员及时发现,从而将会对安全生产造成重大的影响。因此采取有效的措施,对捞渣机的刮板卡涩、设备漏油等易发生火灾区域进行快速准确检测并预警,这对于保障电力生产安全具有重大的意义。近年来为保障电厂的厂区生产安全,电厂所有重要设备及场所安装数字网络摄像机,采用集中监控管理平台,对视频和用户进行统一管控,可进行预览、回放、下载等操作,配置大屏幕完成解码显示、拼接等功能,该视频监控系统通过人员监控和录像来实现安全防护。目前上述视频监控系统不能主动有效保障生产区的安全,尤其是监控点过多的时候,监控人员很难保证二十四小时都能准确高效地监控所有监控场景进行监控异常检测 [1] [2] [3] 。视频分析技术 [4] [5] 可以有效解决此类问题,该技术是利用摄像机拍摄到的一系列图像,对其进行位置识别并对目标的行为进行分析、判断,以便在出现异常时及时反馈给用户。在原有监控系统的基础上,开发基于视频分析的电厂关键设备检测技术,对厂区内重要设备进行实时的异常情况检测,此项技术的投入研发将显著提高电厂内现有监控系统的智能化水平并保障厂区的生产安全,有效避免厂区重要设备的损坏给电厂造成的经济损失。
视频分析需要进行视频异常帧获取的相关工作,当前技术环境下主要五种提取方法对异常帧进行获取,包括基于镜头边界的异常帧提取算法 [6] [7] [8] ,基于运动分析的异常帧提取算法 [9] [10] ,基于视频帧聚类的异常帧提取算法 [11] [12] ,基于压缩域的异常帧提取算法 [13] [14] ,基于视频内容分析的异常帧提取算法 [15] [16] [17] 。
基于镜头边界的异常帧提取算法只适用于已经进行预处理的具有镜头切换的视频;基于运动分析的异常帧提取算法需要依赖物体局部特征,鲁棒性较差;基于视频帧聚类的异常帧提取算法与基于压缩域的异常帧提取算法在该监控系统中未曾涉及。因此本文提出一种基于视频内容分析的帧间差分 [18] [19] [20] [21] 方法进行异常帧提取,该方法通过监控视频特性采用帧间差分算法并设置合理的阈值来获取异常帧。
本文主要贡献如下。
(1) 在基于视频内容分析的异常帧提取算法上采用帧间差分的方式进行异常帧提取。旨在提高异常帧提取的准确度,对视频监控异常检测具有重要意义。
(2) 提取异常帧之后利用相关技术将监控视频中的异常帧片段进行前端实时显示。以图片的格式能直观观察出异常之处,进而进行异常处理。所提技术可以对异常区域进行及时有效地分析处理,从而将企业损失降至最低,同时减少人工成本、提高企业效益。
(3) 在厂区监控视频上进行验证研究,分别从方法对比、方式对比、阈值选取、两帧选取四方面进行比较分析。实验结果表明, 本文方法相比其他方法在异常帧提取的准确度表现上最佳,该视频流提取异常帧最为合适的设置为采用三帧间差分方法、阈值0.6。
2. 方法流程
电厂厂区监控异常检测方法主要分为前端和后端两个部分。其中,后端部分的流程框架如图1,它主要是给定视频的预处理,具体步骤为:
(1) 提取固定时间视频流。
(2) 提取所有视频帧。
(3) 异常帧提取。
(4) 异常帧base64编码并显示。
前端部分主要是从前端发送请求获取后端服务器的数据并将数据进行base64解码并传送至前端服务器上进行展示。
Figure 1. Framework flow chart of the backend
图1. 后端的框架流程图
3. 视频处理
为了进行异常检测需要对视频进行预处理。主要是通过将电厂监控中视频流进行视频帧的提取,提取出所有的视频帧之后进行异常检测获取异常帧。
3.1. 视频流获取
为保证电厂厂区监控中视频能每隔固定时间进行异常检测及显示,可在从监控中读取视频流时设置时间参数进行固定时间读取。该部分涉及到视频流实时固定时间读取算法。它是从监控摄像头中实时读取视频流信息,根据固定时间长度将视频流信息进行保存。
3.2. 异常帧捕捉
将视频文件从监控中提取出来之后进行异常检测内容。该部分涉及到异常帧的提取方法,利用的是帧间差分的异常帧提取算法。该算法是一种通过对视频所有帧中连续两帧图像做差分计算从而获取运动目标的方法。当监控场景中出现异常目标运动时,相邻两帧图像之间会出现较为明显的差别,两帧相减求得图像对应位置像素值差的绝对值并判断其是否大于某一阈值,进而分析视频或图像序列的物体运动特性。帧间差分法可以通过三种方法进行对视频异常帧的提取。
(1) 使用差分强度的顺序对视频异常帧提取:对所有视频帧按照平均帧间差分强度进行排序,选择平均帧间差分强度最高的若干张图片作为视频异常帧。
(2) 使用差分强度阈值对视频异常帧提取:选择平均帧间差分强度高于预设阈值的帧作为视频的异常帧。
(3) 使用局部最大值对视频异常帧提取:选择具有平均帧间差分强度局部最大值的帧作为视频的异常帧。
设帧间差分算法所提取视频帧中第n帧和第
帧的视频图像为
和
,两帧对应像素点的值记为
和
,将两帧图像对应像素点的值进行相减并取其绝对值得到差分图像
如式(1):
(1)
其中
表示离散图像的坐标,对差分之后的图像利用选取的阈值T来进行二值化处理,判断图像中的各个像素点是前景像素点还是背景点,当差分图像中某一像素值大于给定的阈值认为该像素点是前景像素,反之则认为是背景像素,从而提取到运动区的图像
如式(2):
(2)
最后对二值化的图像进行连通性分析和数学形态学滤波,当某一连通的区域的面积大于给定的阈值,则认为检测到的目标并把该区域作为目标所在的运动区域。
其中需要选择合适的阈值减少大量噪声的引入,因此提出一个运用当前图像灰度值确定动态阈值的方法:求出图像中的最小和最大灰度值,取其平均值为初始阈值,记为T。根据初始阈值将图像分割成目标和背景两部分,求出两部分的平均灰度值
、
和两部分的灰度概率
、
如式(3)~(6):
(3)
(4)
(5)
(6)
求出分割阈值T如式(7):
(7)
本实验使用差分强度阈值对视频异常帧提取。选用局部最大值的方法进行帧间差分的异常帧提取,提取结果均匀分散在视频中不利于异常帧的捕捉。采用差分强度顺序的方法进行异常帧提取会出现大量冗余帧,因此采用差分强度阈值对视频异常帧提取最为合适,提取的精确度较高。利用帧间差分提取异常帧算法流程如图2。
Figure 2. Flowchart of anomalous frame extraction algorithm using inter-frame difference
图2. 利用帧间差分提取异常帧算法流程图
3.3. 异常帧编码
处理异常检测之后得到异常帧并将该帧传入前端进行显示。传统技术直接将图片保存至本地或内存中,以便前端直接读取。该类方法具有耗时、维护困难、硬盘内存所需容量大的缺点。为了解决该类问题,利用前后端分离的方式进行显示,将前后端独立开易于维护,节省硬盘空间大小。因此需要将图片信息先传入至后端服务器上,前端来请求数据进行显示。由于图片尺寸大小未知,有超过服务器最大可接收内存的可能性,故本研究提出利用Base64图片信息编码算法,将异常帧图片转码成字符串信息发送至后端服务器上。该算法的主要思想是利用Base64编码将图片内容信息通过一种基于64个字符来进行表示的方式,即描述为一种不易被人直接识别的形式来代替图片地址。
4. 解码显示
前端发送请求至后端服务器上获取异常帧的信息显示,在该过程中由于在后端部分中已将异常帧信息进行编码操作,前端请求过来的数据为字符串就需要利用Base64图片信息解码算法,该算法主要思想是利用Base64解码将一段字符串信息通过一系列变化得到图片信息。此外,前端使用的是Vue,在进行Base64图片信息解码操作时与后端进行Base64图片信息编码操作部分的代码编写有所不同。
5. 实验结果与分析
5.1. 实验设置
5.1.1. 环境设置
实验使用的CPU是 Intel(R) Core(TM) i5-8300H CPU,内存是8 GB。后端算法均由Python编写,开发的环境为PyCharm2020,前端算法为Vue框架,开发环境为Visual Studio Code2020。实验使用的视频流为一段19 秒的1.99 MB的厂区监控视频,视频来源地址为:https://www.bilibili.com/video/BV1jh41147Qi/?spm_id_from=333.337
5.1.2. 评价方法
实验过程中,对于每种算法异常帧提取准确率的评估是由肉眼观察所得。正常情况下,人的肉眼能观察出视频帧的异常,再加上系统设定的阈值即可完成每种算法提取异常帧的准确度检测。
5.1.3. 实验对比
实验从四个对比角度出发,通过多次实验比较分析进行说明所提出的利用帧间差分的阈值方法提取异常帧比其他方法的效果好。
(1) 提取异常帧算法对比
视频异常处理在电厂监控工作中十分重要,其主要用于电厂局部发生异常紧急情况的预警处理。目前对于视频异常检测及处理也有许多解决方案。大部分电厂需要工作人员进行时时盯着屏幕观察是否出现异常情况,一部分企业会采用一些AV库自带算法进行视频异常的检测及处理,小部分公司为追求企业经济效益会直接利用技术人员所提出算法进行异常检测。故将三种算法进行对比得出最佳算法。
(2) 帧间差分内部方法对比
帧间差分法可以通过三种方法进行对视频异常帧的提取。
① 使用差分强度顺序对视频异常帧提取
② 使用差分强度阈值对视频异常帧提取
③ 使用局部最大值对视频异常帧提取
不同的方法对于异常帧提取具有不同的效果,故将三种方法进行对比实验得出最佳方法。
(3) 阈值选取对比
阈值作为一个可变参考量,在选取不同阈值时,对于异常帧提取的帧数效果具有显著变化,需要进行阈值的合理选择才能精确把握该段视频是否异常,因此将不同阈值进行对比实验得到阈值最佳值。对比参数设置:阈值0.6、0.65、0.7、0.75、0.8。
(4) 两帧选取对比
帧间差分值作为判断两帧的相似程度,两帧的选取极为重要,因此将两帧的选取分为二帧间差分(选取相邻两帧)、三帧间差分(两帧选取隔一个帧)、五帧间差分(两帧选取隔三个帧)、十帧间差分(两帧选取隔八个帧)四种方法进行对比实验得到两帧选取最佳值。
5.2. 实验结果
5.2.1. 提取异常帧算法对比
各种算法进行帧提取总时间和进行异常帧提取效果表如表1,各种算法提取时间对比图如图3,从各种算法时间对比图来看AV库算法耗时最少,但其牺牲准确度;利用帧间差分提取异常帧算法进行异常帧提取牺牲精确度从而使异常帧除去冗余,对该电厂项目具有重要帮助意义;技术人员提出的相关算法费时费力且相比较于前两种算法的精确度并不出众。因此帧间差分算法在该项目中是最佳提取异常帧的方式。
Table 1. Comparison of algorithm effects
表1. 算法效果对比表
Figure 3. Time comparison of each algorithm
图3. 各算法时间对比图
采取人工手段进行视频异常处理的过程中将消耗大量人力物力,费用也呈现持续增加的趋势,该方法对于一个电厂效益来说是不合理的解决措施。其次利用技术人员提出的相关算法进行视频异常的检测时,本身进行预处理时间较长并且异常帧冗余成分(将不是异常帧的图片信息进行输出)较多,增加人工处理难度的同时精确度也不高。采用AV库自带算法视频异常的检测时,在牺牲精确度的前提下提高视频异常处理速度但也有冗余成分从而难以把握其精确程度。经过相关实验对比发现,利用帧间差分算法方法所提取的异常帧精确度高,没有多余的冗余视频异常错误帧,提取效果较好,在时间允许的前提下有效提高视频异常帧提取精确度,有利于工作人员快速查找异常原因,显著提升电厂经济效益。
5.2.2. 帧间差分内部方法对比
本次对比实验结果如表2,实验时间对比如图4。利用局部最大值效果最差,其提取异常帧时间为2.79254s,提取总时间也最耗时;利用差分强度顺序进行提取前50张差异最大的帧,误判帧占总帧数的70%;利用设置阈值进行异常帧提取的时间为2.42151s,同时提取总时间也效果最好,提取到的异常帧的效果最好,提取到的异常帧在整个监控视频流中更具有异常性。
Table 2. Comparison of inter-frame differential internal methods
表2. 算法效果对比表
Figure 4. Time comparison of inter-frame differential internal methods
图4. 帧间差分内部方法时间对比图
5.2.3. 阈值选取对比
本次对比实验结果如图5,在阈值为0.6时二帧间差分方法得到的异常帧数为22张,肉眼看到的异常帧数小于算法得到的异常帧数,说明有多余帧被误判为异常帧;在利用三帧间差分、五帧间差分、十帧间差分方法得到的异常帧数分别为7张、4张、2张。四者对比得出的异常帧帧数准确度排序依次为三帧间差分、二帧间差分、五帧间差分、十帧间差分。阈值在异常帧提取时作为一个关键变量需要进行准确调试,否则将会影响异常帧的提取效果,进而导致相关异常帧未识别出来,发生重大损失。根据对比实验得出在本段视频中在二帧差分方法的情况下阈值选取在0.8较为合适;在三帧差分方法的情况下阈值选取在0.6较为合适;在五、十帧差分方法的情况下阈值选取在0.6以下较为合适。
Figure 5. Comparison chart of threshold selection
图5. 阈值选取对比图
5.2.4. 两帧选取对比
本次对比实验结果如图6,四种方法的差异值绘出的曲线最为平滑的是三帧间差分,其次依次是二帧间差分、五帧间差分、十帧间差分。根据实验得出四种帧间差分方法在相同阈值的情况下,三帧间差分方法得到的异常帧更为准确。五、十帧间差分曲线变化剧烈,在相隔三帧、八帧之后进行差分计算会部分细节缺失,导致捕捉不到异常帧。二帧间差分方法,在设置阈值的情况下某一段帧数之间发生剧烈变化时,异常帧更倾向于提取某一段帧数作为异常帧,忽略了所有帧中变化比较微小的异常帧。三帧间差分方法将异常帧与平常帧进行很好的区分,在阈值选取上比较简单,因此三帧间差分方法最为合适。
Figure 6. Comparison chart of two frame selection
图6. 两帧选取对比图
6. 案例研究
根据以上四个实验可以得出该段视频提取异常帧最为合适的设置为采用三帧间差分方法、阈值0.6。运行系统得出异常帧如图7,本段视频提取出570张视频帧通过该方法捕捉出7张异常帧视频并通过base64编码转化成字符串展示在后端如图8,前端向后端进行请求得到字符串数据并通过base64解码进行展示,由于显示的图片信息与图7异常帧一致,因此只展示部分信息如图9。
Figure 9. Front-end page displaying image data
图9. 前端页面显示图片数据
7. 总结
本文在电厂中对于视频监控的异常检测的功能进行具体化,综合考虑各方面成本,结合现代技术与传统方法,提出利用帧间差分提取异常帧算法提取异常帧并将异常帧进行base64编解码实时在前端页面显示。利用某段视频进行系统测试,验证该方法具有可行性及有效性等特点。同时该系统的实现为进一步实现电厂监控视频异常检测作铺垫,为后续工作提供可靠的理论基础。该方法真正应用至电厂监控中将有效提高视频异常检测速度,实现数据的快速管理、降低人工管理成本。
基金项目
国家自然科学基金项目(用户视角下的异质信息网络相似度搜索 62002225);
上海市自然科学基金项目(面向复杂视角的异质网络相似度连接查询21ZR1445400)。
NOTES
*通讯作者。