Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks

论文主要的三个贡献:

(1)       揭示了检测和对齐之间的内在联系;

(2)       提出了三个CNN级联的网络结构;

(3)       提出了一种对于样本的新的hard mining的算法;

整个算法流程如下:

Stage 1:采用全卷积神经网络,即P-Net,去获得候选窗体和边界回归向量。同时,候选窗体根据边界框进行校准。然后,利用NMS方法去除重叠窗体。

stage 2:R-Net,将经过P-Net确定的包含候选窗体的图片在R-Net网络中 训练,网络最后选用全连接的方式进行训练。利用边界框向量微调候选窗体,再利用NMS去除重叠窗体。

stage 3:O-Net,网络结构比R-Net多一层卷积,功能与R-Net作用一样,只是在去除重叠候选窗口的同时,显示五个人脸关键点定位。

训练

MTCNN特征描述子主要包含3个部分,人脸/非人脸分类器,边界框回归,地标定位。

人脸分类

上式为人脸分类的交叉熵损失函数,其中,pi为是人脸的概率,yidet为背景的真实标签。

边界框回归:

上式为通过欧氏距离计算的回归损失。其中,带尖的y为通过网络预测得到,不带尖的y为实际的真实的背景坐标。其中,y为一个(左上角x,左上角y,长,宽)组成的四元组。

地标定位:

和边界回归一样,还是计算网络预测的地标位置和实际真实地标的欧式距离,并最小化该距离。其中,,带尖的y为通过网络预测得到,不带尖的y为实际的真实的地标坐标。由于一共5个点,每个点2个坐标,所以,y属于十元组。

多个输入源的训练

整个的训练学习过程就是最小化上面的这个函数,其中,N为训练样本数量,aj表示任务的重要性,bj为样本标签,Lj为上面的损失函数。

还有一点注意的是:在训练过程中,为了取得更好的效果,作者采用了一种新的hard mining 策略,它是在线的,而目前大多数都是offline即检测完之后再进行mining。具体做法就是:每次前向传播完一个batch的样本之后,根据loss对这些样本进行排列,选择前70%的样本反向传播它们的梯度,即认为这70%的样本是hard sample,并且忽略剩下的30%的easy sample对网络优化的影响。
测试流程参见附图,对图像进行金字塔处理,笔者用的缩放系数是1.3,注意pnet是全图计算,得到的featureMap上每个点对应金字塔图上12*12的大小,然后是否通过分类阈值进行窗口合并(NMS)和人脸框位置矫正。在pnet和rnet阶段,笔者实验发现人脸框位置矫正在NMS之前能提高召回率,在onet阶段,为避免同一人脸输出多个框,将NMS操作放在人脸框位置矫正之后。

在训练过程中,y尖和y的交并集IoU(Intersection-over-Union)比例:

0-0.3:非人脸

0.65-1.00:人脸

0.4-0.65:Part人脸

0.3-0.4:地标

训练样本的比例,负样本:正样本:part样本:地标=3:1:1:2

《Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks》的更多相关文章

  1. [论文阅读] Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)

    相关论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 概论 用于人脸检测和对 ...

  2. 《Attention Augmented Convolutional Networks》注意力的神经网络

    paper: <Attention Augmented Convolutional Networks> https://arxiv.org/pdf/1904.09925.pdf 这篇文章是 ...

  3. 《DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks》研读笔记

    <DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks>研读笔记 论文标题:DSLR-Quality ...

  4. 谣言检测(ClaHi-GAT)《Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks》

    论文信息 论文标题:Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks论文作者:Erx ...

  5. 声源定位之2精读《sound localization based on phase difference enhancement using deep neuarl networks》

    2.1.1 题目与摘要 1.为什么要增强IPD? The phase differences between the discrete Fourier transform (DFT) coeffici ...

  6. 论文讨论&&思考《Deformable Convolutional Networks》

    这篇论文真是让我又爱又恨,可以说是我看过的最认真也是最多次的几篇paper之一了,首先deformable conv的思想我觉得非常好,通过end-to-end的思想来做这件事也是极其的make se ...

  7. 《SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS》论文阅读

    背景简介 GCN的提出是为了处理非结构化数据(相对于image像素点而言).CNN处理规则矩形的网格像素点已经十分成熟,其最大的特点就是利用卷积进行①参数共享②局部连接,如下图: 那么类比到非结构数据 ...

  8. 论文解读 - Composition Based Multi Relational Graph Convolutional Networks

    1 简介 随着图卷积神经网络在近年来的不断发展,其对于图结构数据的建模能力愈发强大.然而现阶段的工作大多针对简单无向图或者异质图的表示学习,对图中边存在方向和类型的特殊图----多关系图(Multi- ...

  9. 论文解读(Geom-GCN)《Geom-GCN: Geometric Graph Convolutional Networks》

    Paper Information Title:Geom-GCN: Geometric Graph Convolutional NetworksAuthors:Hongbin Pei, Bingzhe ...

随机推荐

  1. MT【30】椭圆的第二定义解题

    问题:上式表示的区域是怎样的? 解答:利用椭圆第二定义易知当取等号时为椭圆,又令$y$趋向于$+\infty$时不等号不成立,故可以判断为椭圆内部区域. 评:利用mathmatics软件容易得到

  2. linux ssh keys

    1. 原理: SSH 密钥对总是成双出现的,一把公钥,一把私钥.公钥可以自由的放在您所需要连接的 SSH 服务器上,而私钥必须稳妥的保管好. 所谓"公钥登录",原理很简单,就是用户 ...

  3. SQL Server 查

    注:where语句是条件,后面加and或者or 时间日期:比时间需要时间加引号 模糊查询:where语句后面加like  '%包含此关键字%'或者'以此关键字开头%'或者'%结尾' 排序查询:列名 o ...

  4. A1101. Quick Sort

    There is a classical process named partition in the famous quick sort algorithm. In this process we ...

  5. DOM表格操作

    注意:就算代码中不包含<tbody>标签,浏览器解析时也可能会自动添加,因此需要注意子元素的选择 表格操作用到的属性: 1.tHead 2.tBodies 3.tFoot 更为细致的有: ...

  6. jQuery层级选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 面向对象【day08】:问答式面相对象(四)

    本节内容 1.什么是面向对象编程 2.什么是市类?什么是对象?又有什么关系? 3.什么时候适用面向对象? 4.self就是调用当前方法的对象 5.封装.继承.多态 6.字段方法 1.什么是面向对象编程 ...

  8. Linux命令之rm

    rm命令 用处:删除文件 用法:在终端上输入rm加上要删除的文件的名字(如果有的话,包括后缀) 示例: (我要删除newfile这个文件)

  9. Java中 break continue return 的区别

    1.break break :跳出当前循环:但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环: ; i < ; i++) { ) { break; // 在执行 ...

  10. Java编程思想 学习笔记10

    十.内部类  可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性.然而必须要了解,内部类和组合是 ...