论文地址:

《2016 PAMI HyperFace: A Deep Multi-task Learning Framework for Face Detection, Landmark Localization, Pose Estimation, and Gender Recognition.
全文翻译有几处文意不同,后期慢慢进行修改。

只是大体把主要步骤描述了一遍。

由深度学习完成,将人脸检测,关键点定位,头部角度预测与性别识别相结合。

此算法用深度卷积神经网络完成(CNN:什么是卷积神经网络及其结构),此方法名称被称为Hyperface,期间融合中间层。

Hyperface的两个重要点:

1.Hyperface-ResNet基于ResNet-101模型,并在此基础上实现了很大提升

2.Fast-Hyperface针对截出的脸部区域,使用了一个很高的召回率脸部识别器,以此提高了算法速度

1.Introduction

同时使用四个任务进行预测估计,有助于提升单个任务效率。

浅层边与角落的信息敏感,因此浅层有更好的关键点位置信息

浅层处理,有助于学习关键点定位头部角度预测任务

深层更适合学习更复杂的任务,例如人脸识别性别识别

实现表明多任务学习比单任务学习效果要好,也要用好融合中间层。

两种后处理方法能有效提升识别效果:IRP与L-NMS

iterative region proposals 和 landmarks-based non-maximum suppression

深度学习网络与fusion-CNN结合相比其他的来说效果更好。

我们必须要用好深度神经网络的中间层,我们更倾向于在中间层设置hyperface的特征。

通过融合中间层,我们推出两种新的算法,Hyperface与HF-ResNet

2.Hyperface

Hyperface算法由三个模块组成:

1.生成裁剪区域框

用选择性搜索(什么是selective search)选出候选框,然后resize到227*227像素中:

2.用CNN判别该区域是否是脸部。如果是脸,那么进行另外三个判断

3.后处理阶段IPR与L-NMS,用来提高脸部检测分数与提升单个任务的性能。

2.1Hyperface的结构组成

采用Alexnet进行图像分类,每个输入图片都将被缩放成227*227大小,分rgb三个颜色维度输入。AlexNet一共8个层,包含前5个卷积层与后3个全连接层(什么是全连接层)。每一层所做的处理:请点击出查看。利用R-CNN_Face网络初始化模型

图像中卷积卷积地是什么意思呢,就是图像f(x),模板g(x),然后将模版g(x)在模版中移动,每到一个位置,就把f(x)与g(x)的定义域相交的元素进行乘积并且求和,得出新的图像一点,就是被卷积后的图像. 模版又称为卷积核.卷积核做一个矩阵的形状.

图像处理(卷积)介绍

去除了三个全连接层,因为这三个全连接层对于头部姿态估计与关键点定位不能起到帮助。

算法对于以下两项进行了拓展,从而创建自己的网络:

(1)低层特征有助于进行关键点识别与头部姿态估计,高层有助于识别与分类

(2)我们通过融合中间层的特征,来达到四个任务的目标,但并不是把所有的中间层都融合。

我们使用分开的网络融合了AlexNet的最大层1(维度:27*27*96),卷积层3(13*13*384)与池化层5(6*6*256)(具体流程)。

他们有各自的维度,因此我们添加了卷积层conv1a与conv3a,分别添加到池化层pool1与卷积层conv3后,来获取持续的feature map(6*6*256)(什么是feature map)。我们之后连接池化层pool5来形成一个6*6*768维度的feature map。

我们用一个1*1的卷积核(什么是1*1卷积核),添加到(6*6*192)里面来进行降维。

我们对于CONVall添加一个全连接层(FCall,输出3072个特征向量)。

我们将网络分为5各分支对应5个1不同的任务,我们添加:

全连接层,到FCall中。

最后一个全连接层添加到最后,连接各自的五个任务。

最后我们再添加ReLU当做激活函数,同时我们不考虑池化层。

整个算法的流程如下图所示:

3.Training

使用AFLW人脸数据库进行训练,AFLW提供脸部的21个位置标记点。我们使用损失函数(loss function)进行评估。

脸部识别,使用R-CNN的Selective Search算法来找到脸部区域。利用IOU系数(Intersection over Union),如果IOU超过0.5,那么就认为是一个正样本(即人脸),低于0.35被认为是负样本(不是人脸),其他区域被忽略。

p是区域是否是人脸的概率。概率值从最后一层的全连接层中获取。

关键点定位:

我们利用AFLW提供的脸部21点位置信息来进行定位。AFLW的数据库提供了定位信息。如下图所示

一个区域的特征有四个点信息{x,y,w,h},x,y是区域的位置,w,h是区域的宽度与高度。

上述公式,是利用可见因子(visbility factor)为衡量标准的使用欧几里得损失函数来训练关键点特征的任务。

ai,bi是训练的标签,xi,yi是真实的脸部坐标位置。xywh是人脸框。

计算预测关键点标记的损失函数如下所示:

xi,yi是第i个被网络预测的关键点标记,N是关键点个数(在本文中,利用AFLW是21个),vi是可见因子,它只能是1或者0,当为1时,代表该关键点可见,0的时候代表关键点不可见。因为图像中会出现偏着头的情况,例如上图中关键点有可能没有全部被标注。

3.3Testing

我们使用selective search来选出区域,

在最后两步中,Hyperface加入了两步算法第一个是IPR,第二个是L-NMS(什么是NMS)。

IRP(iterative region proposals):

我们使用selective search的快速版本,从一张图片中抽取出两千个区域,我们将此版本成为FAST_SS.

