4. 改进:做者为了快速地检测不一样平面角下的人脸(0°~360°),经过逐级校订的路线,针对第一级检测出来的人脸,将为[-180°, 180°]的人脸翻转到[-90°, 90°]。这一步简单来讲,就是把朝下的人脸翻转为朝上,这样就减小了一半的角度范围。第二级再继续以两条±45°的轴进行翻转,将人脸的角度范围限制到[-45°, 45°]。第三级,使用角度误差回归预测精准的角度。校订流程以下:git
5. 样本划分:github
Positive, IOU > 0.7算法
Negative, IOU < 0.3网络
Suspected, IOU ∈[0.3, 0.7]ide
Positive 和 negative 用于人脸分类,positive 和suspected 用于人脸框的回归和角度校订。测试
须要说明的是,3d
三级网络的训练样本输入分别为24x24,24x24,48x48。router
对于第一级网络,人脸范围划分为2部分,人脸朝上的角度范围是[−65°,65°], 人脸朝下的范围是[-180°,-115°]∪[115°,180°],其余角度范围不做训练数据。能够定义朝上的label为0,朝下的为1。blog
对于第二级网络,人脸范围划分为3部分,分别为[-90°,-45°],[-45°,45°],[45°,90°],能够定义label分别为0,1,2。get
对于第三级网络,人脸范围为[-45°,45°],与前两个网络不一样,训练的任务是人脸角度的回归。
6. 训练细节:
每一个batch里的样本比例,positive: negative:suspected=2:2:1
max_iters:100,000
type:SGD
lr_base:0.001
gamma:0.1
lr_policy:step
step:70,000
wd:0.0005
7. 网络结构:
8. 算法介绍:
8.1 PCN-1
对于每个输入的滑窗,第一级网络有3个目标:人脸与非人脸的判断(f),人脸框的回归(t),角度的分类score(g)。
第一个目标f,使用softmax-loss,y=1 if face else 0
第二个目标t,使用 l1 loss
人脸框的回归由3部分组成,w表明宽度,(a,b)表明人脸框的左上角坐标
第三个目标g,和第一个相似使用softmax-loss, y=1 if face is up else 0
最终的loss为,λ为各个loss 的weight
第一级的人脸角度划分,根据预测的θ进行划分,0°表示人脸朝上,不翻转;180°表示人脸朝下,进行翻转。
8.2 PCN-2
第二级与第一级相似,只是角度的校订范围发生了变化,转变为[-90°,-45°],[-45°,45°],[45°,90°]
8.3 PCN-3
通过第二级的校订以后,人脸的范围已经校订到竖直的一个区域。经过直接对角度进行回归,使用的loss变为l1 loss。
最终的角度能够由3级网络检测的角度进行叠加获得。
9. 实验结果: