(姊妹仨)BlazeFace: 旁的我都不管,只要亚毫秒级锁定你的脸

BlazeFace是一种针对移动设备优化的人脸检测模型,旨在实现亚毫秒级的检测速度。它基于MobileNetV1/V2的轻量级结构,并采用了GPU友好的anchor机制。模型设计中,通过扩大感受野和调整卷积层顺序以减少计算成本。特征提取网络针对前置和后置摄像头分别定制,输出6个面部特征点以适应不同视角。在去重策略上,BlazeFace使用一种混合方法替代NMS,以减少检测结果的不稳定性。实验表明,BlazeFace在速度和精度上都表现出色,适用于增强现实等应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs, 2019


自说自话:因为本文提到的各种方法和手段,目的都是为了 在移动端快速地检测人脸(不包含非常细致的关键点,只包含 6 个方便确定人脸的旋转等)。所以相比其他物体检测任务来说,它的任务 相对更简单(而且前后摄像头还分开做了两个模型), 砍掉部分操作仍然能够满足人脸检测任务

Abstract

  • face detector 亚毫秒级检测速度,检测结果对后续的其他任务如 2D/3D 面部关键点检测、面部特征、表情分类、面部图像分割。
  • 一个轻量的特征提取网络,灵感来源于 MobileNet V1/V2
  • 一个 GPU 友好的 anchor 机制,来自于对 SSD 的修改
  • 一个类似 NMS 作用的策略机制,去重。

Introduction

BlazeFace 修改自 SSD,贡献在于:

  • 论速度:结构类似 MobileNet V1/V2,GPU 友好的 anchor 机制。
  • 论质量:去重效果能与 NMS 齐平。

Face detection for AR pipelines

  • 针对前后置摄像头提供不同的模型,以适应两种摄像头的焦距以及场景内物体的尺度。
  • 提供 6 个面部特征点,来应对面部旋转的情况,这样就不用仅仅输出横平竖直的矩形框。

Model architecture and design

Enlarging the receptive field sizes

现在大家都比较喜欢用小的卷积核,比如能用 3 × 3,坚决不用 5 × 5。小卷积核加上 MobileNet 的卷积分离思想,能够很大程度上降低运算量。但是在 MobileNet 基础上,还能再精进一些吗?作者发现,在实际计算中,相同设备,对 56 × 56 × 128 的 tensor 运算 3 × 3 深度分离卷积需要 0.07 ms,而后面的 1 × 1 卷积从 128 channel 到 128 channel 需要 0.3 ms,慢了 4 倍。因为有一些读取的固定时间消耗,所以这个时间差还不足够真实反应两种计算中的资源消耗对比(也就是说,去除一些固定消耗,差异会更明显)。这个发现说明了什么呢?说明增加卷积核对应的运算相对更“便宜”,那么能不能通过增大卷积核,减少 bottleneck 来达到同样的模型效果(计算就减少了),此处对应图 1 左图。

在这里插入图片描述

MobileNet V2 中的 bottleneck 包含深度的扩增 expansion 和 深度的压缩 projection,中间有个非线性变换。为了能够在中间能少一些 channel,本文将 expansion 和 projection 互换位置了,这样残差连接能接到 expansion 之后的阶段。然后因为有深度分离卷积,计算开销允许叠加两个 block 在一起作为 double BlazeBlock。这部分对应图 1 右图,可以看到从上到下先进行通道压缩 projection,再进行通道扩张 expansion,残差连接在 expansion 之后。(其实 MobileNet 是特意设计 expansion 和 projection 的顺序的,为了减少 relu 在较为靠前的位置“损伤”特征,但是这里是因为有 5 × 5 卷积核了,所以再次颠倒过来比较节省运算)。

Feature extractor

拿前置摄像头来讲,因为涉及到的场景中物体的尺度范围较小,输入 128 × 128,5 个 BlazeBlock,6 个 double BlazeBlock。通道最多有 96 个,分辨率最小是 8 × 8 (这点就不像 SSD 等其他很多特征提取了,只到 8 × 8,并没有再降低)。

Anchor scheme

有实验发现,特征图分辨率并没有很大必要降到非常低比如 1 × 1 的地步。而且 GPU 计算时需要可观的时间成本来为每个 layer 的计算做资源分配和派遣,所以如果能减少产生 anchor 的层数,也就能提升运算速度了。这部分参照下图 2,可以看到本文相对 SSD,放弃过小的分辨率特征,在 16 × 16 和 8 × 8 上产生大约同量级的 anchor 用于检测。
在这里插入图片描述

Post-processing

关于去重,因为前面最低的分辨率采用只到 8 × 8,所以产生了更多的重叠结果。而 NMS 的策略一般只产生一个 “正确答案”,实际应用中,检测结果会出现一些人眼可见的跳动。为了尽量减少这种现象,我们用混合策略取代了 NMS,该策略将边界框的回归参数估计为重叠预测之间的加权平均值。相比 NMS 算法,这个策略几乎没有额外的成本。

Experiments

Applications

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值