基于深度学习的铁路行人细粒度检测*
2020-08-11刘家辉胡广朋王申宇
刘家辉 胡广朋 王申宇 刘 畅 覃 源 程 科
(1.江苏科技大学计算机学院 镇江 212003)(2.中铁隧道集团三处有限公司 深圳 518051)
1 引言
高速铁路的发展带来了巨大的便利,铁路事业高速发展的同时,铁路安全问题也值得关注。国内现有的铁路安全,主要是依靠视频监控和人工巡检相结合的方法。当有工作人员在铁路轨道上作业时,首先由当地调度员提供安全作业时间;其次分配观察员负责监控来往火车,进行预警;同时,在重要路口安装监控摄像头,由人工监控等多方面确保铁路作业人员的安全。由于中国的铁路轨道错综复杂,分布广泛,列车具有较高的行驶速度,同时工作人员存在缺乏专业素养、操作不当,疏忽大意等现象,铁路作业发生安全事故的情况仍然时有发生,常常有不知情的非工作人员缺乏安全意识,忽视警戒标识,误闯误入铁路重地,极易发生重大事故。而我国的铁路网规模较大,很难通过人工检测的方法判断所有线路是否有行人非法闯入和逗留。因此,为提高铁路安全性、可靠性,同时节省人力成本,轨道视频监控系统迫切需要全面的技术升级和大规模应用,及时判断检测警戒区域内是否有行人并判断行人是否非工作人员,并及时采取相应措施。
目前视频监控系统基本采用传统的目标检测算法[1],如Haar特征、HOG特征、SVM算法等。近年来,随着深度学习的兴起,卷积神经网络因其模拟人脑视觉处理机制,具有自动学习样本特征的特点,在目标检测,图像分类等方面取得较好应用。卷积神将网络中CNN(Convolutional Neural Network)算法表现优异[2],近年来已开展大量相关研究。Girshick等提出了区域卷积神经网络R-CNN[3],在VOC2012数据集上,将目标检测的平均准确率MAP提升了30%,之后又提出了Fast-RCNN[4]性能进一步提高;而Joseph Redmon提出了YOLO[5]、YOLO9000[6]模型,能够对目标进行实时性检测。
然而,中国幅员辽阔,地势多变,铁路沿线错综复杂,往往包含山川、河流、森林、城市等多种场景。这些场景的底层特征如纹理、颜色等都存在较大差异,给任务带来了巨大的挑战。此外,业界尚不存在公开的数据集用于实验,如果采集的数据不均衡,对训练过程会带来很大的影响[7],而如果数据采集的来源场景单一,缺乏多样性,直接用原始图片训练会导致最终结果的泛化能力不足,影响算法的精确度。
针对上述任务以及难点,本文提出了一种新的细粒度行人检测方法,该方法利用该领域大规模数据集,以YOLOV2高性能检测算法为基础,引入混合注意力机制,使得算法在特定的场景内有着优异的表现。
2 算法网络架构
图1 基于混合注意力机制深层卷积神经网络结构
网络结构如图1所示,提出的网络结构包括三个模块:1)数据增强模块,采用类别平衡采样+数据增强的方法对不平衡的数据集进行扩充,获得适合深度神经网络的平衡数据集;2)注意力模块,提出空间注意力模型。空间注意力解决卷积操作的全局共享造成的区域不敏感问题,高效的学习区域影响权重因子;3)目标检测模块,采用 keras[8~10]深度学习框架实现YOLOv2算法,对有人的图像类别进行了行人检测实验。YOLO的训练样本无需单独将每类样本从图像中裁剪出,而可以直接将整张图像用于训练[11]。同时,YOLO的样本标签不仅注释样本类别信息还注释样本在图像中的位置信息。
3 基本模型
3.1 YOLO检测算法
YOLO属于CNN,由卷积层、池化层和全连接层组成。与CNN不同的是,YOLO的输出层不再是Softmax函数,而是张量(Tensor)。YOLO在处理检测问题时,其实是转化成了回归问题解决。YOLO本身是基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出,能够做到实时的物体检测,大约能达到40帧每秒。其经典框架如图2所示。
图2 典型YOLOv2框架
使用YOLO来检测物体,其流程是非常简单明了的:
1)将图像resize到448*448作为神经网络的输入;
2)运行神经网络,得到一些Bounding box坐标、box中包含物体的置信度和class probabilities;
3)进行非极大值抑制[12],筛选Boxes。
采用卷积网络的pooling或者是stride将图片划分为S×S的网格。YOLO在预测目标时,只关注预测框的中心点,因此,不用计算所有预测框的损失函数。每一个网格中预测B个Bounding box和confidence score。得到一个物体的中心信息需要保证卷积核把物体的周边覆盖住,为此整个网络使用ResNet、MobileNet或其他网络结构去学习得到固定大小的卷积核。通过pooling或者步长大于1的卷积层就相当于对图片进行了一次切割,用小块去代替大块的信息。例如,当我们得到了一幅长宽为7,每个格子学出了一个1024维特征的图像,就记为7×7×1024,将它通过卷积窗口大小为1×1的卷积核进行全链接变换输出变换矩阵为[S,S,4+1+k],其中前两个维度代表了格子的索引号,最后一个维度中4为Bounding box坐标,1为置信度,最后k位代表物体类别的概率分布。
如果每一个网格中有物体存在,那么confidence score 为 Pr(object)*IOUPr(object)*IOU-predtruth,如果不存在物体,则为0。物体的位置用(x,y,w,h)(x,y,w,h)表示,(x,y)(x,y)表示物体的中心位置。每个网格还会预测C类的可能性Pr(Classi|Object)Pr(Classi|Object)为
通过上式可以得到每类的confidence score。在图2中,VOC2007模型中,S=7,B=2,总共有20个标签。所以最终产生7*7*307*7*30的tensor。
在测试过程中,计算检测边界框和参考标准框的IOU值,以此判断结果中的真正例、假正例和假反例。当 IOU[12]≥ 0.5[13],为真正例;当 IOU<0.5时,为假正例。当IOU=0,则为假反例。通过式(2)和式(3),可以得出实验结果的查准率和查全:
式中,TP、FP和FN分别为真正例、假正例和假反例的数量。
由于YOLO需要将图片分割成许多小网格,对于每个网格来说,当它们包含有多个目标时时算法就很难将全部的对象检测出来;此外,由于铁路视野广阔,常常需要检测较远处目标较小的行人,这种情况下YOLO算法的表现也不尽如人意;原始图片在预处理过程中需要转化成低分辨率图片,在经过YOLO的层层卷积之后往往也会损失小目标特征。
3.2 注意力模型
考虑到传统YOLO算法的不足,在本文的模型中加入了空间注意力机制对图片进行一次分类处理,使用图像分类主网络、空间注意力模型联合建模,进行端到端的铁路行人场景分类。
对于人类而言,图3所示的图像中仅有部分区域所对应的视觉内容对最终的分类结果起主导作用。若将图像均匀分割为16个网格,则区域3、6、7、11的特征在最终的场景分类计算时应具有较大权重。但是,卷积神经网络的特征会全局共享,神经网络中的任意一个滤波核对图片的所有部分具有相同的权重参数,因此,若可以自适应的根据输入图片的视觉内容的不同区域赋予不同的权重,将会进一步提高场景分类的准确率。
图3 图像不同空间区域对场景分类影响示意图
本文提出了空间注意力模型高效的学习区域影响权重因子解决了不同部分占有不同权重的问题。模型框架如图4所示。网络的特征输出为Y,w'*h'*c'分别为矩阵所表示的特征图的宽、高和通道数,则空间注意力网络输出H的维度就可以用w'*h'表示,最终具有空间注意力的输出语义特征Y''的计算公式为
⊙表示按元素相乘,Y()i表示第i个通道的特征图。式(4)的意义是网络特征图的每一个位置都与空间注意力模型输出的对应影响因子相乘。
采用空间注意力的模型可以有效地对远距离小体积的目标判断,这种方式有效的原因在于输出特征图的每一个元素都对应原始图片的一块区域,这块区域也被称为感受域,因此对于网络高层特征图的每一个位置施加不同的权重即等价于对原始图片的不同区域施加不同的影响因子。
图4 空间注意力模型
4 实验及结果分析
4.1 数据集的构建
目前尚不存在公开的大规模数据集,本文通过多个铁路监控摄像头获取图片3154张,然后进行人工标注。为进一步增加训练数据的多样性,采用数据增强,首先将短边缩放为224,长边同比例缩放;随后从缩放之后的图片中随机的裁剪224*244大小的区域;然后对裁剪之后的图像进行随机水平翻转、随机颜色变化、随机仿射变换操作增加训练集图片的多样性。
4.2 实验过程
本文总数据集为图片3154张,标记数据为图片410张,训练数据为图片250张,测试数据为图片160张,使用了keras深度学习框架,训练时优化算法采用Adam[14]自适应优化算法。并且默认验证集中的损失函数值趋于最小值时结束训练。首先通过分割将图像变为224*224*3的彩色图像作为注意力模块的网络输入。近来提出的轻量级网络虽然占用了更少的内存空间增加了运行速率,但是像MobileNet[15],ShuffleNet[16]这些网络均采用了分离卷积的操作。这导致模型在CPU上的运行速度提升不如GPU效果明显,因此,我们引入了迁移学习训练模型,增加网络的收敛速度。将最后一层神经元的个数设置为1000,整个网络在ImageNet数据集上进行训练。训练完成后的模型作为模块所有曾的初始化参数在本文构建的铁路行人数据集上进行二分类训练。得到输出为代表有人和无人概率的两个神经元。
本文检测模块网络以YOLOv2网络为原型,训练和检测均是在一个单独网络中进行。其采用RPN(Regions Proposal Network)的思想,去掉全连接层,采用卷积层来预测目标框的偏移和置信度。使用DurkNET-19进行训练网络,DurkNET-19具有与YOLVO2网络相同的前19层(直到Conv18_1024),之后加上了 1024个 1×1卷积,使用DurkNET-19网络训练可以节省训练时间并且提高精确度。得到的训练参数进行初始化网络,应用到自建的数据集中,训练60个epochs,batch_size设为16,learning_rate为1e-4,Momentum设为0.9,Decay为0.0005。在训练过程中,采用小批量梯度下降法,当损失函数趋于极小值时认为训练完成,损失函数如图5所示。采用非极大值抑制算法消除多余的检测框,筛选最佳的Boxes。值得注意的是,anchor box的个数及各个anchor box的参数都是固定值,不一定符合自建数据集的目标规格,因此,我们在人工标注的数据集中采用了k-means算法对检测框聚类,重新获得了5类全新的anchor box。
图5 损失函数图像
4.3 实验结果及分析及仿真
表1 实验结果对比
图6 空间注意力模型可视化结果
从试验中可以看出,传统的FasterRCNN算法虽然有着相当高的平均检测精度,但是每秒检测帧数的表现相比于其他算法有着较大的劣势;相比于传统的YOLOv2算法,加入attention之后每秒检测帧数下降了30,但是平均检测精度由原来的75.8%上升到79.9%,提高了4.1%个百分点,attention的仿真图如图6所示。本文的主网络模型仅有60M左右,而在具体场景中,“无人”类别占据绝大多数,因此加入attention之后,虽然运行速率有所下降,但是却可以快速过滤掉大量无人场景的数据,从而在一定程度上弥补了多网络训练消耗时间的劣势;而加入数据增强技术以后,每秒检测帧数又有了略微的提高,而平均检测精度在原有的基础上又提高了2.9个百分点,高达82.8%,超过了FasterRCNN的平均检测精度。
5 结语
我们为了实现铁路轨道行人检测任务,构建了一定规模的数据集,并采用了数据增强技术以提升算法表现;采用YOLOv2算法模型,并且采用了k-means算法重新聚类了anchor box,采用了非极大值抑制(NMS)筛选候选框;由于项目工程实际情况,图片检测中“无人”占有相当大的比重,因此又引入了空间注意力机制,先对数据集进行一次分类操作,虽然算法速率上有所下降,但是增加了算法精度以及可靠性,而速率的衰减也在可以接受的范围之内。最后采用传统的SVM分类器对检测到的行人进行归类,判断是否为工作人员。这样,就将场景分类,目标检测,检测结果分类统一到一个整体的深度学习框架中,实现了对铁路轨道行人的细粒度检测。未来,我将探索如何进一步在保证检测精度的基础上提升网络训练速度、检测精度,并且网络在识别远距离、非常规形态特殊姿势的行人目标时表现仍然有所欠缺,这也是未来的研究方向和重点难点。