14

张新栋 · 2020年04月21日

基于tensorflow的BlazeFace-lite人脸检测器

首发:https://zhuanlan.zhihu.com/p/79047443
作者:张新栋
训练的代码和资料请参考ReadMe文档中的BlazeFace相关内容,请看链接

之前的知乎专栏中给大家介绍过BlazeFace人脸检测器 BlazeFace: 亚毫秒级的人脸检测器(含代码),并基于MNN框架实现了BlazeFace的inference,整个模型大小只有200多kb,速度在目前中低端的手机上都能达到实时的速度。本篇文章,打算跟大家介绍一下如何利用tensorflow去设计一个BlazeFace人脸检测器。这里采用tensorflow作为backend的设计框架,目前的主流inference框架对于tensorflow的支持程度是相对较好的,MNN也不例外。

为什么是BlazeFace-lite呢?其实作者偷了个小懒,训练的框架中没有完全实现BlazeFace文中的后处理,感兴趣的朋友可以基于该文章的基础再做小幅度修改即可完全实现BlazeFace的工作。 本文的实现是基于Tensorflow的Object detection API 进行修改的,如何基于该API进行开发和DIY大家也可以参考文章如何DIY轻型的Mobilenet-SSD模型。本篇文章我打算以如下几步来进行说明,首先我们先简单分析一下Object detection API的框架,然后选取主要模块进行BlazeFace-Lite的修改,最后是模型配置和训练。

Object detection API

Object detectio API是google开源的物体检测的框架,主要基于tensorflow进行开发。该框架的优点是工程化的程度较高,目前许多公司都采用该框架进行生产上面的部署,可用性较强;缺点也比较明显,可定制化的程度较低,代码的可理解性较差(集成度太高)。不过不用担心,我们其实在DIY的过程中,只需要注意如下几个模块即可。

1. /research/object\_detection/models

这个目录内是检测器的的骨干架构,主要包含feature-extraction模块(如Inception、Mobilenet-v1、Mobilenet-v2等)、detection模块(SSD、Faster-RCNN)的定义和集成。

2. https://github.com/tensorflow/models/tree/master/research/slim/nets

这个目录内是检测器所采用的一些Backbone,当然你自己也可以参考该文件夹内的class进行修改。该目录中包含了很多网络结构,如Mobilenet-v1、Mobilenet-v2、VGG、Inception等等。

BlazeFace-Lite的修改

在进行网络修改的时候,我们其实只需要针对BlazeFace设计相应的models(定义blazeface extractor)、设计相应的Backbones,只需要完成这两步工作,再书写相应的config文件就可以用Object detection API进行训练。

  1. 设计相应的Backbones

BlazeFace的Backbone可以参考 BlazeFace: 亚毫秒级的人脸检测器(含代码) 这篇文章内的介绍,这里不再进行展开。基于/research/slim/nets/mobilenet\_v1.py该文件进行简单修改就可以,如下面代码:

/research/slim/nets/mobilenet\_v1.py中针对BLAZENETV1\_CONV\_DEFS进行相应的修改即可。

2. 设计相应的models

models的设计可以参考ssd\_mobilenet\_v1\_feature\_extractor.py进行修改,主要修改该文件中的preprocess预处理函数和extract\_features函数,extract\_feature的修改可以参考如下代码

这里需要注意的是from\_layer指的是从feature extraction backbone中输出的两个尺度的特种层,算法细节可以参考Blazeface的论文。

最后

完成上述几步工作后,只需要书写相应的config文件就可以进行Blazeface的训练了。完整的代码后续会上传到Github中,然后分享给大家。欢迎留言讨论,关注本专栏,谢谢大家!


参考阅读

专注嵌入式端的AI算法实现,欢迎关注作者微信公众号和知乎嵌入式AI算法实现专栏

WX20200305-192544.png
更多嵌入式AI相关的技术文章请关注极术嵌入式AI专栏

推荐阅读
关注数
16750
内容数
1233
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息