yahei · 11月6日

快如闪电的人脸检测——Tengine+libfacedetection

前几天,深圳大学于仕琪老师突然开源了libfacedetection——号称最快的人脸检测项目(超越OpenCV,史上最快人脸检测系统开源 | 新智元)吸引了一大波人脸检测应用开发者围观,紧接着Tengine也立马对libfacedetection模型增加了支持,让我们一起来看看,在Tengine加持下的libfacedetection能快到什么程度吧!

libfacedetection

github项目:https://github.com/ShiqiYu/li...

模型结构

本次开源的库是基于卷积神经网络实现的,320x240模型如下图所示:
model.jpg

其整体框架参照SSD,并由若干组类似VGG的卷积层组合堆叠而成——

  • 和VGG一样,大部分降采样都由2x2最大池化完成,不过libfacedetction的入口部分则与InceptionResNet类似——由卷积层完成降采样(Inception、ResNet这种大网络喜欢一上来先来一层7x7/s2的卷积下采样,改进版则用三层3x3卷积替换7x7;像Mobilenet这些小网络就直接一层3x3/s2的下采样,这里的libfacedetection也是如此);
  • 与VGG类似的卷积层组合,两到三个带激活的卷积层一组,不同的是,VGG用若干3x3卷积堆叠作为一组,而libfacedetection则是采用【3x3 + 1x1】或【3x3 + 1x1 + 3x3】的组合,将其中一个3x3卷积层替换为1x1不仅降低了MAC而且避免了im2col
  • 比较特别的是,每一组卷积之后送去回归和分类之前都经过一个Normilization层对特征图进行归一化操作;
  • libfacedetection设置了四组锚框,总计$3600+600+140+45=4385$;
  • 参数数量约660K,乘加次数约80M(作为参照:MobileNet-v1-1.00约4.25M参数和570M次乘加运算)
    没细算,参数数量用caffemodel的文件大小简单除了个4;乘加次数则是用gluon随手搭了个主干(实际应该比这个数字更大一些),然后调mxop测算了一下MAC,粗糙数据,仅供参考。

检测效果

原图:
test_org.jpg

FP32精度输出:
test_fp32.jpg

INT8精度输出:
test_int8.jpg

性能表现

至于速度,于老师的github上已经有了与OpenCV Haar+AdaBoost的比较数据,引用至此而不再赘述:
experiment_github.png

加持Tengine的libfacedetection

用开发者版的Tengine分别在EAIDK-610(RK3399,4A53@1.4GHz+2A72@1.8GHz)和树莓派3B(BCM2837,4A53@1.2GHz)、树莓派3B+(BCM2837,4A53@1.4Hz)平台上测试libfacedetection——
使用于老师github上的caffe模型,输入大小为320x240。

EAIDK-610

CPU-CoreTime(fp32)FPS(fp32)Time(int8)FPS(int8)FPS(int8)/FPS(fp32)
1A5368.26ms14.6559.25ms16.881.1520
2A5350.66ms19.7449.61ms20.161.0213
3A5345.97ms21.7547.90ms20.880.9598
4A5342.97ms23.2746.03ms21.730.9335
1A7234.70ms28.8224.56ms40.711.4126
2A7226.41ms37.8620.59ms48.571.2828

由于大小核共同运算时速度比单个大核还慢,所以此处不列出大小核测试的数据。

  • 最快可以达到48.57FPS
  • 2A53相对于1A53有相对可观的提升,3A53、4A53就只有少量的提升了;
  • 相比于A53,大核的A72量化后能有比较明显的提升

树莓派3B

CPU-CoreTime(fp32)FPS(fp32)Time(int8)FPS(int8)FPS(int8)/FPS(fp32)
1A5393.96ms10.64104.11ms9.610.9025
2A5366.74ms14.9862.90ms15.901.0611
3A5358.03ms17.2350.73ms19.711.1438
4A5356.57ms17.6843.69ms22.891.2947

树莓派3B+

CPU-CoreTime(fp32)FPS(fp32)Time(int8)FPS(int8)FPS(int8)/FPS(fp32)
1A5389.90ms11.1294.61ms10.570.9502
2A5365.87ms15.1858.34ms17.141.1290
3A5359.76ms16.7347.99ms20.841.2451
4A5358.22ms17.1841.26ms24.241.4111

原文链接:https://hey-yahei.cn/2019/03/...

0 阅读 86
推荐阅读
1 条评论
关注数
4
文章数
13
闲来无事,胡说八道( ^・ω・^) [链接]
目录
qrcode
关注微信服务号
实时接收新的回答提醒和评论通知