栗俊杰, 毛鹏军, 方 骞, 申礼瑞, 李鹏举, 耿 乾
(河南科技大学机电工程学院, 洛阳 471003)
无人机作为新型消防装备,在日益繁重、情况复杂多变的灭火救援任务中正发挥着极其重要的作用,其功能的扩展与技术的更新直接影响消防灭火的效率。现有无人机扑救火灾方式之一是通过机载喷头向火点喷射灭火剂,而喷头对火点定向的过程完全依靠人为通过视频监控不断尝试和调整,这一过程既耗时耗力又造成灭火喷剂的大量浪费。为弥补这一不足,进一步提高无人机智能化程度,选择非图形处理器 (graphics processing unit,GPU)设备实现火点检测与精准定向任务对提高无人机消防救援智能化程度具有非常重要的意义。
近年来,借助卷积神经网络进行图像分类的精度超过人工分类,将其作为特征提取层的目标检测算法在检测精度和速度上取得巨大提升,如R-CNN(regions with convolutional neutral network)系列[1-3]、SSD[4](single shot multibox detector)、YOLO[5-7](you only look once)在火点检测领域取得较好的表现。Wu等[1]创建了一个森林火灾基准,使用R-CNN、YOLO和SSD来检测森林火灾。他们发现SSD具有较好的实时性、较高的检测精度和早期检测能力。同时,对YOLO的结构进行调整,提出一种新的结构tiny-yolo-voc,实验证明提高了火灾检测的正确率。Kim等[2]使用Fast R-CNN根据其空间特征检测火与非火区域。另外,通过LSTM(long short-term memory)来预测火灾报警的可靠性。Li等[3]为提高图像火灾检测技术性能,使用Fast R-CNN、SSD和YOLO与现有算法比较,发现基于卷积神经网络(convolutional neutral network,CNN)的火灾检测算法精度明显优于其他算法,其中YOLO检测速度最快,鲁棒性最强。Shen等[6]使用简化版本的YOLOv1网络对火点进行检测和定位,该算法检测速度较快,但易受到灯光光线的影响且边界框不能框选出火点确切区域。以上方法中YOLO和R-CNN已成功地在检测对象方面取得了不错的结果,但由于视频监控平台的局限性,使得它们无法在具有实时性受限的消防环境中工作。
在灭火过程中,需要用喷剂准确到达着火点位置,以保证快速灭火。现有喷剂灭火主要是基于隔绝氧气防复燃原理,喷剂下落过程会因空气阻力形成速度梯度造成水体受力不均而扩散,同时也易受到风场影响。通过人工实时调整喷射角度,不仅精准度低而且造成喷剂的浪费。在精准灭火方面,中外科研人员提出不同的研究方法。Lee等[8]提出了一种采用计算机视觉技术和卷积神经网络(CNN)实现在视图中准确地跟踪对象的方法。同时,利用混合运动学来实现喷头的精确控制。伍毅等[9]通过建立喷头雾场特性实验平台来研究高压细水雾喷头流量系数与雾场特性的关系,实验结果表明,随着流量系数在一定范围内变化,喷头的雾场强度、液滴粒径分布和雾化角度均有明显增加,灭火能力也更强。Zhang等[10]建立了一个反向传播 (back propagation,BP)神经网络模型,将喷口特性作为模型输入,出水点坐标作为模型输出。模型能够准确预测出水点,从而准确地确定火点位置并调整喷头。Zhu等[11]基于运动粒子半隐式(moving-particle semi-implicit, MPS) 方法建立了水射流轨迹模型预测火点位置。实验发现空气阻力是产生偏差的主要原因,采用二值函数插值补偿方法进行误差补偿,利用未使用的数据验证了修正后模型的准确性。上述研究中,应用在无人机这一特定设备上,可行性和适用性依然是个难题。
现采用新一代智能AI芯片,使用YOLOv2-Tiny[12-13]检测框架,模型部署到K210上可实现较为理想的目标检测效果,最后通过PID控制来调节火点框选中心与视频中心的偏差值来控制喷头定向火点并锁定。同时,所有图像处理和喷头控制决策都在移动设备上进行,以期进一步提高无人机消防的部署速度与灭火效率。
YOLO[14-15]是一种基于CNN的对象检测框架,将对象检测任务作为一个统一的回归问题。如图1所示,YOLOv2[16]神经网络共有23个卷积层,目标是在强大的硬件平台上进行高精度的目标检测,而YOLOv2的简化版YOLOv2-Tiny只有9个卷积层,适用于移动和嵌入式设备。YOLOv2和YOLOv2-Tiny都支持多分辨率输入,通过适当设置输入图像的分辨率,提供了一种方便的方法来平衡计算负载和检测精度。
图1 YOLOv2与YOLOv2-Tiny对象检测框架Fig.1 YOLOv2 and YOLOv2-Tiny object detection framework
YOLOv2-Tiny火点检测算法由如下几步组成。
(1)对任意分辨率火点图片按原图长(w)、宽(h)比缩放至224×224。
(2)把步骤(1)得到的图像网格化,把图像划分成7×7大小的网格,如图2(a)所示。
(3)滑动窗口遍历所有网格并且每个网格预测5个候选框,每个候选框包含30维特征(共5×30=150维),如图2(b)所示。
图2 YOLOv2-Tiny算法流程Fig.2 Algorithm flow of YOLOv2-Tiny
(4)对含有火点网格的候选框与真实框(黄色框)进行交并比计算,把置信度低于设定阈值的略去,高于设定阈值的使用非极大值抑制筛选得到最终的边界框,如图2(c)、图2(d)所示。
本文中保留YOLOv2-Tiny提出的特征提取层,依据所要检测的类别数量,修改最后一个1×1的卷积层。实验所要检测的类别数量为1,最终的向量深度为30。YOLOv2-Tiny具体结构组成如表1所示。为获得高的交并比,进一步提高锚框定位的准确性,使用K-Means聚类方法对自制训练集Ground truth聚类分析,以解决锚框定位不准确性问题,最终通过聚类得到5个anchor boxes为(0.67,0.81)、(1.27,1.81)、(1.71,3.71)、(3.07,2.34)、(3.42,4.62)。
表1 YOLOv2-Tiny具体结构组成Table 1 The specific structure of YOLOv2-Tiny
二维旋转喷头如图3所示,结构主要是由两个舵机组成,1号舵机用于控制喷头上下移动,2号舵机用于左右移动,两舵机调节范围均为180°,可实现两个方向的自由同步调节。喷头定向火点如图4所示。使用ov2640摄像头获取图像,知识处理单元(knowledge processing unit,KPU)对视频中每一帧图像进行YOLOv2-Tiny检测,获得图像中火点目标位置后,将火点框选中心与图像中心之间距离参数传递给PID进程。PID控制喷头实时移动保持火点框选中心在视频中央,以实现定向火点。
图3 二维旋转喷头Fig.3 Two dimensional rotating nozzle
图4 PID控制喷头定向火点Fig.4 PID control nozzle directional fire point
PID控制算法指比例(proportional)、积分(integral)和微分(derivative)3项全部或者部分组合的一种控制算法。PID控制几乎适用各种被控对象,通过调整PID参数,可以使系统兼顾稳态性能和动态性能。喷头定向控制中,比例控制部分用于控制舵机带动喷头跟踪火点移动而转动,积分部分用于消除火点框选中心与视频中心距离的稳定误差,微分部分用于控制两点偏差的变化率。计算公式为
(1)
式(1)中:u(t)表示舵机最终输出的角度;e(t)表示火点框选中心与视频中心的偏差角度;Kp、Ki和Kd表示各增益系数。
1号和2号舵机初始角度分别为30°和50°。舵机控制信号周期为20 ms的脉宽调制(pulse width modulation,PWM)脉冲信号,脉冲信号范围为0.5~2.5 ms,即占空比为0.5%~12.5%。不同占空比的PWM对应舵盘位置0°~180°,通过K210开发板产生指定的PWM脉冲信号给舵机。实际使用中,由于舵机零部件的差异、负载变化、减速齿轮磨损等影响,使得舵机机械特性不是严格线性的。为精确控制舵机转动至指定角度,通过数据拟合的方式得到舵机真实转动角度与占空比对应关系,波形如图5所示。
图5 角度与占空比关系Fig.5 Relationship between angle and duty cycle
实时视频中的目标检测一直是一项具有挑战性的任务,通常受到所需计算能力的限制。到目前为止,随着深度学习优化方法的到来,以及专门为嵌入式设备和深度神经网络加速而设计的新型片上系统的发布,有可能在小型廉价设备上实现实时性。K210[17-19]就是其中一款能够在边缘进行深度学习模型推理的系统级芯片。
K210内部配备的KPU(knowledge processing unit)是一种神经网络处理器,能够在先前训练的模型上加快推理过程。KPU内置卷积、批归一化、激活和池化运算单元,实时工作的最大固定点模型大小为5~5.9 MiB,并支持1×1和3×3卷积内核。K210有6 MiB通用SRAM与2 MiB专用AI SRAM,共计8 MiB。模型的输入输出特征存储在2 MiB的AI SRAM中,权重参数存储在6 MiB通用SRAM中。图6所示为嘉楠科技公司推出的一款MAIX DOCK开发板。
图6 MAIX Dock开发板Fig.6 MAIX Dock development board
K210火点检测过程如图7所示。执行流程为:①初始化KPU,部署CNN结构;②等待一帧图像采集完成;③开始CNN运算;④开始Region区域,计算火点区域;⑤绘制图像;⑥绘制火点区域框。
图7 K210火点识别执行过程Fig.7 Implementation process of K210 fire point identification
模型训练与编译流程如图8所示。数据集训练是在TensorFlow框架下进行的(①)。训练后的模型是.h5格式(②)。接下来.h5模型返回到TensorFlow(③),模型被转换为.tflite格式(④),然后在nncase中编译。nncase编译器将模型压缩、参数化和编译为.kmodel格式(⑤)。生成的kmodel模型有两种途径到开发板上,一种为通过官方kflash软件下载到Flash中(⑥),另一种直接存储到设备SD卡上(⑦)。
图8 模型训练与编译流程Fig.8 Model training and compilation process
模型训练硬件平台CPU为Inter i7 10750H @ 2.59 GHz,GPU为GeForce RTX 2060,6 G显存,32 G运行内存,运行系统为Windows10专业版,CUDA版本为10.1。
随机选取一定量图片进行训练,模型在K210上的检测效果并理想。因此,实验中所用到数据集是通过25 600张数据集中筛选得到的。目前,自制数据集只选择1 500张火点图片,分为训练数据和验证数据两部分。所使用的训练数据是1 200张来自监控摄像头图片和100张网上下载图片,共计1 300张图片。验证集使用200张监控摄像头图片。通过labelImg对数据集进行手工打标。网络训练超参数设置如下:批次大小为8,迭代次数为50,学习率为0.001。模型检测结果如图9所示。
图9 模型检测结果Fig.9 Model checking results
训练损失在深度学习中是衡量网络模型性能优良的重要指标。图10描绘了YOLOv2-Tiny训练损失随迭代次数变化的关系。当迭代次数较小时,网络模型对火点图片特征进行学习,训练损失值由1.3快速下降。当迭代次数增大时,训练损失曲线下降并逐渐趋近稳定。最终在40附近时,训练损失曲线趋近于0.04的稳定值,符合训练预期。
图10 训练损失与迭代次数关系Fig.10 Relationship between training loss and iteration times
为选取最优模型,分别对同一批火点图片、不同迭代次数的训练模型进行检测。迭代次数分别为10、15、30、40、50。采用多项指标对模型进行性能评估,具体评估指标包括精确率P、调和平均值F1、召回率R和每秒传输帧数(frames per second,FPS)。表2列出了5种不同迭代次数模型相对应的指标参数。选择最优模型不仅需要权衡准确率和召回率,同时也要选择能够综合反映模型性能的指标。F1是P、R的加权调和平均指标,因此选择F1数值最大的模型作为最优训练模型。测试结果对比如表2所示,F1最大值为95.54%,故本次模型中迭代次数为40的为最优检测模型。将最优模型下载至K210开发板上,对200张测试图片进行检测,检测精度达到96.5%。MAIX DOCK开发板火点检测效果如图11所示。
表2 测试结果对比Table 2 Comparison of test results
图11 MAIX DOCK开发板火点检测效果Fig.11 Fire detection effect of MAIX DOCK development board
喷头喷射轨迹与现场环境密切相关,实际环境中的风速、空气阻力等都对喷头射流有很大的影响,射流曲线与目标关系如图12所示。本实验中忽略风力与空气阻力影响,以射流理想轨迹测定射流落点与火点形心之间误差来衡量定向精度。实验中无人机固定至1.5 m高度,喷头加装一个点状激光器,共计测定100次AB之间的误差。实验场景如图13所示,实验测定结果如图14所示。
图12 射流轨迹与火点中心误差图Fig.12 Error diagram of jet trajectory and fire center
图13 实验场景Fig.13 Experimental scenario
图14 误差实验图Fig.14 Error experimental diagram
实验中射流落点位置误差的最大值为9 cm,平均误差为3.7 cm。随着次数的增加,误差持续在一定的范围内变化。一方面,由于0v2640摄像头安装的角度及高度使得采集得到的火点图像出现“近大远小”。具体表现为,当采集距离在焦距附近时,图像质量好,位置误差变小。当采集距离偏离该距离时,图像像素分辨率降低,位置误差略有变大。另一方面,由于火点属于非刚性物体,轮廓相对不规则和散漫。同时,图片摆放位置造成框选中心与火点形心不一致,导致误差持续存在。相同实验条件下,实验中发现随着高度(距离火点最高至8 m位置)的增加和火点面积的增大,误差逐渐有变小的趋势,这对精准灭火是有利的。通过调节PID参数,最终发现参数分别为0.23、0、0.015,满足稳定且快速响应的条件。
现有消防无人机喷头是不具备火点定向功能的。同时,考虑到视频监控平台的局限性,使用基于K210的可移动设备来实现火点检测与精准定向火点任务,得到如下结论。
(1)提出了YOLOv2-Tiny目标检测框架实现火点检测。通过建立真实数据集对其进行训练和测试,模型对火点的检测,精确率达94.6%,召回率达96.5%。模型下载至K210开发板上实现良好的检测效果,基于K210实现火点检测具有可行性,运用到火灾场景值得深入研究。
(2)提出了固有K210开发板的舵机带动喷头定向火点的控制方法。通过PID控制来调节火点框选中心与视频中心的偏差值来控制喷头定向火点。同时,为实现喷头的精确定向,通过数据拟合的方式找到舵机精确角度对应的PWM脉冲信号。在4 m×4 m×3 m的室内实验环境下,射流位置平均误差为3.7 cm,能够满足精准定向火点的服务需求。
本研究也存在一定的不足:
(1)为避免积分饱和所造成舵机角度滞后和震荡等问题,从而导致系统动态性能下降,本文中只使用了比例微分控制算法。尽管PD控制的稳定余度不小,但具有好的动态品质余度不大。为实现最优的控制品质,后续中将引入自抗扰控制算法。
(2)模型在K210上对火点的定位存在不精准问题。此外,一些类火焰物体,如带有黄色帽子和穿有黄色衣服的行人易引起误框选。后续研究中,会通过增加数据集和避免框选烟雾、火盆、干柴等不相干物体,有针对性地对火点区域进行打标。