0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谷歌公布亚毫秒级的人脸检测算法BlazeFace

DPVg_AI_era 来源:lq 2019-07-18 09:41 次阅读

谷歌近日公布亚毫秒级的人脸检测算法BlazeFace,这是一款专为移动GPU推理量身定制的轻量级人脸检测器,能够以200~1000+ FPS的速度运行,且性能非常卓越!

近年来,深度神经网络的各种架构改进使得实时目标检测成为可能。实验室可以不计一切地开发各种算法追求逼近极限的精度,而实际应用中,响应速度、能耗和精度都重要。这就要求算法的复杂度要低、适合硬件加速。

在移动应用中,实时目标检测往往只是视频处理流程的第一步,接下来是各种特定的任务,如分割、跟踪或几何推理。

因此,运行对象检测模型推理的算法要尽可能快,最好还具有比标准实时基准更高的性能。

谷歌刚刚上传到arXiv的一篇论文BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs,推出了BlazeFace算法,这是一款专为移动GPU推理量身定制的轻量级人脸检测器,且性能非常卓越!

有多卓越呢?谷歌在其旗舰设备测试,结果发现BlazeFace能够以200~1000+ FPS的速度运行。

这种超实时性能使其能够应用于任何需要准确的面部区域,作为特定模型输入的增强现实应用中,例如2D/3D面部关键点或几何估计、面部特征或表情分类、以及面部区域分割等。

谷歌已经把该算法应用在工业中。

两大算法创新,一切为了又快又好

BlazeFace包括一个轻量级的特征提取网络,其灵感来自于MobileNetV1/V2,但又有所不同。还采取了一种修改过的SSD目标检测算法,使其对GPU更加友好。然后用改进的联合分辨率(tie resolution)策略来替代非极大抑制(Non-maximum suppression)。

BlazeFace可用于检测智能手机前置摄像头捕捉到的图像中的一个或多个人脸。返回的是一个边界框和每个人脸的6个关键点(从观察者的角度看左眼、右眼、鼻尖、嘴、左眼角下方和右眼角下方)。

算法创新包括:

1、与推理速度相关的创新:

提出一种在结构上与MobileNetV1/V2相关的非常紧凑的特征提取器卷积神经网络,专为轻量级对象检测而设计。

提出了一种基于SSD的GPU-friendly anchor机制,旨在提高GPU的利用率。Anchors是预定义的静态边界框,作为网络预测调整的基础,并确定预测粒度。

2、与预测性能相关的创新:

提出一种替代非极大抑制的联合分辨率策略,在重叠预测之间实现更稳定、更平滑的tie resolution。

BlazeBlock (左) 和 double BlazeBlock

BlazeFace的模型架构如上图所示,在设计方面考虑了以下4个因素:

扩大感受野(receptive field)的大小:

虽然大多数现代卷积神经网络架构(包括MobileNet)都倾向于在模型图中使用3×3的卷积核,但我们注意到深度可分离卷积计算主要由它们的点态部分控制。

本研究发现,增加深度部分的内核大小成本并不会增加很多。因此,我们在模型架构中使用了5×5的卷积核,用kernel size的增加来交换达到特定receptive field大小所需的bottlenecks总数的减少。

深度卷积的低开销还允许我们在这两个点卷积之间引入另一个这样的层,从而进一步加速达到所需receptive field。这形成了一个double BlazeBlock,如上图右边所示。

特征提取器(Feature extractor):

在实验中,我们将重点放在前置相机模型的特征提取器上。它必须考虑更小的对象范围,因此具有更低的计算需求。提取器采用128×128像素的RGB输入,包含一个2D卷积,以及5个BlazeBlock和6个 double BlazeBlock,如下表所示:

改进的Anchor 机制:

类似于SSD的对象检测模型依赖于预定义的固定大小的基本边界框,称为priors,或者Faster-R-CNN中提出的术语“Anchor”。

我们将 8×8,4×4 和 2×2 分辨率中的每个像素的 2 个 anchor 替换为 8×8 的 6 个 anchor。由于人脸长宽比的变化有限,因此将 anchor 固定为 1:1 纵横比足以进行精确的面部检测。

pipeline示例。红色:BlazeFace的输出。绿色:特定于任务的模型输出。

后处理机制(Post-processing):

由于我们的feature extractor并没有将分辨率降低到8×8以下,所以与给定对象重叠的anchor的数量会随着对象的大小而显著增加。在典型的非极大抑制场景中,只有一个anchor“胜出”,并被用作最终的算法结果。当这样的模型应用于随后的视频帧时,预测往往会在不同的anchor点之间波动,并表现出明显的人脸框抖动。

为了最小化这个问题,我们用一种混合策略代替了抑制算法,该策略将一个边界框的回归参数估计为重叠预测之间的加权平均值。它实际上不会给原始的NMS算法带来额外的成本。对于我们的人脸检测任务,这个调整使准确率提高了10%。

专为GPU设计,准确度超越MobileNetV2

超实时性能。解锁需要面部区域作为输入的“任务特定”模型的实时AR pipeline:

准确的3D面部几何

通过Blendshapes进行Puppeteering

面部分割

AR化妆试穿/美化

头发/嘴唇/虹膜重新着色

磨皮

专为移动GPU设计

专为移动GPU和CPU设计

轻量级特征提取网络

