1. 关键词:rotation-invariant face detection, rotation-in-plane, coarse-to-fine
  2. 核心概括:该篇文章为中科院计算所智能信息处理重点实验室VIPL课题组,邬书哲博士在CVPR2018上的论文。论文主要针对的是在不同平面角度下的人脸检测,主题思想可以概括为Progressive Calibration Networks(PCN), 即逐步校正不同角度的人脸。
  3. 已有方法:目前,针对平面角度的人脸检测主要有3种策略,即data augmentation, divide-and-conquer, rotation router。

4. 改进:作者为了快速地检测不同平面角下的人脸(0°~360°),通过逐级校正的路线,针对第一级检测出来的人脸,将为[-180°, 180°]的人脸翻转到[-90°, 90°]。这一步简单来说,就是把朝下的人脸翻转为朝上,这样就减少了一半的角度范围。第二级再继续以两条±45°的轴进行翻转,将人脸的角度范围限制到[-45°, 45°]。第三级,使用角度偏差回归预测精准的角度。校正流程如下:

5. 样本划分:

Positive, IOU > 0.7

Negative, IOU < 0.3

Suspected,  IOU ∈[0.3, 0.7]

Positive 和 negative 用于人脸分类,positive 和suspected 用于人脸框的回归和角度校正。

需要说明的是,

三级网络的训练样本输入分别为24x24,24x24,48x48。

对于第一级网络,人脸范围划分为2部分,人脸朝上的角度范围是[−65°,65°], 人脸朝下的范围是[-180°,-115°]∪[115°,180°],其他角度范围不作训练数据。可以定义朝上的label为0,朝下的为1。

对于第二级网络,人脸范围划分为3部分,分别为[-90°,-45°],[-45°,45°],[45°,90°],可以定义label分别为0,1,2。

对于第三级网络,人脸范围为[-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. 实验结果:

  

  

  

论文笔记--PCN:Real-Time Rotation-Invariant Face Detection with Progressive Calibration Networks的更多相关文章

  1. 论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks

    论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks 2018年07月11日 14 ...

  2. 【论文笔记】DeepOrigin: End-to-End Deep Learning for Detection of New Malware Families

    DeepOrigin: End-to-End Deep Learning for Detection of New Malware Families 标签(空格分隔): 论文 论文基本信息 会议: I ...

  3. 论文笔记:SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks

    SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks 2019-04-02 12:44:36 Paper:ht ...

  4. 论文笔记:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

    2014 ICLR 纽约大学 LeCun团队 Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann ...

  5. 论文笔记:Learning Region Features for Object Detection

    中心思想 继Relation Network实现可学习的nms之后,MSRA的大佬们觉得目标检测器依然不够fully learnable,这篇文章类似之前的Deformable ROI Pooling ...

  6. 【论文笔记】张航和李沐等提出:ResNeSt: Split-Attention Networks(ResNet改进版本)

    github地址:https://github.com/zhanghang1989/ResNeSt 论文地址:https://hangzhang.org/files/resnest.pdf 核心就是: ...

  7. 论文笔记:AdaScale: Towards real-time video object detection using adaptive scalingAdaScale

    AdaScale: Towards real-time video object detection using adaptive scaling 2019-02-18 16:14:17 Paper: ...

  8. 论文笔记:ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks

    ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks2018-03-05  11:13:05   ...

  9. 论文笔记之:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

    UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS  ICLR 2 ...

随机推荐

  1. git出现错误原因解释

    原因,在pull下拉代码或者push之前,你本地还有代码没有进行commit. 引起下面的错误.   建议commit后先pull再看看有没有冲突在进行push. git.exe push --pro ...

  2. spark2.1:在RDD[unit].foreach(s=>{})内部调用sparkSession对象抛出NullPointException

    问题代码: val sample_data_combine_result=List( (0,(List(FitModel(4022,1447.92,-8.38983306721434,2.0),Fit ...

  3. Spark:性能调优

    来自:http://blog.csdn.net/u012102306/article/details/51637366 资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理 ...

  4. enumerate给列表加索引

    >>> list = ['a','b','c'] >>> for i,j in enumerate(list): print(i,j) 0 a 1 b 2 c &g ...

  5. Linux下文件权限(一)用户ID和用户组ID

    最近在读<unix环境高级编程>,看到文件权限这里比较糊涂,主要设计多个用户ID和用户组ID,包括下面两个: (1)实际用户ID和实际用户组ID:这一部分表示我们究竟是谁.这两个字段在登录 ...

  6. [C#]200 行代码使用 C# 实现区块链

    文章原文来自:Code your own blockchain in less than 200 lines of Go!,原始文章是通过 Go 语言来实现自己的区块链的,这里我们参照该文章来使用 C ...

  7. ActiveMQ笔记:一个高稳定,可扩展的的部署方案

    本文介绍一个笔者在实际工作中的实施的基于ActiveMQ的一个高稳定,可扩展的异步消息系统. ActiveMQ是一个成熟的基于Java语言的开源消息系统,在实际应用中被大量使用.ActiveMQ在系统 ...

  8. Error:ivalue require as left operant of assignment

    Error:ivalue require as left operant of assignment 解答:该错误的意思是左操作数必须为左值,这个发生错误的原因在于赋值符号的左边不能是已确定的值,如: ...

  9. 计蒜客NOIP模拟赛(2) D2T3 银河战舰

    [问题描述]    瑞奥和玛德利德是非常好的朋友.瑞奥平时的爱好是吹牛,玛德利德的爱好是戳穿瑞奥吹的牛.    这天瑞奥和玛德利德来到了宇宙空间站,瑞奥向玛德利德炫耀这个空间站里所有的银河战舰都是自己 ...

  10. 李耀于NOIP2010集训出的题 Dvalue

    此题模型比较明显,求无向图的一棵生成树,使得最大边减去最小边的值最小,这是最小生成树的一个变式 设计出此题的算法需要利用Kruskal贪心的性质,首先枚举一条最小边,接着求原图的一棵最小生成树,根据k ...