人脸检测--Face Detection with End-to-End Integration of a ConvNet and a 3D Model

Face Detection with End-to-End Integration of a ConvNet and a 3D Model ECCV2016 mxnet code:https://github.com/tfwu/FaceDetection-ConvNet-3D

Faster R-CNN 在目标检测上表现出优异性能,本文将其应用于人脸检测,并根据人脸的特殊性做出相应的修改. 本文提出一个简单有效的方法将 ConvNet and a 3D model 结合起来实现端对端人脸检测

将 Faster R-CNN应用人脸检测问题,面临两个问题: 1)RPNs 中需要预定义一组 anchor boxes,这就可能在训练中引入了冗余的 parameter tuning,在检测中不稳定 2)RoI pooling layer without exploiting the underlying object structural configurations,RoI pooling layer 没有深入挖掘物体结构信息,很多类别的物体的结构可能没有共性,但是对于固定的人脸结构信息还是比较容易提取利用的。

主要修改的地方有两点:1)在RPN中取消 heuristic design of predefined anchor boxes,用一个 3D mean face model 代替,2)根据人脸结构信息用一个 configuration pooling layer 取代 the generic RoI (Region-of-Interest) pooling layer 本文是基于 facial key-points 检测来做人脸检测的

1.2 Method Overview 本文使用了 十个人脸特征点: “LeftEyeLeftCorner”, “RightEyeRightCorner”, “LeftEar”, “Nose-Left”, “NoseRight”, “RightEar”, “MouthLeftCorner”, “MouthRightCorner”, “Chin-Center”, “CenterBetweenEyes” 先上个图有个感性认识:

3 The Proposed Method 3.1 3D Mean Face Model and Face Representation 本文一个 3D mean face model 由 n 个 3D 人脸特征点表示,数学上具体为一个 n × 3 矩阵。我们从 AFLW dataset 中的 3D mean face model,里面由21个特征点,这里我们选择了10个特征点。

假定一个人脸 f,由 它的 3D 映射参数 表示其 旋转平移信息,我们从图像中提取到对应的 2D 特征点信息,这里 2D 特征点信息和 3D 模型有一个对应关系 这里我们通过学习得到一个 CNN网络用于 估计这个 3D transformation parameters,就是对每个检测到的特征点估计出对应的 3D mean face model,然后得到人脸矩形框候选区域,再对每个人脸预测出更准确的人脸特征点 The key idea is to learn a ConvNet to (i) estimate the 3D transformation parameters (rotation and translation) w.r.t. the 3D mean face model for each detected facial key-point so that we can generate face bounding box proposals and (ii) predict facial key-points for each face instance more accurately.

3.2 The Architecture of Our ConvNet

网络结构分解: 1)Convolution, ReLu and MaxPooling Layers,采用了VGG网络设计, 5 groups and each group has 3 convolution and ReLu consecutive layers followed by a MaxPooling layer except for the 5th group,最终的特征图缩小了 16倍 2)An Upsampling Layer,因为我们是对比预测的特征点和检测到的特征点位置信息,所以需要放大特征图保留更多的 spatial 信息,upsample the feature maps to 8 times bigger in size,使用 deconvolution 3) A Facial Key-point Label Prediction Layer,11 labels (10 facial key-points and 1 background class) 用于计算 classification Softmax loss 4) A 3D Transformation Parameter Estimation Layer 3D 模型参数估计: 8 parameters 5) A Face Proposal Layer 人脸候选区域提取 6)A Configuration Pooling Layer 将人脸的十个特征点信息组合起来进行池化 7) A Face Bounding Box Regression Layer 对人脸矩形框位置进行回归微调

3.3 The End-to-End Training

这里主要介绍了损失函数的定义

4 Experiments

Results on FDDB

Results on FDDB

AFW dataset

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

622
来自专栏MelonTeam专栏

ArrayList源码完全分析

导语: 这里分析的ArrayList是使用的JDK1.8里面的类,AndroidSDK里面的ArrayList基本和这个一样。 分析的方式是逐个API进行解析 ...

4729
来自专栏xingoo, 一个梦想做发明家的程序员

AOE关键路径

这个算法来求关键路径,其实就是利用拓扑排序,首先求出,每个节点最晚开始时间,再倒退求每个最早开始的时间。 从而算出活动最早开始的时间和最晚开始的时间,如果这两个...

2637
来自专栏刘君君

JDK8的HashMap源码学习笔记

3298
来自专栏ml

朴素贝叶斯分类器(离散型)算法实现(一)

1. 贝叶斯定理:        (1)   P(A^B) = P(A|B)P(B) = P(B|A)P(A)   由(1)得    P(A|B) = P(B|...

3597
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

2222
来自专栏计算机视觉与深度学习基础

Leetcode 114 Flatten Binary Tree to Linked List

Given a binary tree, flatten it to a linked list in-place. For example, Given...

2098
来自专栏desperate633

LeetCode Invert Binary Tree题目分析

Invert a binary tree. 4 / \ 2 7 / \ / \1 3 6 9 to4 / \ 7 2 / \ / \9 6 3 1 Tri...

981
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1260
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1524

扫码关注云+社区