广东电网有限责任公司湛江供电局524000
摘要:针对疫情形势下对营业厅的防疫监控需求,介绍了人工智能在防疫监控中的应用。采用基于深度神经网络(DNN)的人工智能算法作为智能判断手段。重点阐述了设计思路及深度神经网络设计及改进。经过实验测试,所设计的深度神经网络推理成功率达到实用要求,且配合相关监控可满足营业厅防疫要求,对缓解监控人员压力有一定帮助。
0 引言
在国家的集中统一领导下,全国上下一盘棋,万众一心齐抗疫。随着疫情的不断发展变化,给传统防疫提出了新的挑战。面对营业厅人群密集场所严峻的防疫形式,需要引入数字化手段,采用更先进的技术手段,才能更好满足防疫的技术要求。
1 深度神经网络概述
深度神经网络(DNN)可以理解为具有多层隐藏层的神经网络,又被称为深度前馈网络(DFN),多层感知机(Multi-Layer perceptron,MLP)[1]。在DNN中,输入层和输出层之间含有多个隐藏层的人工神经网络(ANN)。人工神经网络是由大量处理单元(神经元)互联组成,神经元则基于感知机加上非线性激活函数形成,由此增强模型的非线性能力。如图1-1所示为神经元模型
图1-1 神经元模型
神经网络基于神经元扩展,为了增强模型的表达加入多层隐藏层;输出层神经元增多便于模型的灵活;激活函数进行了扩展,提高模型表达能力,使用常用激活函数。
图1-3 神经网络基本结构
按不同层的位置划分,深度神经网络(DNN)内部的神经网络层划分为:输入层,隐藏层,输出层,一般第一层为输入层,最后为输出层,中间的层为隐藏层。因DNN层数多参数多,因此需对线性关系系数w和偏倚b进行定义。
1.1DNN前向传播算法
假设选择的激活函数未,隐藏层和输出层的输出值为a。
则第二层及的输出为:
式(1-1)
第三层的输出为:
式(1-2)
根据式(1-1)及式(1-2)归纳可得,假设第层有m个神经元,则对于第
层的第j个神经元的输出
有:
式(1-3)
代数式表示较为繁琐,采用矩阵法较为简洁,假设第层共有n个神经元,则第
层的线性系数w组成了一个n x m的矩阵
,第
层的偏倚b组成了一个n x 1的向量
,第
层的输出a组成了一个m x 1的向量
,第
层的未激活前线性输出z组成了一个n x 1的向量
,第
层的输出a组成了一个n x 1的向量
,因此将上述式(1-3)改为矩阵法表示为:
式(1-4)
1.2DNN反向传播算法[2]
使用前向传播计算训练样本的输出,使用损失函数,来度量训练样本计算出的输出和真实的训练样本标签之间的损失。DNN的反向传播算法(Back Propagation,BP)通过对损失函数用梯度下降法进行迭代优化求极小值,找到合适的隐藏层和输出层对应的线性系数矩阵W,偏倚向量b,让所有的训练样本输入计算出的输出尽可能的等于或接近样本标签。使用均方差进行度量损失推导。即对于每个样本,期望最小化下式:
式(1-5)
其中,和
为特征维度为
的向量,而
为S的L2范数。用梯度下降法迭代求解每一层的W,b。
首先是输出层第L层。输出层的W,b满足下式:
式(1-6)
这样对于输出层的参数,损失函数变为:
式(1-7)
求解W,b的梯度为:
式(1-8)
1.3 DNN参数优化算法
梯度下降[3](gradient descent,GD)算法是深度学习参数优化算法中最常用及最重要的算法之一,即根据损失使用链式法则计算模型参数的梯度,以梯度负方向作为参数学习方向并最终实现参数更新。梯度下降算法可细分为梯度下降(gradient descent,GD);随机梯度下降[4](stochastic gradient descent,SGD);批梯度下降[5](mini-batch gradient descent,BGD)。三种算法仅在数据处理上有所区别:GD是根据整个数据集的损失作反向传播(BP),SGD是根据一个样本的损失进行反向传播,BGD是使用小批量数据集的损失进行反向传播。同时因为深度学习模型里普通的梯度下降算法容易陷入不利的参数优化状态,如局部最小值、高原、鞍点、平坦区域等,因此研究员提出了很多优秀的参数优化算法,以更好地适用于深度学习模型参数的优化情况。
1.3.1.1 RMSProp算法[7]
RMSProp算法为改善AdaGrad 算法[8]元素的学习率在迭代过程中降低(或不变),在迭代后期由于学习率过小,可能较难找到解而做了一些修改。相比较AdaGrad 算法,RMSProp算法将梯度按元素平方做指数加权移动平均,即给定超参数0≤γ<1,RMSProp 算法在时间步 t > 0 计算
式(1-12)
RMSProp算法将目标函数自变量中每个元素的学习率通过按元素运算重新调整,然后更新自变量,是和AdaGrad算法一样的梯度下降
式(1-13)
式18中,η是学习率;ϵ为维持数值稳定性而添加的常数,如10-6
因为RMSProp算法的状态变量是对平方项
的指数加权移动平均,所以可以看作是最近1/(1−γ))个时间步的小批量随机梯度平方项的加权平均。如此一来,自变量每个元素的学习率在迭代过程中就不再一直降低(或不变),因此可以加快模型的收敛。
2 摄像机光学畸变纠正
相机的成像过程实质上是坐标系的转换。空间中的点由 “世界坐标系” 转换到 “像机坐标系”,然后投影到成像平面 ( 图像物理坐标系 ) ,最后将成像平面上的数据转换到图像像素坐标系。但是由于透镜制造精度及组装工艺的偏差会造成畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。
2.1 径向畸变
径向畸变是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,径向畸变主要包括桶形畸变和枕形畸变两种。成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式为:
式(2-1)
式(2-1)里(x0,y0)是畸变点在成像仪上的原始位置,(x,y)是畸变较真后新的位置。
2.2 切向畸变
切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述,如式(2-2)所示:
式(2-2)
2.3 畸变矫正
首先准备标定图片,使用标定板在不同位置、不同角度、不同姿态下拍摄,最少需要3张,10~20张为宜。标定板需要是黑白相间的矩形构成的棋盘图,制作精度要求较高,对所拍摄的标定图片,使用findChessboardCorners函数提取角点信息,接着使用cornerSubPix函数或find4QuadCornerSubpix函数进一步提取亚像素角点信息,随后使用calibrateCamera函数进行相机标定,计算相机内参和外参系数,使用projectPoints函数通过摄像机内外参数对空间的三维点进行重新投影计算,得到空间三维点在图像上新的投影点坐标,计算投影坐标和亚像素角点坐标之间的偏差,利用求得的相机的内参和外参数据,对图像进行畸变的矫正,有两种方法可以使用方法一:使用initUndistortRectifyMap和remap两个函数配合实现。initUndistortRectifyMap用来计算畸变映射,remap把求得的映射应用到图像上。方法二:使用undistort函数实现。
3深度神经网络模型架构设计
深度神经网络推理流程如图3-1所示,首先对营业厅监控画面进行处理获取其RTMP视频流,接着对RTMP视频流进行切片处理,通过设定的标定数据对其进行光学畸变矫正,随后将矫正后的画面通过深度神经网络模型进行推理,随后根据推理结果进行判断其是否满足相关防疫要求。基于《柳叶刀》杂志研究表明,佩戴口罩及保持足够的两米以上的距离可以显著降低感染风险。[10]
图3-1 监控推理流程
深度神经网络模型架构如图3-2所示,首先在输入端对输入数据进行数据增强及自适应描框缩放操作,随后在主干网络层对前一层传入数据进行特征提取及下采样,之后将处理后的数据传入Neck网络层对其进行空间金字塔池化(SPP[11])特征金字塔(FPN[12])和金字塔注意力处理(PANet[13]),最后在输出端对数据进行分类及回归处理。
图3-2 深度神经网络模型架构
4深度神经网络图像识别设计
图像识别可以理解为图像的模式识别。模式识别的目的是研究能自动化理解大量信息的智能化系统。
4.1图像识别流程设计
首先是获取图像信息,即将等待识别对象
字化;随后是数据增强,例如进行模糊增强、添加高斯噪声等;然后是数据处理,将图像长度归一化;然后将其传入神经网络进行训练及评估;最后是输出结果。
4.2数据增强及数据处理
数据量的多寡、质量的好坏,直接决定着深度学习模型的训练效果,但数据的获取是非常困难的,且很难获得足够量的数据,因此一般将图像数据进行增强以扩大数据量。
4.2.1 图片缩放
缩放可以将图像调整至不同的大小,这样既可以增加图片的数量也可以防止图片国大导致计算量过大。
4.2.2增加高斯噪声
图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。通常是指图片上出现一些随机的、离散的、孤立的像素点,这些像素点在视觉上通常与它们相邻的像素明显不同,例如黑区域中的白点、白区域中的黑点等。
还有诸如模糊增强、hsv增强、等数据增强方法不一一阐述,实际应用中通过多种增强方法组合使用,可以快速扩大数据量提高模型质量。同时在传入神经网络前将图片长度进行归一化处理,可以消除量纲对最终结果的影响,使不同变量具有可比性。
5 实验过程及验证结果
5.1实验环境
5.1.1 硬件环境
本文是基于深度神经网络设计的营业厅防疫监控模型,深度神经网路模型训和推断计算量较大,因此使用配备有图形处理器(GPU)的平台;其中CPU为AMD Ryzen 7 5800X @ 3.70GHz,共有8个物理核,16线程;内存为32GB DDR4 3800MHz;显卡为NVIDIA GeForce RTX 3080 Ti,显存为12GB, FP16算力为136 DL TFLOPS(Deep Learning浮点性能,TFLOPS=每秒一万亿次);硬盘为3.2TB PCIE3.0 SSD盘和1TB PCIE4.0 SSD盘。
5.1.2 软件环境
本文实验使用的软件环境如下所示:操作系统选用的是Windows 10 v1904;Python版本为3.7.12;所使用的深度神经网络的实现是基于Pytorch框架的,版本为1.10.1。开发环境使用Jetbrains系列的Pycharm。所使用的数据集为网络上的开源数据集。
5.2性能测试
本文通过使用精确率(Precision)、召回率(Recall)、F1值(F1 Score)、mAP(所有类别的平均AP)作为评估指标,其中TP表示将正类判定为正类的数量、FP表示将负类判定为正类的数量、TN表示将负类判定为负类的数量、FN表示将正类判定为负类的数量。F1值是精确率和召回率的调回均值,只有当精确率和召回率都较高时F1值才会比较高;AP为召回率在【0-1】范围内的平均精确率,mAP@0.5为当IoU=0.5时所有类别的AP平均,mAP@0.5:0.95为在不同IoU阈值(从0.5到0.95,步长0.05)。
5.2.1 模型的初步训练
运行训练程序后,可在Pytorch上得到深度神经网络训练结果:可见,经过300次训练后,网络误差基本达到要求,其结果如图5-2所示
图5-2 300次训练后深度神经网络mAP、precision(精确率)、recall(召回率)
经过训练完成后,其精确率和召回率初步达成要求,基本可以完成对图像识别及提取有用信息。
6 结论
营业厅作为封闭且人员密集场所,存在较大的疫情防控压力。本文以基于深度神经网络设计为例,详细分析及实验测试了深度神经网络对营业厅防疫监控的效果,验证结果良好,对营业厅防疫监控具有一定的使用价值。
参考文献
[1] M.W, Gardner, and, et al. Artificial neural networks (the multilayer perceptron)—a review of applications in the atmospheric sciences[J]. Atmospheric Environment, 1998.
[2]DE Rumelhart, Hinton G E , Williams R J . Learning Representations by Back Propagating Errors[J]. Nature, 1986, 323(6088):533-536.
[3]Bengio, Y, Simard, et al. Learning long-term dependencies with gradient descent is difficult[J]. Neural Networks IEEE Transactions on, 1994.
[4]Bottou L . Large-Scale Machine Learning with Stochastic Gradient Descent[J]. Physica-Verlag HD, 2010.
[5]Hinton G, Srivastava N, Swersky K. Neural networks for machine learning lecture 6a overview of mini-batch gradient descent[J]. Cited on, 2012, 14(8): 2.
[6]Ning Q . Qian, N.: On the momentum term in gradient descent learning algorithms. Neural Netw. 12(1), 145-151[J]. Neural Networks the Official Journal of the International Neural Network Society, 1999, 12(1):145-151.