韩江洪, 沈露露, 卫 星, 陆 阳
(1.合肥工业大学 计算机与信息学院,安徽 合肥 230601; 2.安全关键工业测控技术教育部工程研究中心,安徽 合肥 230601)
随着智能化技术的不断发展,矿井的无人化、智能化研究越来越多。作为矿井安全生产监控的关键部分,井下场景识别是矿井安全高效生产的关键保障。由于井下环境复杂,开采运输任务繁重,如果井下人员不按规章制度办事,那么很容易发生严重的事故,造成人员和财产损失。
传统的井下监控采用肉眼观看的方式,不仅效率低而且需耗费大量的人力物力;而采用单片机检测的方法[1]只能针对一种场景设计一套方案,开发周期长,并且难以多方面兼顾,鲁棒性不高。此外,深度学习在场景识别、物体分类[2]等方面的研究越来越成熟,利用深度学习识别物体效率快、准确度高。文献[3]提出一种针对环境中无人驾驶车辆的视觉、光探测和测距融合的目标分类方法;文献[4]提出了利用深层神经网络对空间物体进行分类的方法。
虽然目前用于物体分类的网络很多,识别精度也很好,比如ResNet、VGG、GoogleNet[5-7]等。但是总体趋势是网络层数越来越深,这也导致了网络模型参数越来越多,计算量越来越大,运行这类网络需要消耗高额的存储空间以及大量的计算资源,因此很难应用于嵌入式终端。深度网络模型压缩算法的研究能够保证在精度基本不变的情况下,减少模型的大小、降低计算的消耗、提高网络效率,是深度学习技术应用于移动设备的关键。目前深度学习模型压缩方法主要可以分为更精细模型的设计、模型剪裁和核的稀疏化3类。模型裁剪是对于已训练好的网络模型,寻找一种有效的评判手段,裁剪不重要的连接或过滤器来减少模型的冗余[8-9]。
文献[10]将裁剪、权值共享和量化、编码等方式运用于模型压缩上,取得了非常好的效果;文献[11]将权重矩阵的低阶和稀疏分解与特征图重构相结合,获得了更高的压缩率、更低的精度损失以及更少回合的压缩深度模型。
目前针对井下场景识别的研究还很少,主要是对于视频的采集监控、视频的识别仍然是人工进行的,并未涉及到视频的处理与识别任务。文献[12-13]主要是基于ARM、Wi-Fi等技术对矿井环境下安全监测系统的研究,实时采集井下视频并上传到地面监控中心。
本文首先利用基于回归方法的Light SSD(Single Shot MultiBox Detector)模型识别井下巷道大类物体,然后利用深度学习的卷积神经网络(convolutional neural networks, CNN)来识别具体的小类目标,并将网络进行压缩移植到嵌入式平台。利用深度学习卷积神经网络给出实时可靠的识别结果,为安全隐患的发生提供预警依据,不仅可以起到安全防范的作用,还能提高生产效率保障矿工的人身安全。
深度学习网络的训练需要大量的数据集,然而目前应用于深度学习的数据库基本上是基于路面上的,并没有针对矿井下的数据集,并且也没有关于井下场景物体分类的依据。另外,虽然目前深度学习识别网络很多,但很少有兼顾效率和复杂度并满足井下实时性要求的网络。本文主要研究应用于井下场景的视觉识别网络,在保证精度的同时压缩网络,并将其移植到嵌入式平台给出识别结果用于高效完成井下的安全生产监控任务。
系统整体模型结构如图1所示。
图1 系统整体模型
(1) 建立井下场景的数据库,收集井下场景的各类物体图片,其中图像的预处理主要包括翻转、旋转、缩放、裁剪、平移和噪声扰动等,经过图像预处理来扩大数据集,然后使用标图工具如LabelImg对图像上的物体信息进行标注,完成训练集、验证集和测试集数据库的建立。
(2) 井下场景的物体检测和识别网络的训练,本文首先采用基于回归方法的Light SSD网络模型,并进行相应改进。在初始化网络之后向网络中输入标注好的训练图像进行训练并利用验证集数据进行验证,将训练好的网络通过测试集数据测试井下巷道大类物体的识别效果,如人、矿车、标识牌等。接着利用深度学习的卷积神经网络对某一大类物体细分,识别出具体小类,如矿车中的运货矿车和载人矿车。
(3) 网络模型的压缩,首先研究网络结构,分析网络冗余参数,研究深度学习网络模型压缩算法,结合网络特点选择剪枝、权值共享、参数量化,并结合霍夫曼编码等压缩方法对障碍物识别网络进行压缩。
(4) 研究深度学习嵌入式平台如TX2,将前面训练好并经过压缩的井下巷道场景物体识别网络优化压缩之后移植到嵌入式平台,调试识别效果。
目前许多开源数据库都是基于路面上的,关于矿井下的数据集基本没有,更没有关于井下物体的分类依据。井下场景物体主要分为以下10类,见表1所列。
表1 井下物体分类
在井下场景的任务背景下,通过图像的几何变换,使用以下1种或多种组合的数据增强变换来增加输入数据的量。
数据增强方法包括以下6种,数据增强示意图如图2所示。
图2 数据增强示意图
(1) 翻转。沿着水平或者垂直方向翻转图像。
(2) 旋转。随机旋转图像一定角度,改变图像内容的朝向。
(3) 缩放。按照一定的比例放大或者缩小图像。放大时,放大后的图像尺寸会大于原始尺寸,按照原始尺寸对放大后的图像进行裁切。缩小时,因为图像缩小会减小图像尺寸,所以对图像边界之外的东西做出假设。
(4) 裁剪。与缩放不同,随机从原始图像中采样一部分,然后将这部分图像调整为原始图像大小,该方法也叫随机裁剪。
(5) 平移。平移是将图像沿X或Y方向(或者同时沿2个方向)移动。
(6) 噪声扰动。对图像的每个像素RGB进行随机扰动,常用的噪声模式是椒盐噪声和高斯噪声。
小类目标的识别对于矿井安全生产具有重要意义,而目标检测网络更适合于大类的目标识别定位,如果只用一个检测网络来完成大类和小类目标的检测和识别,那么势必需要更复杂及更多层的网络来提高识别的精度,因此也需要更多的存储空间和计算量。本文将小类目标识别任务单独进行,能够大大提高识别准确率。
井下场景识别网络主要包括如下2个部分:① 针对井下场景的大类物体检测,主要是利用目标检测网络识别并定位出井下人、矿车等类别的物体;② 针对于上一步给出的定位结果进行小类识别,如在矿车大类中用目标识别网络识别出是属于载人矿车或运货矿车等小类。最后对上述2个网络进行模型压缩,为后续移植到嵌入式平台做准备。
2.2.1 第1步目标检测网络结构
Light-SSD网络模型如图3所示。
图3 Light-SSD网络模型
对于第1步井下场景物体大类的目标检测,本文采用基于回归方法的SSD网络模型结合深度可分离卷积的Light-SSD网络模型。SSD网络模型是一种直接预测目标类别和边界框的多目标检测算法。SSD网络模型的结构主要分为如下2个部分:① 前端用于目标特征提取的深度卷积神经网络,考虑应用于嵌入式平台,本文采用基于深度可分离卷积核的轻量级网络作为前端特征提取网络;② 后端用于多尺度目标检测的卷积神经网络,针对不同大小的目标检测,SSD算法利用不同卷积层的特征图进行综合达到与Faster RCNN同样的效果。Light-SSD网络前13层为基于深度可分离卷积的特征提取骨干网络,在Light-SSD的Conv13后面添加了8个卷积层,然后共抽取6层用作检测。
Light-SSD网络模型是基于深度可分离的卷积,它是一种分解卷积的形式,它将一个标准的卷积分解成深度卷积和点状卷积,这种分解的作用大大减少了计算和模型的大小。分解示意图如图4所示。
图4 深度可分离过滤器分解示意图
SSD同时采用低层和高层的特征图做检测。用feature map cell表示特征图中的每一个小格子。默认框表示在特征图的每个小格上都有一系列固定大小的盒子。Prior box表示实际中选择的默认框。如果用m个特征图做预测,那么对于第k个特征图而言其默认框大小的计算公式为:
(1)
其中,Smin取0.2,表示最低层的大小是0.2;Smax取0.9,表示最高层的大小是0.9。
损失函数由分类和回归两部分组成,回归部分的loss是希望预测的box和prior box的差距尽可能与真实框(ground truth)和prior box的差距接近,这样预测的box就能尽量与真实框一样。损失函数表达式如下:
L(x,c,l,g)=1/2(Lconf(x,c)+αLloc(x,l,g))
(2)
其中,N为匹配的默认框的个数;x为匹配了的框是否属于类别p,取值为{0,1};c为所选框目标属于类别p的置信度;l为预测框的位置信息;g为真实值ground truth框的位置信息。
2.2.2 第2步目标检测网络结构
第2步的井下巷道物体小类识别采用传统的卷积神经网络,受Network in Network启发,使用的1×1卷积核,在第1卷积层之后引入1×1卷积核,它起到跨通道聚合的作用,进一步起到降维的作用,达到减少参数的目的。为了保持识别精度在1×1卷积核之后采用1×1与3×3混合卷积核,这样做的目的是可以减少3×3滤波器输入的通道数,进一步减少参数数量。特征图经过池化后得到的是概要统计特征,它能够在保留主要特征的同时减少参数和计算量,防止过拟合,提高模型泛化能力。因此在网络的第1、4、8层之后加入池化层,在最后一层进行全局平均池化。目标识别网络结构如图5所示。
图5 目标识别网络结构
除了2.2.1节卷积分解以及2.2.2节中1×1卷积核的利用可以减少网络参数以外,本文还结合了文献[10]的深度压缩方法。在网络训练的过程中发现权值大部分集中在-1~1之间,即非常小,由此可见权值存在着大量的冗余,因此采用网络裁剪的方法来压缩网络。网络裁剪主要分为如下3个步骤: ① 正常训练模型得到网络权值; ② 将所有低于一定阈值的权值设为0; ③ 重新训练网络中剩下的非零权值。经过修剪后的稀疏网络,就可以用一种紧凑的存储方式CSC(compressed sparse column)或CSR(compressed sparse row)来表示。
为了进一步压缩网络,采用权值共享的方法,即让若干个权值共享同一个权值,这样需要存储的数据量将大大减少[14]。采用k-means算法来将权值进行聚类,在每一个类中,所有的权值共享该类的聚类质心,因此最终存储的结果就是一个码书和索引表。通过优化所有类内元素到聚类中心的差距来确定最终的聚类结果,即
(3)
其中,w={w1,w2,…,wn}为n个原始初值;C={c1,c2,…,ck}为k个聚类。
最后,为了解决编码长短不一带来的冗余问题,将分布不均匀的权重及索引用Huffman编码来对其进行处理,减少网络存储。
本文在井下场景识别数据集上评估了系统性能。本节首先介绍了数据集的来源及组成,接着介绍了实验的环境和检测以及识别网络的训练,然后分析了网络的性能指标,最后在嵌入式平台运行训练好的网络,分析检测和识别的效果。
本文实验的数据集来源于矿井下的视频监控数据,所识别的10种物体每种物体500张图片,按照2.1节中所述方法进行数据增强后每种物体约9 000张,共计90 000张图片,其中训练集有63 000张图片,测试集有27 000张图片。
实验环境为Ubuntu16.04+Caffe+GeForce GTX 1080i,利用ImageNet数据集预训练的网络模型对井下巷道数据集进行再训练,这样既可以节省训练时间又可以提高识别精度。第1阶段的大类目标检测类别分为人、矿车等10余种,网络初始学习率为0.001,权重衰减率为0.000 5,批处理大小为24,动量为0.9,最大迭代次数为60 000 次,优化算法是RMSProp。第2阶段小类目标识别以矿车为例,分为背景、运货矿车和载人矿车3类,网络初始学习率为0.004,权重衰减率为0.000 2。训练流程如图6所示。
图6 训练流程
为了提高井下巷道场景物体的识别效果,本文利用井下巷道场景的数据库信息对检测及识别网络进行训练。Light-SSD网络训练的Loss曲线如图7所示,从图7可以看出,随着迭代次数的增加,Loss值不断减少,在迭代接近2 000次时开始收敛,并逐渐趋近于0。
图7 Loss曲线
实验还对比了SSD、Light-SSD和DC-L-SSD(深度压缩卷积层的Light-SSD)3种网络的运行速度及其精度关系。由于井下巷道场景复杂,灰尘多、光线变化大,井下巷道场景的图片质量大多不是很好,因此直接应用SSD的识别并不是很好,检测的准确率不到50%。对比结果见表2所列,从表2可以看出,运用了深度压缩卷积层的Light-SSD检测网络运行速度有了很大的提升。此外,经过深度压缩的网络在精度基本不变的情况下运行速度提升了3~4倍。
表2 目标检测网络效果对比
基于大类物体检测结果进行了小类物体识别实验。此外,实验对比了Alexnet、Modified Network(改进的网络)以及DC-M-Network(压缩后的改进网络)的精度及大小关系,对比结果见表3所列。从表3可以看出,改进的网络在精度基本不变的情况下大大减小了网络的大小,更适合于资源有限的嵌入式平台的应用。
表3 目标识别网络效果对比
移植到嵌入式平台视频处理框架如图8所示。用户可自行管理输入的多路视频流,视频流形成视频包进入包缓存区,缓存区将视频包送入解码器进行解码操作,解码后的视频包经过跳帧处理形成帧池,帧池负责向下面的处理模块输入数据。首先经过转换模块进行颜色空间的转换,接着进入推理模块进行推理,采用基于TensorRT的推理方法,然后输入用户模块由用户自定义操作。经过一番处理后的数据送入前面训练好的井下巷道场景大类物体,检测网络识别出大类物体并给出定位,将定位出的结果输入小类物体识别网络识别出物体小类。
图8 嵌入式平台视频处理框架
本实验将Light-SSD、Resnet-18和Yolov3网络模型移植到NVIDIA TX2平台上进行运行。TX2是一款体积小巧、高度集成的嵌入式开发板,自带Ubuntu 16.04系统,并提供caffe网络架构,正适合于本文研究的网络移植。TX2最多可支持6个摄像头,本实验使用开发板自带的摄像头进行验证。
本实验对比分析了Light-SSD、Resnet-18和Yolov3 网络模型在TX2平台上的运行效果,实验结果见表4所列,从表4可以看出,虽然Yolov3的精度很高,但是在TX2上的帧率却很低,只有3 f/s左右,这对于实际应用是一个很大的瓶颈;而Light-SSD网络模型的精度稍有欠缺,但是帧率可以高达40~50 f/s。对于嵌入式平台的应用,网络的运行速度很重要,识别速度低、识别效果很难展现,难以进行实际的应用,而Light-SSD网络模型的精度虽然有些欠缺,但可以通过其他方法进行弥补,比如采用多个摄像头、多角度的拍摄或者冗余识别等方法。因此,本文研究的网络更适合于嵌入式终端的应用。
表4 TX2平台运行效果对比
本实验将训练好的SSD模型直接应用于井下巷道场景进行识别。针对于目前流行的数据集训练出来的识别种类也不适用于井下巷道场景,对于井下的许多物体种类SSD无法识别,存在识别错误、识别不精确、识别不到、识别不全等问题。使用本文训练后的网络识别井下场景,识别准确率及精度都有明显提升,识别效果对比如图9所示。
其中,图9a、9c、9e为SSD识别效果,图9b、9d、9f为本文网络识别效果。从图9可以看出,对于光线条件较好的图9a、图9b、图9c、图9d,本文网络可以识别到矿车、桶等多类物体,识别到更多的目标,同时检测框与目标更贴合。
从图9中还可以看出,与传统SSD相比本文网络识别的准确率从50%左右提升到70%以上,同时对小目标的识别率也有所提高。对于光线变化较大的图9e、图9f,可以看出SSD无法直接识别出强光条件下的目标,本文网络更适应井下光线的变化。
图9 井下巷道场景识别效果
本文主要研究基于轻量级CNN的井下视觉识别策略,提出基于深度压缩卷积核的轻量级大类目标检测网络和改进的小类目标识别网络,并对网络进行深度压缩,将压缩后的网络移植到TX2平台,最终获得了保持精度基本不变的前提下运行速度的提升以及模型大小的深度压缩。本文的研究对于深度学习的实际应用具有重要意义,但是如何权衡精度与速度的关系仍然是应用研究的重点,也是本文下一步研究的方向。