整理的人脸系列学习经验:包括人脸检测、人脸关键点检测、人脸优选、人脸对齐、人脸特征提取等过程总结,有需要的可以参考,仅供学习,请勿盗用。https://blog.csdn.net/TheDayIn_CSDN/article/details/93199307
论文地址:https://arxiv.org/pdf/1907.05047v1.pdf
思路
最近在学习移动端人脸检测相关模型,并训练了一版基于Mobilenet_SSD的人脸检测器,在RK3399上跑双核单线程大概300ms,双线程大概200ms左右,所以速度上还是比较慢,主要是想配合人脸关键点做到实时人脸检测加关键点定位,现阶段关键点定位较为准确,所以需要更加轻量快速的人脸检测算法配合,以此来提升关键点性能。查阅发现谷歌开源了毫秒级人脸检测器blazeface,所以想探索下这款检测器在移动端平板上的性能,下面是简单的算法原理介绍,后续会给出训练实验数据。
一、论文创新点
(1)BlazeFace包括一个轻量级的特征提取网络,其灵感来自于MobileNetV1/V2,但又有所不同。还采取了一种修改过的SSD目标检测算法,使其对GPU更加友好。然后用改进的联合分辨率(tie resolution)策略来替代非极大抑制(Non-maximum suppression)。
-
提出一种在结构上与MobileNetV1/V2相关的非常紧凑的特征提取器卷积神经网络,专为轻量级对象检测而设计。
-
提出了一种基于SSD的GPU-friendly anchor机制,旨在提高GPU的利用率。Anchors是预定义的静态边界框,作为网络预测调整的基础,并确定预测粒度。
-
SSD 使用 1×1, 2×2, 4×4, 8×8, 和 16×16 的五层特征图来回归目标,为了GPU计算更友好,因此作者使用6个8×8的特征图来替换原来分别为2个2×2, 4×4, 8×8的特征图。
(2)BlazeFace可用于检测智能手机前置摄像头捕捉到的图像中的一个或多个人脸。返回的是一个边界框和每个人脸的6个关键点(从观察者的角度看左眼、右眼、鼻尖、嘴、左眼角下方和右眼角下方)。
-
提出一种替代非极大抑制的联合分辨率策略,在重叠预测之间实现更稳定、更平滑的tie resolution。
-
虽然大多数现代卷积神经网络架构(包括MobileNet)都倾向于在模型图中使用3×3的卷积核,但我们注意到深度可分离卷积计算主要由它们的点态部分控制。本研究发现,增加深度部分的内核大小成本并不会增加很多。因此,我们在模型架构中使用了5×5的卷积核,用kernel size的增加来交换达到特定receptive field大小所需的bottlenecks总数的减少。
二、网络结构
三、速度对比
MobileNetV2-SSD性能与blazeface对比,在各个移动端手机平台上耗时对比。对比结果表明,在移动设备上整体性能和耗时还是有很大提升,建议可以训练一版测试下效果,后面在给出实验结论。