BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs

news/2024/12/22 2:36:50/

Abstract

我们提出了BlazeFace,这是一种轻量级且性能优异的面部检测器,专为移动GPU推理而设计。它在旗舰设备上运行速度可达200到1000+ FPS。这种超实时性能使其能够应用于任何增强现实管道中,作为任务特定模型的输入来准确识别面部感兴趣区域,例如2D/3D面部关键点或几何估计、面部特征或表情分类以及面部区域分割。我们的贡献包括一个轻量级的特征提取网络,该网络受到MobileNetV1/V2的启发但有所不同,基于单次多框检测器(SSD)修改的适合GPU的锚点方案,以及一种改进的替代非极大值抑制的平局分辨策略。

1. Introduction

近年来,深度网络中的各种架构改进([4, 6, 8])使实时物体检测成为可能。在移动应用中,这通常是视频处理管道中的第一步,接下来是特定任务的组件,如分割、跟踪或几何推理。因此,物体检测模型的推理必须尽可能快,最好性能远高于标准的实时基准。

我们提出了一种新的面部检测框架,称为BlazeFace,该框架针对移动GPU推理进行了优化,并改编自单次多框检测器(SSD)框架[4]。我们的主要贡献包括:

  1. 与推理速度相关的改进: 1.1. 一个非常紧凑的特征提取卷积神经网络,结构上与MobileNetV1/V2 [3, 9]相关,专门为轻量级物体检测设计。 1.2. 一个基于SSD [4]修改的新型GPU友好锚点方案,旨在有效利用GPU资源。锚点[8],或SSD术语中的先验,是预定义的静态边界框,作为网络预测调整的基础,并确定预测的精细度。

  2. 与预测质量相关的改进:一种替代非极大值抑制[4, 6, 8]的平局解决策略,在重叠预测之间实现了更稳定、更平滑的平局解决。

2. 增强现实管道中的面部检测

虽然提出的框架适用于各种物体检测任务,但本文的重点是在手机摄像头取景器中检测面部。我们为前置和后置摄像头构建了单独的模型,原因是它们的焦距不同,捕获的物体大小也通常不同。

除了预测轴对齐的面部矩形外,我们的BlazeFace模型还生成6个面部关键点坐标(用于眼睛中心、耳屏、嘴巴中心和鼻尖),使我们能够估计面部旋转角度(滚动角度)。这使得能够将旋转后的面部矩形传递到视频处理管道的后续任务阶段,从而减少了后续处理步骤中对显著平移和旋转不变性的要求(见第5节)。

3. 模型架构和设计

BlazeFace模型架构围绕以下讨论的四个重要设计考虑因素构建。

扩大感受野尺寸

虽然大多数现代卷积神经网络架构(包括MobileNet [3, 9] 版本)倾向于在整个模型图中使用3×3卷积核,但我们注意到深度可分离卷积计算主要由它们的逐点部分主导。在一个尺寸为s×s×c的输入张量上,k×k深度卷积涉及s²ck²次乘加操作,而后续的1×1卷积到d输出通道则包含s²cd次操作,其与深度部分的操作差异因子为d/k²。

例如,在Apple iPhone X上使用Metal Performance Shaders实现时,使用16位浮点数运算的3×3深度卷积对56×56×128张量的计算时间为0.07毫秒,而后续的从128到128通道的1×1卷积则慢4.3倍,为0.3毫秒(由于固定成本和内存访问因素,这与纯算术操作数量差异并不完全一致)。

这一观察表明,增加深度部分的卷积核尺寸的成本相对较低。我们在模型架构瓶颈中采用5×5卷积核,使用卷积核尺寸的增加来减少达到特定感受野尺寸所需的瓶颈总数(见图1)。

MobileNetV2 [9]的瓶颈包含深度增加的扩展和深度减少的投影逐点卷积,由非线性操作隔开。为了适应中间张量中较少的通道数,我们交换了这些阶段,使瓶颈中的残差连接在“扩展”的通道分辨率下操作。

最后,深度卷积的低开销使我们能够在这两个逐点卷积之间引入另一个深度卷积层,加快了感受野尺寸的进展。这构成了BlazeFace高级抽象层的瓶颈——双BlazeBlock的精髓(见图1,右)。

特征提取器

具体来说,我们以前置摄像头模型的特征提取器为例。它需要处理的物体尺度范围较小,因此计算需求较低。提取器接收128×128像素的RGB输入,包括一个2D卷积,随后是5个单BlazeBlock和6个双BlazeBlock(完整布局见附录A中的表4)。最高张量深度(通道分辨率)为96,最低空间分辨率为8×8(与SSD相比,SSD的分辨率降低至1×1)。

后处理

由于我们的特征提取器未将分辨率降低到8×8以下,随着物体大小的增加,重叠给定物体的锚点数量显著增加。在典型的非极大值抑制(NMS)场景中,只有一个锚点“胜出”并作为最终算法结果。当将此类模型应用于后续的视频帧时,预测往往在不同的锚点之间波动,并表现出时间抖动(人类可察觉的噪声)。

为了尽量减少这种现象,我们用一种混合策略代替了抑制算法,该策略通过对重叠预测的加权平均来估计边界框的回归参数。它对原始NMS算法几乎没有额外成本。对于我们的面部检测任务,这一调整使准确度提高了10%。

我们通过将几个略有偏移的相同输入图像版本传递给网络,观察模型结果(调整以考虑平移)受到的影响来量化抖动。经过描述的平局解决策略修改后,抖动度量——定义为原始和位移输入的预测之间的均方根差——在我们的前置摄像头数据集上下降了40%,在包含较小面部的后置摄像头数据集上下降了30%。

