前端使用在树莓派上的传统的人脸检测,后端使用DL模型的人脸检测系统

神经网络监督式树莓派人脸检测

NNMonitoring Pi Face Detection

摘要:传统的人脸检测方案在如今的工程应用上的使用较为广泛。传统人脸检测受限与固定场景下训练的人脸分类器,其检测的性能对于场景的依赖性较强,泛化的能力较弱。使用深度神经网络的人脸检测的检测性能远远高于传统的方式,其泛化能力也较强,但成本上,基于深度神经网络的人脸检测的方案远大于嵌入式设备。

     针对成本控制、提升人脸检测的性能的要求,通过前端使用传统嵌入式设备(树莓派)使用级联的人脸检测器,后端使用MTCNN进行检测,以获得当前场景下的人脸数据集进行训练。如果针对多个场景,可以多个前端检测器与一个后端人脸检测服务器进行通信,已达到检测性能的提升和成本的降低。

1.技术方案

   1、系统结构

前端检测:搭载摄像头的树莓派,使用级联的人脸检测器进行人脸检测,并且传输图像到后端使用深度学习进行人脸检测,获取后端服务器训练的人脸检测模型。

后端服务器:使用MTCNN人脸检测,对于前端传输的图像进行人脸检测,产生人脸数据集(正、负样本),进行传统人脸分类器的训练,回传给前端进行人脸检测。

                         

 

1.2 MTCNN

      MTCNN是论文Joint Face Detection and Alignment usingMulti-task Cascaded Convolutional Networks提出的人脸检测和对齐的算法。论MTCNN3个网络结构组成(P-NetR-NetO-Net)。

            Proposal Network(P-Net):主要获得人脸区域的候选窗口和边界框的向量,通过边界框对人脸候选窗口进行校准,通过NMS合并高度重叠的候选窗口。

RefineNetwork(R-Net):该网络结构还是通过边界框回归和NMS来去掉那些false-positive区域。只是由于该网络结构相比于P-Net多了一个全连接层,所以会取得更好的抑制false-positive的作用。

 

Output Network (O-Net):相比于R-Net层又多了一层卷积层,输出的结果会更加精细。作用和R-Net层作用一样。但是该层对人脸区域进行了更多的监督,同时还会输出landmark的5个点。

该文章中提出的一点:训练过程中困难样本的生成策略,本文采用的策略是再每次的mini-batch,按照损失的大小排列样本,取前70%样本作为困难样本,在BP阶段只计算这些困难样本,这样大大的提升了人脸检测的性能。


本次后端检测使用的MTCNN-light C++版本,无需框架的搭建,需要用到OpenCV和OpenBLAS,搭建MTCNN的三个网络结构,需要加载三个网络的模型。参考Github

1.3 VJ-Detector

基于Haar_like特征,使用积分图表示图像加快特征计算,使用Adaboost进行特征的选择以及训练级联分类器的人脸检测算法由Paul Viola、Michael J.Jones 在论文《Robust Real-Time Face Detection》提出。


                                                                    图1.3 级联分类器检测过程

 

该人脸检测算法用在树莓派上进行人脸检测。人脸检测器的训练需要采集正负样本,在一个固定场景下,进行人脸数据集样本的采集进而进行人脸检测,其检测当前场景的效果会较好,但对于另外场景进行检测,其分类器对于环境变更情况下的鲁棒性较差,需要重新训练人脸分类器,得到适应当前环境下人脸检测器。

                  

2.系统设计

2.1 数据集的获取

本系统通过前端检测端,采集当前场景下的图片,传输给后端服务器使用深度学习的人脸检测进行人脸数据的标注,进行正负样本的自动生成,正样本为当前图像的人脸图像,负样本为当前图像中的非人脸的区域的图像,分别保存待进行训练生成级联人脸分类器,回传给前端人脸检测。

                    

图2.1单张图片正负样本的获取

 


2.2 通讯方式(目前网络环境为局域网)

socket前端检测和后端服务器文件及图片信息的传输方式。Socket的定义是网络上的两个程序通过一个双向的通信实现数据的交换,这个连接的一段称为一个Socket,通常称之为“套接字”。在不同主机上的程序通常通过“套接字”向网络发出请求或者应答某个网络请求。

   Socket是面向客户/服务器模型而设计的,与该系统的运行模式相契合。后端服务器拥有全局公认的Socket,前端检测器对后端服务器发送连接和请求需要后端服务器的IP地址以及端口号,才能实现前端和后端的相互通信。

            

2.3前端检测器在服务器上的训练(尚未实现)

前端的树莓派使用的人脸分类器是使用前端检测器采集到的图像,在后端服务器上使用神经网络进行人脸检测,采集出人脸正样本图像,以及除人脸区域外的负样本图像(人脸图像大小调整为20x20,负样本调整为40x40),在后端服务器使用神经网络进行人脸检测的结果人脸中,人脸的大小尺度不一致,但对于级联分类器的训练时,需要设定好训练的正样本的人脸的大小,需要进行人脸图像尺寸的统一。对于正负样本的数据进行整理和清洗后,使用OpenCV中的训练cascade分类器的工程进行训练,以上的操作是在后端服务器上进行的,之后将训练完成的cascade分类器文件回传给前端检测器即树莓派。

             


 


    

猜你喜欢

转载自blog.csdn.net/weixin_37697675/article/details/80018896