更适合GPU的anchor方案

改进了tie resolution策略

GPU上的快速推理

精度

眼间距离的平均绝对误差为10%左右就足够精确了

后续模型的面对齐

生成6个面部关键点坐标

在低端设备上仅使用此模型,实现耳朵等简单特效

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6126

    浏览量

    104902
  • 神经网络
    +关注

    关注

    42

    文章

    4732

    浏览量

    100393
  • 人脸识别
    +关注

    关注

    76

    文章

    4002

    浏览量

    81641

原文标题:亚毫秒级手机人脸识别!谷歌BlazeFace算法重大突破, 面向移动GPU

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    人脸检测算法及新的快速算法

    最近几年的人脸检测算法和一种新的快速算法,与大家探讨特征、弱分类器、收敛准则、样本选择等对人脸检测性能的影响,并尝试分析
    发表于 09-26 15:13

    基于openCV的人脸检测系统的设计

    通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类库openCV进行人脸检测系统的设计,实现了对出现在视频或图像中
    发表于 12-23 14:19

    ARM嵌入式环境中FDDB第一的人脸检测算法的运行

    YSQ(于仕琪)人脸检测介绍:YSQ人脸检测算法实现快速从视频帧中检测人脸并提取关键信息,支持多
    发表于 07-29 06:49

    基于ToF的3D活体检测算法研究

    什么是活体检测?什么又是3D活体检测?以及怎么实现恶劣环境(如人脸遮挡、恶劣光照等)与人脸多姿态变化(如侧脸、表情等)应用场景下的活体检测
    发表于 01-06 07:30

    分享一款高速人脸检测算法

    目前优化了一款高速人脸检测算法,在 ARM设备的A73单核CPU(图像大小:860*540最小人脸大小:60*60)速度可以高达10-15ms每帧,真正的实时人脸
    发表于 12-15 07:01

    RK3399Pro是怎样去移植Tencent的mtcnn人脸检测算法

    RK3399Pro是怎样去移植Tencent的mtcnn人脸检测算法的?有哪些移植步骤?
    发表于 02-15 06:15

    基于层叠支持向量机的人脸检测研究

    提出一种基于层叠支持向量机的人脸检测算法,用于复杂背景灰度图像的人脸检测算法首先用线性支持向量机进行粗筛选,滤去大量非
    发表于 06-04 10:22 9次下载

    基于肤色的实时人脸检测算法研究

    研究了一种基于肤色的人脸检测算法的设计与实现过程。在YIQ颜色空间中,进行了有效的肤色提取,把提取到的肤色与背景图像信息转为二值图像进行形态学降噪处理,再采用质心定位
    发表于 05-05 16:54 25次下载
    基于肤色的实时<b class='flag-5'>人脸</b><b class='flag-5'>检测算法</b>研究

    基于openCV的人脸检测识别系统的设计

    通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类库openCV进行人脸检测系统的设计,实现了对出现在视频或图像中
    发表于 06-15 10:53 477次下载
    基于openCV<b class='flag-5'>的人脸</b><b class='flag-5'>检测</b>识别系统的设计

    基于几何特征与新Haar特征的人脸检测算法_糜元根

    基于几何特征与新Haar特征的人脸检测算法_糜元根
    发表于 03-19 19:25 2次下载

    一种复杂环境下鲁棒的精确人脸检测算法(结合VIOLA-JONES和CLM模型)

    的人脸检测算法成为人脸识别技术中一个重点关注的问题和研究热点。伴随着自动人脸识别技术的发展,人脸检测
    发表于 10-30 14:09 4次下载
    一种复杂环境下鲁棒的精确<b class='flag-5'>人脸</b><b class='flag-5'>检测算法</b>(结合VIOLA-JONES和CLM模型)

    支持向量机的人脸快速检测

    对自然状态下(多姿态、遮挡和光照等苛刻条件)人脸进行检测依然是具有挑战性问题。 为提高传统支持向量机无约束人脸检测算法检测精度,基于可变形
    发表于 01-23 13:54 1次下载

    人脸图像质量检测算法的原理及在小区人脸识别闸机中的应用

    人脸识别一样,图像质量检测算法(FQ)也是基于特征提取原理,通过神经网络从海量数据中学习获取人脸质量检测关注的特征(主要包括光线、模糊、角度、遮挡、表情、噪声等)并进行质量判断。每个
    发表于 10-09 10:45 1285次阅读

    基于tensorflow的BlazeFace-lite人脸检测

    之前的知乎专栏中给大家介绍过BlazeFace人脸检测BlazeFace: 毫秒
    发表于 02-07 11:39 0次下载
    基于tensorflow的<b class='flag-5'>BlazeFace</b>-lite<b class='flag-5'>人脸</b><b class='flag-5'>检测</b>器

    BlazeFace: 毫秒的人脸检测器(含代码)

    人脸检测是一个很常用的算法,可应用在许多业务中,可为应用提供人脸所在图片区域的坐标信息,一般用(xmin, ymin, xmax, ymax)的坐标格...
    发表于 02-07 12:27 0次下载
    <b class='flag-5'>BlazeFace</b>: <b class='flag-5'>亚</b><b class='flag-5'>毫秒</b><b class='flag-5'>级</b><b class='flag-5'>的人脸</b><b class='flag-5'>检测</b>器(含代码)