4. 实验

我们在一个包含66K张图像的数据集上训练了我们的模型。在评估过程中,我们使用了一个由2K张图像组成的私有地理多样性数据集。对于前置摄像头模型,由于其预期的使用场景,仅考虑那些占据图像面积超过20%的面部(对于后置摄像头模型,该阈值为5%)。

为了保持尺度不变性,我们将回归参数误差通过眼间距离(IOD)进行归一化处理,测得的中位绝对误差为7.4%的IOD。通过上述提到的程序评估的抖动指标为IOD的3%。

表1展示了平均精度(AP)指标(使用标准的0.5交并比匹配阈值)和所提出的前置人脸检测网络在移动GPU上的推理时间,并将其与使用相同锚点编码方案的基于MobileNetV2的目标检测器(MobileNetV2-SSD)进行了比较。我们在推理时间评估中使用了16位浮点模式下的TensorFlow Lite GPU框架。

表3展示了由于模型尺寸较小而导致的回归参数预测质量的下降量。正如在以下章节中探讨的,这并不一定会导致整个AR管线质量的成比例下降。

5. Applications

所提出的模型在整个图像或视频帧上运行,可以作为几乎任何与人脸相关的计算机视觉应用的第一步,例如2D/3D人脸关键点、轮廓或表面几何估计、人脸特征或表情分类以及人脸区域分割。因此,计算机视觉管线中的后续任务可以根据合适的人脸裁剪来定义。结合BlazeFace提供的少量人脸关键点估计,这个裁剪也可以旋转,使得裁剪内的人脸居中、尺度归一化并且滚转角度接近零。这消除了任务特定模型对显著平移和旋转不变性的需求,从而允许更好的计算资源分配。

我们通过一个具体的人脸轮廓估计例子来说明这种管线方法。在图3中,我们展示了BlazeFace的输出(即预测的边界框和人脸的6个关键点,红色)如何通过更复杂的人脸轮廓估计模型进一步优化,应用于一个略微扩展的裁剪。详细的关键点产生了更精确的边界框估计(绿色),可以在后续帧的跟踪中重复使用,而无需再次运行人脸检测器。为了检测这种计算节约策略的失败情况,轮廓模型还可以检测人脸是否确实存在并且在提供的矩形裁剪中合理对齐。每当这一条件被违反时,BlazeFace人脸检测器将再次在整个视频帧上运行。

本文描述的技术正推动着主要的AR自我表达应用以及手机上的AR开发者API


http://www.ppmy.cn/news/1516578.html

相关文章

从数据生成到图数据库:Linux下Neo4j的CSV导入

文章目录 简介找到import文件夹准备csv表格数据导入neo4jTeacherStudent 简介 介绍如何在Linux系统中设置和使用Neo4j数据库。 首先,找到Neo4j的import文件夹,通常位于Neo4j安装目录下的data文件夹内,并展示通过neo4j.conf配置文件查找和修…

MySQL 数据库的规范化与反规范化详解

在数据库设计中,规范化(Normalization)和反规范化(Denormalization)是两个重要的概念,它们直接影响数据的存储效率、数据一致性以及查询性能。本文将详细介绍 MySQL 中的第一范式、第二范式和第三范式&…

qt圆环饼状图,非常小的窗口都能显示

非常小的窗口都能显示 QT core gui charts#include <QtCharts> using namespace QtCharts;//创建饼状图 void MainWindow::createpieSewies() {//饼状图QPieSeries * my_pieSeries new QPieSeries();//中间圆与大圆的比例my_pieSeries->setHoleSize(0.35);//…

Python知识点:如何使用PostgreSQL与Psycopg2进行数据库操作

要使用PostgreSQL与Psycopg2进行数据库操作&#xff0c;首先需要确保你的环境中已经安装了PostgreSQL和Psycopg2库。以下是一个简单的指南&#xff0c;展示如何使用Psycopg2与PostgreSQL进行连接和执行基本的数据库操作。 1. 安装Psycopg2 如果你还没有安装Psycopg2&#xff…

【SQL基础】【leetcode】SQL50题

查询 &#xff08;1&#xff09;可回收且低脂的产品 题目链接 SELECT product_id FROM Products WHERE low_fatsY AND recyclableY;很简单&#xff0c;最基础的sql语句。 &#xff08;2&#xff09;寻找用户推荐人 题目链接 SELECT name FROM Customer WHERE referee_id …

嵌入式面经篇十——驱动开发

文章目录 前言一、驱动开发1、Linux 驱动程序的功能是什么?2、内核程序中申请内存使用什么函数?3、内核程序中申请内存和应用程序时申请内存有什么区别?4、自旋锁和信号量在互斥使用时需要注意什么?在中断服务程序里面的互斥是使用自旋锁还是信号量?5、驱动卸载异常可能是…

了解一下 CSS 的了解font-variant-alternates属性

font-variant-alternates 是 CSS Fonts 模块中的一个属性&#xff0c;它允许你控制字体的变体&#xff08;variants&#xff09;和替代字形&#xff08;alternate glyphs&#xff09;的显示。这个属性提供了比 font-variant 更细粒度的控制&#xff0c;特别是当字体包含多种样式…

计算机毕业设计hadoop++hive微博舆情预测 微博舆情分析 微博推荐系统 微博预警系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 知识图谱

1.selenium爬取微博热搜、文章、评论数据存入mysql数据库&#xff0c;对评论lstm情感分析模型建模分析; 2.使用mapreduce对mysql中微博数据清洗&#xff0c;转为.csv文件上传hdfs文件系统&#xff1b; 3.使用hive建库建表,导入.csv数据集&#xff1b; 4.一半指标hive_sql进行离…