基于视频序列的火焰识别模型研究
2022-07-01杨俊
杨 俊
(国能大渡河枕头坝发电有限公司,四川 乐山 614000)
枕头坝一级水电站为枕头坝公司两级堤坝式开发的第一级,坝址位于大沙坝到月儿坝河段,库区涉及金口河区、汉源县、甘洛县,距成都市约260 km。电站安装有4台180 MW的轴流转桨式水轮发电机组机,总装机容量720 MW。电站利用高效的图像处理算法对厂区内复杂图像、高效的彩色图像、视频动态目标的处理,建立基于视频序列的动态目标识别火焰识别模型,以适应水电复杂环境。
1 模型数据
由于在电站实际运行过程中,发生火焰事故的频率很低,同样存在数据不足的情况,但室外火焰的数据样本较多,基于此,收集室外的各种火焰数据集,并人工标注,利用深度神经网络模型学习火焰本身的特征,建模实现不限场景的(包括室内室外)火焰的识别。
2 火焰识别框架
枕头坝厂区真实火焰发生概率极小,但一旦发生必须检测到;厂区内人员走动,安全帽、偏红色衣服等容易造成检测干扰。针对枕头坝厂区实际的场景需求,火焰识别准确度需要非常高,不能漏检,同时误检也要很低,故采用简洁、速度快的PyTorch框架,利用背景建模、运动目标检测、图片分类的模型算法实现对枕头坝厂区内火焰识别。
枕头坝厂区火焰识别采用改进的PyTorch1.6.0版本,其包括一些新的api、用于性能改进的工具以及对基于分布式数据并行(DDP)和远程过程调用(RPC)的分布式更新,其中自动混合精度(AMP)训练本地支持更加稳定,AMP允许用户轻松启用自动混合精度训练,有更高性能,在核心gpu上的内存节省高达50%;使用torch.cuda.amp API,amp提供方便的混合精度方法,使有些操作如线性层和卷积比float16要快很多。改进的PyTorch版本能加快模型的训练和推断速度,减少识别任务中gpu的内存开销,提高了火焰识别的速度,满足了枕头坝厂区火焰识别的实时性要求。
为提高火焰识别模型的准确率和内存使用效率,改进深度网络MobileNetv2基于倒置残差结构[1]。普通模型架构使用标准卷积将空间和通道信息一起映射到下一层,参数和计算量会比较大;深度可分离卷积,将标准卷积拆分为深度卷积和逐点卷积,深度卷积负责逐通道的过滤空间信息,逐点卷积负责映射通道,将空间和通道分开;可分离线性瓶颈和扩展层的瓶颈是倒置残差结构,同样是将标准卷积拆分为深度卷积和逐点卷积,在逐点卷积后使用了接1×1卷积,该卷积使用线性变换,其作用是将输入映射回低维空间。采用倒置残差结构后,相比与之前的残差模块,中间的深度卷积较宽,除了开始的升维的1×1卷积,做shortcut的1×1卷积通道数较少,呈现的是倒立状态,故称为倒置残差。改进的倒置残差结构使得模型更加高效,更好的鲁棒性,识别速度更快,满足枕头坝厂区火焰识别的需求。
3 火焰识别模型建立
3.1 算法
考虑准确性、实时性以及实际情况,在发生火焰的时候,能第一时间准确地识别到火焰并报警,因此,模型不必保证识别到着火区域的全部,但需保证识别到至少一片着火区域。所以结合现有数据集的情况,采用基于超像素深度学习方法,即SLIC+分类网络实现对火焰的识别。该方法的优点是,不依靠时空信息即可实现实时检测,简化的网络结构,基于超像素定位识别火焰,准确率在90%以上。
3.1.1 SLIC算法
SLIC(sample linear iterative clustering),即简单线性迭代聚类,本质上是采用K均值聚类来减小空间维数,以提高效率[2]。利用图片的五个维度信息(颜色和平面空间)聚集像素,生成紧凑的几乎均匀的超像素。五个维度分别是CIELAB颜色空间的L,A,B值和像素坐标x,y。L代表亮度,值域为0(黑)到100(白);a表示从洋红色至绿色的范围,值域为-128(绿色)到128(品红);b表示从黄色至蓝色的范围,值域为-128(蓝色)到128(黄色)。之所以采用Lab颜色空间的原因是:Lab颜色空间接近人类生理视觉,它致力于感知均匀性,它的L分量密切匹配人类亮度感知;Lab描述的是颜色的显示方式,而不是设备(如显示器、打印机或数码相机)生成颜色所需的特定色料的数量,所以Lab被视为与设备无关的颜色模型;Lab色域宽阔,人的肉眼能感知的色彩,都能通过Lab模型表现出来。
3.1.2 SLIC具体实现步骤
1)初始化种子点(聚类中心)。按照设定的超像素个数,在图像内均匀的分配种子点。假设图片总共有N个像素点,预分割为K个相同尺寸的超像素,那么每个超像素的大小为N/K,则相邻种子点的距离(步长)近似为S=sqrt(N/K)。
2)在种子点的n×n邻域内重新选择种子点(一般取n=3)。具体方法为:计算该邻域内所有像素点的梯度值,将种子点移到该邻域内梯度最小的地方。这样做的目的是为了避免种子点落在梯度较大的轮廓边界上,以免影响后续聚类效果。
3)在每个种子点周围的邻域内为每个像素点分配类标签(即属于哪个聚类中心)。和标准的k-means在整张图中搜索不同,SLIC的搜索范围限制为2S×2S,可以加速算法收敛。
4)距离度量。对于每个搜索到的像素点,分别计算它和该种子点的距离,距离计算方法如下
式中:dlab为颜色距离;dxy为空间距离;S=sqrt(N/K);m为固定常数,用于调整超像素紧密度,取值范围[1,40],一般取10;Ds为最终距离。
5)迭代上述步骤直到误差收敛(每个像素点聚类中心不在发生变化)。
3.1.3 Inception V1-OnFire分类
经在多个主流分类模型如VGGNet、GoogLeNet、Inception系列等上训练和测试,结合模型的速度和准确性,最终采用优化型的Inception V1网络模型进行分类[3]。相较于标准Inception V1网络的多个Inception模块,我们将其优化减小为3个Inception模块,称为Inception V1-OnFire,使得在保证火焰分类识别准确率的基础上,大大减小了模型复杂度,提升了识别速度。基于以上SLIC+Inception V1-OnFire模型算法,利用标注的数据对模型进行训练和测试。
3.2 算法模型优化
采用基于视频流的火焰智能识别方法,首先对接入的视频流进行初筛,利用KNN背景建模实现运动目标检测,然后提取运动区域,最后利用深度学习建立的图片分类模型对运动区域进行图片分类,判断该区域是否是火焰[4]。具体检测流程及原理如下。
1)运动目标检测。利用KNN进行背景建模,并实现运动目标检测,其流程大概如下。①读取视频:实时拉取厂区内各个摄像头的视频流。②背景建模,计算前景掩码:利用KNN背景建模,KNN全称是K Nearest Neighbors,是一种分类算法。具体采用cv2的createBackgroundSubtractorKNN函数,通过设置训练的帧数,阴影检测等获得背景,然后利用背景获得当前图片的前景掩码。KNN训练的帧数可设置为20帧。③前景区域二值化:将非白色(0~244)的非前景区域(包含背景及阴影)均设为0,前景的白色(244~255)设置为255。④形态学处理:对二值化后的前景区域进行图像形态上的处理,通过腐蚀、膨胀操作,消除噪声。⑤获得轮廓坐标:对二值化后的图片,利用cv2.findContours获得矩形轮廓坐标,获得的矩形轮廓对象即为图片中的运动目标。⑥轮廓区域处理,生成矩阵:根据矩形轮廓坐标从原图中提取对应矩形区域,该区域是一张图片,为保证图片缩放不变型,先根据该图片的宽高对图片周围进行填充,使用像素值0即黑色进行填充,然后将其缩放为224×224大小尺寸,生成新的区域图片,图片以矩阵形式存储,用于后续深度学习火焰分类。
2)火焰分类模型。提取的运动目标区域,我们是知道其在原图中的位置的,对提取的目标区域做图像处理缩放后,输入火焰分类模型,判断其是否为火焰。分类模型采用深度学习的方法,此方法效果好的原因是:输入的运动区域是原图中的一部分,尺寸较小,不需要专门水电厂内的火焰数据集,任何环境下的火焰数据集都有效,因此数据集更容易收集,同时相较于传统基于特征的火焰分类方法,深度学习能更好的提取火焰特征,识别精度高。采用RestNet50模型进行火焰分类检测,RestNet是一种残差网络,通过子网络的堆叠可以构成一个很深的网络,简化的子网络结构如图1所示。
图1 子网络结构图
存在误检和较多漏检,比如人员的走动(穿带红色的衣服或安全帽)会识别为火焰。
火焰分类模型采用MobileNetV2网络,相较于上版本的RestNet50网络,MobileNetV2检测速度比ResNet50网络的速度提升一倍,实时性效果更好。MobileNetv2架构是基于倒置残差结构(inverted residual structure),原本的残差结构的主分支是有三个卷积,两个逐点卷积通道数较多,而倒置的残差结构刚好相反,中间的卷积通道数(依旧使用深度分离卷积结构)较多,旁边的较小。该网络是一种轻量级网络,采用了h-swish(hard version of swish)激活函数,能有效提高网络的精度[5],其公式如下:
搭建MobileNetV3网络进行训练,其损失函数采用交叉熵损失函数,公式如下:
式中:p表示真实值,是one-hot形式;q是预测值并且q是经过softmax后的值。
添加训练集样本。添加人员走动、人员戴安全帽的图片作为负样本。同样会存在一些误检,红色指示灯的闪烁有可能检测为火焰。
继续增加人员走动、人员戴安全帽、红色指示灯等负样本数据集;增加火焰的正样本数据集;采用数据增强算法,如几何变换、翻转旋转、噪声注入等方法扩展数据集,提升模型泛化能力,提高模型检测精度。
4 结 语
枕头坝厂区火焰识别模型采用面向视频序列的动态目标识别技术。由于厂区环境复杂,光照、亮度变化、人员走动等影响较大,同时异物多种多样,如果仅仅基于单张图片进行目标检测,模型会极大的依赖厂区异物样本,在异物样本有限且多样的情况下,考虑基于视频序列的动态目标识别方法,增加采用LSTM网络模块,提取并记录视频帧前后时序特征,完成对异物的识别。检测阶段模型共收集火焰19汇620张图片,非火焰41 060张图片。模型指标:精确率达到96%,召回率为93%,准确率94%。