肖 巍, 卢劲伉, 李博深, 吴启槊, 白英东, 潘 超
(长春工业大学 计算机科学与工程学院, 吉林 长春 130012)
人流量检测是计算机视觉中的经典问题,也是长期以来难以解决的问题。人流量检测主要解决的是能在图片或视频帧中识别所有行人,包括位置和数量。人流量检测技术具有广泛的应用背景和工程价值,可以用于客流量统计与分析、智能系统等。目前主要面临三大难题:
1)遮挡问题。在很多公共地点中,行人非常密集,存在严重遮挡,只能看到人体的一部分,这给检测算法带来了严重挑战。
2)背景复杂问题。无论是室内还是室外,人流量检测一般面临的背景都非常复杂,有些物体的外观和形状、颜色、纹理很像人体,导致算法无法准确区分。
3)检测速度问题。人流量检测一般采用复杂模型,运算量相当大,要达到实时非常困难,需要大量优化。
近些年,随着研究人员的投入和深度学习的发展。图像分类[1]、目标识别[2]、 图像分割和检测[3]等得到了极大发展,很多优秀的算法也随之而来:
1)R-CNN网络[4]。R-CNN(全称Region-CNN)是第一个成功将深度学习应用到目标检测上的算法。传统的目标检测方法大多以图像识别为基础。一般可以在图片上使用穷举法选出所有物体可能出现的区域框,对这些区域框提取特征,并使用图像识别方法分类,得到所有分类成功的区域后,通过非极大值抑制输出结果。R-CNN遵循传统目标检测思路,在提取特征这一步使用深度卷积网络提取的特征代替传统的特征(如 SIFT、HOG 特征等)。
2)SPP-Net网络[5]。SPP-Net是一种可以不用考虑图像大小,输出图像固定长度的网络结构,并且在图像变形情况下表现稳定。基本思想是,输入整张图像,进行一次conv得到整张图的Feature Map,然后找到每个候选框在Feature Map上的映射Patch,将此Patch作为每个候选框的卷积特征输入到SPP layer和之后的层。这种方法节省了大量的前一个conv所花费的计算时间。所以SPP-Net在检测速度上比R-CNN快24~102倍。
3)Fast RCNN[6]。Fast RCNN含有一个可以视为单层SPP-Net的网络层 ----ROI Pooling,对每个不同的region都提取一个固定纬度的特征表示,并通过softmax函数进行类型识别。同时,把bbox regression加入到神经网络内部,与region分类和并成multi-task模型,这两个任务能够共享卷积特征,并相互促进。执行Fast RCNN时,首先输入一张完整的图片,卷积一次,其次每个候选框找到相应的映射,最后输入映射Patch在第五个卷积层得到每个候选框的特征。Fast RCNN相对于R-CNN的提速原因在于: R-CNN对每个候选区域提取特征,而Fast RCNN是整张图片只提取一次特征,原因在于Fast RCNN将候选框映射到conv5上,而SPP只需要计算一次特征,其余的操作在conv5上执行。
4)Faster RCNN[7]。Faster RCNN网络在Fast RCNN网络的基础上添加RPN,卷积特征输入到RPN,得到图片中候选框的特征信息。在不用寻找到每个候选框在Feature Map的情况下映射Patch,将此Patch作为每个候选框的卷积特征输入到SPP layer和之后的层,进一步提高了物体检测的速度和精度。
2016年,Kaiming He等[8]详细提出了对于使用Faster RCNN实现对物体检测方法,重点介绍了Faster RCNN网络的结构和物体检测方法。文中基于Faster RCNN 实现对人流量的检测,检测对象是公共地点的行人。针对检测人流量这一场景下,发现Faster RCNN有进一步优化的空间,文中在FasterRCNN中针对RPN网络[7]做了优化,重构了RPN网络生成候选框的实现策略,提高了行人检测的速度。
XML和JSON的主要成分:
XML:element、attribute和element content。
JSON:object、array、string、number、boolean(true/false)和null。
XML需要选择怎么处理element content的换行,而JSON string则不需作这个选择。XML映射数组没大问题,就是数组元素tag比较重复冗余,JSON 比较易读,JSON的true/false/null也容易统一至一般编程语言的对应语义。
传统的Faster RCNN代码只支持xml类型数据的读取。文中补充了对JSON数据文件的读取,需要JSON文件的key值有以下关键参数:name(检测图片的相对路径),num(图片中的人数),annotation(图片中所有行人的候选框信息,(x,y)表示框左上角点的坐标,w和h分别表示图片的宽和高,坐标点与宽、高相加(x+w,y+h)表示框的右下角的坐标))。
对JSON文件读取的补充使得项目更加完整,支持读取JSON类型的数据,兼容行也有提高。
传入的图片或视频帧送入Faster RCNN网络框架,先经过RPN网络[7]进行特征提取,得到特征图片,特征图片上的特征值数组计算机可以“看见”和“理解”。原始框架中RPN网络的候选框生成策略:对于该图片的每一个像素点,考虑有Kanchor=3*3个候选框,如图1所示。
三种面积分别是128*128、256*256、512*512,每种面积的长宽比分别有1∶1,1∶2,2∶1。
文中的检测对象是行人,根据百度之星比赛提供的开源数据集,计算了3 000张图片中行人框的高比长,得到平均值为2.311,为了方便训练按照四舍五入的方法得到结果为2。因此在训练时保留(1∶2)的候选框,所以将原始的候选框生成策略(1∶1,1∶2,2∶1)*(128,256,512)改进为文中的(1∶2)*(128,256,512),只保留(1∶2)比例的候选框进行行人的检测,更改后的Kanchor=1*3个候选框如图2所示。
最终图片生成候选框的总数为
Nanchor=WConv*HConv*Kanchor,
(1)
式中:WConv----图片宽上的像素点数;
HConv----图片高上的像素点数;
RPN网络会生成region proposals,通过Softmax[7]判断anchors属于Foreground(前景)或者Background(背景),并得到偏移量,再利用bounding box regression修正anchors,获得精确的proposals。而最后的Proposal层则负责综合positive anchors和对应bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。
将proposals和图片特征信息传入ROI池化层[7]进行检测,获得每个候选框的得分,再经过Classification进行类别分类,将最终结果传入全连接层输出图片结果。
文中检测图片所花的时间单位为秒。原始的Faster RCNN网络1 s内可以检测多张图片,但是要实现实时检测,还是存在延迟问题,文中设计以下方法解决时间上的延迟和同步问题。
文中支持两种检测方式:视频检测和直播检测。两种不同的检测方法需要的时间轴也不同。视频检测时,时间轴为视频中的时间。直播检测时,时间轴为系统时间。
处理视频时,先获取到视频的Rate(帧率),再把视频截成视频帧,将视频帧送入Faster RCNN网络进行检测,检测后的图片保存到本地文件夹,并把在每张图片上检测到的人数信息累加到Shuman中,每检测Rate个图片后相当于检测了视频中的1 s,此时计算这1 s的人数信息Nhuman,
(2)
式中:Shuman----1 s内人数信息的总数;
Rate----帧率信息。
综上所述,考虑到碳限额与交易政策,本文为有多种配方、生产多种铁水产品的高炉炼铁厂制定合理的生产计划,并探讨碳限额、碳价对生产的影响。
最后将检测好的图片合成视频,并将Rate信息保存到JSON文件中,至此一段视频处理完毕,获得视频中的人流量信息。
处理直播检测功能时,设定时间t记录系统经过的时间,获取摄像头捕获的图片,将图片送入Faster RCNN网络检测,检测到的人数信息累加到Shuman中,每当执行累加时,累加次数Ttimes加1,当t≥1 s时,计算Nhuman,
(3)
式中:Shuman----1 s内人数信息的总数;
Ttimes----累加的次数。
计算完成后,将Shuman和Ttimes清零,进入下一个循环。如此循环,保证人数信息和系统时间轴同步,将60 s内的图片合成视频,并将这60 s内的人数信息保存到JSON文件中,保存的视频和视频信息实时更新,即完成了直播检测,实现了直播到直播加检测信息。
最终两种检测方式检测到的Nhuman向上取整,结果保存到本地文件中,向上取整可以最大化地减小漏查、误查所带来的误差,每隔60 s将内存中的数据保存到JSON文件中,作为这60 s时间段内的人数信息。
TCP协议提供的是面向对象的通信传输,稳定性相对较高,因此网页端的数据传输采取TCP协议。但是现今的网络通信中,无线网络传输占有越来越高的比重,而无线网络不同于有线网络,数据丢失有可能是由于误码丢包,而不是网络拥堵。
采用传统的TCP协议,则会导致拥塞控制被启用,网络性能将大幅下滑。
因此需要优化无线网络中的TCP协议。对于TCP协议,文中将其与自适应流媒体传输技术DASH(dynamic adaptive streaming over HTTP)[10]相结合,从而对TCP协议里面的拥塞控制算法进行相应优化。这样即可有效地防止在之前的拥塞控制算法超过空闲时间之后迅速降低拥塞窗口[10],将拥塞窗口的大小保持在一个相比之前更加恒定的值。
因此,这种技术能够提供良好的使用体验。
在检测图片和其所用的时间时,常常因为检测的图片太多、太密集,不方便对比,通过将密集的数据平滑化,使得数据清晰。根据人体功能学,人眼一次看50个数据的统计图时会比较清晰,文中在绘制统计图时将数据平滑化处理,横坐标长度设置为50。
具体算法用伪代码描述见表1。
表1 数据平滑化算法伪代码
3.1.1 硬件
采用1 080ti显卡和cuda驱动做计算,CPU为E5系列3核,内存8 G。
3.1.2 软件
操作系统采用Ubuntu,基于Tensorflow框架进行训练,训练前采用VGG-16作为权重初始值,迭代次数为40 000次。
选用VOC2007数据集和2019年软件杯的测试视频做测试数据,分别用原始的FasterRCN网络和做出修改的FasterRCNN网络进行检测。在同样的环境下,对同一个测试视频做检测,记录两种网络在检测视频的每一帧中所用的时间,进行对照实验,将修改前后的检测时间进行对比。实验结果分别如图3和图4所示(平滑化2.5)。
图4平滑化的目的是将横坐标数据缩小为50,使结果看起来明显,对比平滑化前横坐标会有减少,如果数据小于50,不用做平滑化。
根据两个网络检测时间的统计图可以看出,经过修改后的RPN网络更适合用于行人检测,不仅用于检测图片的时间短,而且检测的准确率也略有提升,经过多次检测后得到数据见表2。
表2 RPN网络修改前后对照表
修改前后检测效果分别如图5和图6所示。
图5和图6为软件杯比赛用于测试的视频中的截图,通过上面的结果分析,每张图片检测效率提升了2.5%左右,文中提供了一个检测人流量算法生成候选框的思路,并通过实验验证了其速度提高的效果,也验证了修改候选框生成策略对于人流量检测的可行性,并在准确率和检测时间两个重要指标上都有提高。
随着社会的不断发展,公共地点的人流量压力也逐渐加大。监控人流量成为一个重要方式来保证人们的安全和交通的顺畅。文中对原始Faster RCNN网络存在的延时、滞后问题,提出了改进的Faster RCNN网络,通过改进RPN、减少anchor的数量在保证准确率的前提下提高实时性。
利用VOC2007数据集进行训练,在原始网络和改进网络上进行测试。实验结果表明,减少anchor的数量和改进训练模型的数据类型,可以在保证准确率的情况下,提高网络的实时性,此网络相比于原始网络在检测时间上平均每张图片用时减少了2%。在直播检测人流量过程中,帧率为15~25,可以相对有效地保证数据的实时性和检测视频的流畅度。
人流量检测速度的提升对实时检测公共地点的人流量有很重要的作用。检测速度提高后能加快对人流量信息的检测、统计人流量信息等,并通过网络快速将结果信息传送给工作人员。根据检测到的信息做出相应的分析,实时了解公共地点的信息。未来可以将本产品用于及时检测城市各个街道、车站的人流量信息,预防拥挤和踩踏事故的发生。另外,还可以将其用于检测车辆等其他物体,实现多对象的检测。