网络可能因为低分数而没有检测到部分人脸。因此需要一个更加精准的检测器,我们由此发明了一个新的候选区域,这个候选区域来源于预测关键点,通过使用了FaceRectCalculator提供的预测关键点(AFLW人脸数据库提供21个人脸关键点)。

L-NMS:传统的NMS方法,是采用选取分数最高的区域,并抛掉分数超过阈值的区域,去除冗杂区域,如下图所示。

传统方法有两个缺点:

1.如果对于一张相同的脸来说,该区域有着最高的分数,较少的重复度,那么有可能被认为是一个单独分开的人脸。

2.最高得分的区域,可能不是每次都精准的定位到人脸上,如果两张脸靠的很近,可能会有矛盾。

为了克服这些困难,我们提出了新的算法L-NMS。

我们在一个新的区域上,边界为

其算法步骤为:

  1. 获取检测区域
  2. 获取检测区域区域的基准值
  3. 精准区域的坐标位置,获取上述1的四个值
  4. 从与区域重叠中提取人脸
  5. 对每张人脸进行迭代
  6. 获取最高值的前K个区域
  7. 中和前K个区域的值
  8. 确定最终的姿态(根据前K个)
  9. 获取最终性别
  10. 获取最终可见度
  11. 获取最终的区域
  12. 算法结束

Hyperface人脸检测算法相关推荐

  1. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

  2. RetinaFace,最强开源人脸检测算法

    作者 | CV君 来源 | 我爱计算机视觉(ID:aicvmlaicvmlaicvml) 人脸检测为目标检测的特例,是商业化最早的目标检测算法,也是目前几乎各大 CV 方向 AI 公司的必争之地. W ...

  3. 【CV】10种轻量级人脸检测算法大PK | 代码集合开源

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 最近在微信公众号 AIZOO 里看到轻量级人脸检测算法大盘点的文章 ...

  4. 大盘点|轻量级人脸检测算法实现,快到没朋友的都在这里了~

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理:公众号@OpenCV中文网 本文仅做学术分享,如有侵权,请联系删除. 人脸检测是计算机视觉中的老 ...

  5. 一文综述人脸检测算法(附资源)

    文章来源:SIGAI 本文共9400字,建议阅读10+分钟. 本文将和大家一起回顾人脸检测算法的整个发展历史. [导读] 人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证 ...

  6. 1500+ FPS!目前最快的CNN人脸检测算法开源

    1500+ FPS!目前最快的CNN人脸检测算法开源 项目地址: https://github.com/ShiqiYu/libfacedetection 深圳大学的于仕琪老师发布的人脸检测库:libf ...

  7. 一种改进的快速人脸检测算法

    人脸检测是计算机视觉及相关领域的关键技术,在智能人机交互.视频会议.安全监控等方面都有着广阔的应用前景.目前人脸检测方法主要有基于知识的方法和基于统计学习的方法[1].其中,基于知识的检测算法首先抽取 ...

  8. 人脸检测算法_目前最强!开源人脸检测算法:RetinaFace

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  9. 10种轻量级人脸检测算法大PK

    几个月前,AIZOO曾经盘点过 最强六大开源轻量级人脸检测项目分析 | 附打包下载,nihate同学将它丰富到10种算法,并用Python.对他们进行了汇总整理,以及效果的对比. Github链接:h ...

最新文章

  1. 130. Surrounded Regions 被围绕的区域
  2. Maven精选系列--三种仓库详解
  3. centos 卸载ffmpeg_Linux下ffmpeg的完整安装
  4. java 7.函数-递归_带有谓词的Java中的函数样式-第2部分
  5. Android 源码分析 Activity的启动模式
  6. lisp画垫圈_晓东CAD家园-论坛-LISP/VLISP程序库-[LISP程序]:俺的画内六角圆柱头螺钉的LISP程序-见附件 - Powered by Discuz!...
  7. 54. mysqli 扩展库
  8. 基本知识 100024
  9. plsql使用存储过程添加数据
  10. 解决12306登录验证码python
  11. linux定时任务每小时_在Linux平台下每5、10或15分钟执行一次定时任务(Cron Job)...
  12. 月入2万的10个小生意项目
  13. 基于最大最小思想优化拉丁超立方采样
  14. Android接入支付宝实现支付功能
  15. win10,GTX1650配置cuda10.1,cudnn7.6.5,cv2环境参考
  16. BERT代码的解读1---数据处理部分
  17. js 三个点(...),扩展运算符说明
  18. 100万算大钱还是小钱?
  19. 我终于明白了!!!类、成员变量、方法、以及如何定义他们,还有static到底干啥用?
  20. 基于php的开题报告,基于php的微信web应用开发开题报告.doc

热门文章

  1. idea分析java内存溢出_IDEA内存溢出解决办法
  2. 从Git安装、配置远程仓库到免输入密码推送一次搞掂
  3. 船用计算机控制电缆,ZR-DJYPVP32计算机控制电缆2*2*1.5价格
  4. 零基础学习3dmax建模有这4个技巧!你都知道?小白学习必备
  5. 黎曼猜想被证明了?“他的证明甚至不能算是个错误”!阿蒂亚爵士的证明受到同行质疑...
  6. mybatis根据id批量更新mysql_MyBatis中的IN操作,根据ID列表批量更新
  7. 【JavaScript】使用js实现冒泡排序
  8. 【JavaScript】事件
  9. 聊天 AI 软件的简单实现
  10. fastapi-分页查询-FastAPIPagination