论文阅读:BlazeFace : Sub-millisecond Neural Face Detection on Mobile GPUs

前言

BlazeFace是2019年发表的文章了,在日新月异的CV界,已经是过眼云烟了。我2019年的时候曾经写过相关的文章,最近因为工作原因,需要重新阅读这篇文章,正好就随便写写。给大家做个参考。这是一个相当轻量化的网络,非常适合在边缘端实现。因此又重点来看看。
在写这个博客的过程中,加入了很多我哦自己的理解,仅供大家参考。

backbone

我曾将BlazeBlock模块组合来做了一个识别网络的backbone,发表了一篇文章。实际上深度学习的Backbone可以理解为图像中的特征提取。这个特征提取方法与传统CV算法不同的是,它是由大量的基本的非线性运算的串联和并联组合而成的,而不是传统CV算法里面的确定的函数关系。

BlazeFace用了以下的两类基本的图像特征计算单元。

Single Blaze Block 网络和Double Blaze Block网络
我其实比较好奇的是,作者采用了5X5的卷积,而非常规网络中的3X3的网络,在我之前的博客中曾讨论过,用两个3X3的卷积替代一个5X5的网络具有更好的特征表达能力,参数更少。作者在文章中主要给出了解释:

This observation implies that increasing the kernel size of the depthwise part is relatively cheap. We employ 5×5 kernels in our model architecture bottlenecks, trading the kernel size increase for the decrease in the total amount of such bottlenecks required to reach a particular receptive field size

作者主要还是从iphone的计算效率上来看,采用了5X5的卷积。

Face Detection 网络

作者设计的网络框架适用于各种对象检测任务,但是在文章中针对手机的人脸检测,并且生成 6 个面部关键点坐标(用于眼睛中心、耳垂、嘴巴中心和鼻尖),使网络能够估计面部旋转(滚动角)。

特征提取

作者采用的特征提取网络包括了5个single BlazeBlocks和6个double BlazeBlocks。其特征提取网络结构如下图所示。
在这里插入图片描述
特征提取网络将图像从128X128下采样到8X8,而非1X1。我认为作者主要考虑了人脸识别类设备的应用场景,这一类场景的人脸图像相对都比较大,其尺度变化范围也不大,特征提取网络无需兼顾大范围内的尺度变换。

anchor策略

与SSD在不同的尺度上对目标位置进行回归不同,作者只在8X8的特征图上对目标的位置进行回归。为了兼顾不同尺度的人脸,作者做了一个折中,将anchor设置为三个不同的尺度,分别为8X8,4X4,2X2大小(相对于8X8特征图的分辨率)。作者实际上在每个尺度设置了2个anchor,这一点作者没有给予说明,个人推测可能是为了增加用于后期的真实目标框的筛选,或者说增加网络的复杂度,提高网络对目标框的回归能力。

后处理

在后处理过程中,作者将边界框的回归参数估计为重叠预测之间的加权平均值。它对原始 NMS 算法几乎没有额外的成本。在作者的面部检测任务,这种调整使准确度提高了 10%。

后记

BlazeBlockFace的很多细节是针对iohone的GPU做优化的,在计算效率和检测精度方面均有比较大的提升。在banckbone方面,全部用通道可分离卷积替代了3维卷积。在目标位置回归方面,只用了最后一个特征层进行预测,降低了数据存取的时间。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值