基于TINY-YOLO的嵌入式人脸检测系统设计*
DesignofEmbeddedFaceDetectionSystemBasedonTINY-YOLO
游
忍1
周春燕1刘明华1邵延华2展华益1,3(1长虹AI实验室,四川绵阳621051;
2西南科技大学信息工程学院,四川绵阳621010;
3西北大学电子工程和计算机系,美国伊利诺斯州埃文斯顿60208)
摘要:基于深度学习的人脸检测算法对于人脸检测性能有了很大的提升,但是大多数算法无法部署在移动端上。如
MTCNN等算法虽然可以部署在嵌入式系统,但是在实际的应用场景中,有时不能满足需求。将TINY-YOLO用于人脸检测,结合NCNN框架,实现了在移动端的部署及商用。精度上相比于MTCNN有较大的提升,在实际的应用场景中表现优
异,并且算法运行时间不会随着人脸数量的增加而增加,更适合于多人脸的嵌入式环境下人脸检测。
关键词:人脸检测,TINY-YOLO,嵌入式,深度学习
Abstract:Depthlearningbasedfacedetectionalgorithmhasgreatlyimprovedtheperformanceoffacedetection,but
mostofthealgorithmscannotbedeployedonthemobileterminals.AlthoughalgorithmssuchasMTCNNcanbedeployedinembeddedsystems,theysometimescannotmeettherequirementsinactualapplicationscenarios.Inthispaper,TINY-YOLOisusedforfacedetection,andtheNCNNframeworkisusedtoimplementthedeploymentandbusinessinmobileterminals.ComparedwithMTCNN,theprecisionofthealgorithmisimprovedgreatly,anditperformswellinpracticalapplica-tionscenarios.Moreover,therunningtimeofthealgorithmdoesnotincreasewiththeincreaseofthenumberoffaces,soitismoresuitableforfacedetectioninmulti-faceembeddedenvironment.
Keywords:facedetection,TINY-YOLO,embedded,deeplearning
深度学习对于人脸检测算法有很大的促进。目前基于深度学习的主流目标检测算法主要可以分为one-stage和two-stage两种,two-stage的代表主要有R-CNN[1-3]系列,one-stage代表
主要有SSD[4]、YOLO(YouOnlyLookOnce)[5-7]系列。一般情况下,two-stage目标检测算法的精度比one-stage高,但是
one-stage算法的速度更快。One-stage算法经过改进后精度已经有了很大的提升,已经接近甚至超越了two-stage算法。利用two-stage中的FasterR-CNN框架,Wang、Z.Li等人提出FaceR-CNN[8]人脸检测算法,加入了centerloss、OHEM等tricks,在FDDB数据集上recall达到98%以上。
上述基于深度学习的方法虽然在精度上有了很大的提升,但是模型很大,在嵌入式处理器上运行时间很慢。本文将YOLO算法的轻量化版本TINY-YOLO算法用于人脸检测,得到一个
可以在手机甚至电视机空调上使用的人脸检测系统。
1系统结构设计
图1系统结构设计框图
本方法使用深度学习算法检测人脸,意在解决嵌入式处理器环境下,深度检测算法检测模型大、运行效率低甚至无法运行的问题。为解决这一问题,从两方面着手,训练数据和深度网络模型:首先,采集大量人脸样本库,尽可能多的包括各种场景、各种姿态、各种角度、各种表情以及各类人脸,通过K-means聚类算法将训练数据已标注好的人脸框进行聚类,从中挑选出几
高。但是在实际进行训练的时候,梯度将出现不稳定的现象。所以,目前主流目标检测算法都是预测默认给定方框的偏移量,这些默认给定的方框被称作Anchor。Anchor的尺寸应该与要预测的目标的尺寸接近,这样在进行预测的时候预测函数才能看作一
个线性函数,保证结果的准确性。为了得到本系统中人脸检测算法的Anchor,我们采用了K-means算法。它所采用的步骤如下:
类最适合的人脸框类型作为锚框,提高检测精度;此外,对卷积层参数进行调整,减少计算量,以达到压缩模型大小,提高检测速度的目的。本系统处理器采用RK3288芯片,结合了腾讯
ncnn框架,它是一个专门为嵌入式端优化的高性能神经网络前
向计算框架。
2Anchor聚类
在检测算法中,最直接的方式是预测包含目标的方框的宽、
1)将所有真实标签的方框的中心坐标令为(0,0);
2)在真实标签的方框中随机选取3个方框作为聚类中心;3)按照以下两个步骤迭代:①根据每个方框与每个聚类中心的IOU,将每个方框分配给与聚类中心中IOU最大的那个聚类中心。将真实方框分成3组。②在每组真实方框中,计算每个方框与该组内其它方框的IOU的平均值。将平均值最小的那个方框作为该组新的聚类中心,直到IOU平均值变化小于阈值结束。
*长虹公司一号工程:2018-01
483
模型压缩与训练
基于TINY-YOLO的嵌入式人脸检测系统设计
TINY-YOLO算法的这个特点决定了它比MTCNN算法在实际
应用场景中更有优势。
TINY-YOLO算法的耗时主要是在卷积部分,骨干网络如
图2所示,含有大量的卷积层。假设卷积层的输入特征图维度是
CixWixHi,Ci、Wi、Hi是特征图的通道数和宽高。卷积核维度是CxKxK,其中C和K分别代表卷积核的通道数和卷积核的宽高。同理,输出的特征维度是CxWoxHo,则卷积核的参数量为CxKxKxCi,计算量为CixKxKxWoxHoxC。从上面公式中可以看
出,卷积核的通道数对计算量与模型参数的大小有很大影响,所以这里我们将骨干网络中卷积核的通道数量全部减半,以减少模型大小和计算量。
图3系统运行场景
5结束语
与其它的人脸检测算法如MTCNN等比较,不但本文方法在性能上更好,算法运行时间不会随着人脸数量的增加而增加,
图2
TINY-YOLO骨干网络
这对于工业应用有很大的优势,基于该算法的产品已经商用,取得较好的检测效果。
参考文献
[1]GirshickR,DonahueJ,DarrellT,etal.RichFeatureHierarchies
本系统的人脸检测算法主要在widerface数据集上进行训练。测试数据集为自己创建的明星脸数据库,有110万张图片。
训练时,对人脸数据采用了平移、旋转、部分置黑、剪切等几何变换手段,增加数据量。对数据进行了归一化以及PCA白化处理。使得所有特征具有相同的方差。消除图像中无关的信息,增强有关信息的可检测性。
训练的优化算法采用SGD,batchsize取值为64,一共训练30万个batch。开始训练的15000batch内,学习速率为
forAccurateObjectDetectionandSemanticSegmentation[C]//2014IEEEConferenceonComputerVisionandPatternRecognition(CVPR).IEEEComputerSociety,2014[2]GirshickR.FastR-CNN[J].ComputerScience,2015
[3]RenS,HeK,GirshickR,etal.FasterR-CNN:towardsreal-time
10-4,200000batch的时候减少为10-5,250000batch的时候减少为10-6。虽然在算法进行实际检测的时候我们将图片缩放为416×416,但是为了检测到不同尺度的人脸,增加模型的鲁棒
性,在训练的时候进行了多尺度训练。即将每一张图片随机地缩放到320,352,…608尺度范围内其中一个尺寸。
objectdetectionwithregionproposalnetworks[C]//Interna-tionalConferenceonNeuralInformationProcessingSystems,2015
[4]LiuW,AnguelovD,ErhanD,etal.SSD:SingleShotMulti-
BoxDetector[C]//EuropeanConferenceonComputerVision.SpringerInternationalPublishing,2016:21-37
[5]RedmonJ,DivvalaS,GirshickR,etal.YouOnlyLookOnce:
4实验结果分析
最终的人脸检测模型结合腾讯NCNN框架,在主频1.8G,内存2G的RK3288处理器平台上实际运行场景如图3所示。
Unified,Real-TimeObjectDetection[C]//ComputerVision&PatternRecognition,2016
[6]RedmonJ,FarhadiA.YOLO9000:Better,Faster,Stronger[C]
在自己创建的明星脸数据库上测试结果为precision99%、re-
call98%。而MTCNN算法的precision99.5%、recall92%。虽然系统比MTCNN模型的precision少0.5%,但是recall比MTCNN高了6%。当图片中只有一个人脸时,系统的平均运行时间为183ms,MTCNN平均时间为137ms。但是当人脸数量增加时,MTCNN的运行时间随着人脸数量的增加会显著增加,但是TINY-YOLO算法不会随着人脸数量的增加而增加。
//2017IEEEConferenceonComputerVisionandPatternRecognition(CVPR),2016:6517-6525
[7]RedmonJ,FarhadiA.YOLOv3:AnIncrementalImprovement
[J].2018
[8]WangH,LiZ,JiX,etal.FaceR-CNN[J].2017
[收稿日期:2018.11.6]
∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥(上接第46页)
参考文献
[1]马颂德,张正友.计算机视觉[M].北京:科学出版社,1998
[2]BradskiGR,KonoligeK,RubleeE.etal.ORB:Anefficientalter-
在水中遨游,模板图像和后面的图像除了角度变化外并没有其
他特别大的差别。因为我们在特征点筛选环节考虑到了2D旋转和缩放的问题,所以能够实现在这类情形下正确匹配的效果。
nativetoSIFTorSURF[C]∥2011InternationalConferenceonComputerVision,2564-2571
[3]DebelT,QronS,RubinsteinM.Best-BuddiesSimilarityforro-
由于图像质量不高,计算量较小,所以匹配速度非常快。综合实验结果来看,算法在实际应用中有出色的表现。
3结束语
busttemplatematching[C]∥ComputerVision&PatternRecognition,2015[4]Bian,Lin
本文探讨的是如何提升模板匹配算法的速度和鲁棒性。传统的算法通过计算图像块之间的相似性度量方法往往花费很多时间并且不能有效避免各种干扰带来的影响。实验结果表明,该方法具有快速鲁棒的特点,且具有稳定性。所以,对以往算法进行归纳总结并提出又快又好的算法很有研究价值,可以运用于很多具体实际场景。
WY,MatsushitaY,etal.GMS:Grid-BasedMotion
StatisticsforFast,Ultra-RobustFeatureCorrespondence[C]∥IEEEConferenceonComputerVision&PatternRecognition,
2017
[收稿日期:2018.12.19]
因篇幅问题不能全部显示,请点此查看更多更全内容