MTCNN阅读笔记

参考资料1
参考资料2
论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks
论文链接:https://arxiv.org/abs/1604.02878
官方代码链接:https://github.com/kpzhang93/MTCNN_face_detection_alignment

MTCNN(Multi-task Cascaded Convolutional Networks)算法是用来同时实现face detection和alignment,也就是人脸检测和对齐。文章一方面引入了cascaded structure(级联架构),另一方面在训练阶段提出一种新的 online hard sample mining, 用于提升训练精度。

1. 人脸检测的级联网络

文章的核心思想是原文的这一句话:our framework adopts a cascaded structure with three stages of carefully designed deep convolutional networks that predict face and landmark location in a coarse-to-fine manner. (我们的框架采用了三级精心设计的深层卷积网络的级联结构,可以粗略地预测人脸和地标位置)。

首先照片会按照不同的缩放比例,缩放成不同大小的图片,形成图片的特征金字塔。PNet 主要获得了人脸区域的候选窗口和边界框的回归向量。并用该边界框做回归,对候选窗口进行校准,然后通过非极大值抑制(NMS)来合并高度重叠的候选框。RNet 将经过 PNet 的候选框在 RNet 网络中训练,然后利用边界框的回归值微调候选窗体,再利用 NMS 去除重叠窗体。ONet 功能与 RNet 作用类似,只是在去除重叠候选窗口的同时,同时显示五个人脸关键点定位。

该算法的cascaded structure 主要包含三个子网络:Proposal Network(P-Net)、Refine Network(R-Net)、Output Network(O-Net),如Fig.1 所示。这3个stage对人脸的处理是按照一种由粗到细的方式,也就是原文中说的 a coarse-to-fine manner,在代码中体现得比较明显。另外要注意的是在Fig.1中一开始对图像做了multi scale的resize,构成了图像金字塔,然后这些不同scale的图像作为3个stage的输入进行训练,目的是为了可以检测不同尺度的人脸。
Fig1 级联框架PIPELINE
Fig.2中对三个级联网络进行详细介绍。
P-Net主要用来生成一些候选框(bounding box)。 在训练的时候该网络的顶部有3条支路用来分别做人脸分类、人脸框的回归和人脸关键点定位;在测试的时候这一步的输出只有N个bounding box的4个坐标信息和score,当然这4个坐标信息已经用回归支路的输出进行修正了,score可以看做是分类的输出(是人脸的概率),具体可以看代码。
R-Net主要用来去除大量的非人脸框。 这一步的输入是前面P-Net生成的bounding box,每个bounding box的大小都是24x24,可以通过resize操作得到。同样在测试的时候这一步的输出只有M个bounding box的4个坐标信息和score,4个坐标信息也用回归支路的输出进行修正。
O-Net和R-Net有点像,只不过这一步还增加了landmark位置的回归。 输入大小调整为48x48,输出包含P个bounding box的4个坐标信息、score和关键点信息。
在这里插入图片描述

2. 网络训练

采用三个任务来训练CNN检测器:面部/非面部分类 (face/non-face classification), 边界框回归(bounding box regression)和面部界标定位(facial landmark localization)。
(1) face classification损失函数:
采用的是交叉熵,它分类算法常用的损失函数,在这里是二分类问题。
Face Classification损失函数
(2) bounding box regression损失函数
采用欧氏距离损失(L2 loss),它是回归问题常用的损失函数。
bounding box regression损失函数
(3)facial landmark localization损失函数
同样采用欧氏距离损失(L2 loss)。
facial landmark localization损失函数
因为在训练的时候并不是对每个输入都计算上述的3个损失函数,因此定义了公式4用来控制对不同的输入计算不同的损失。可以在出,在P-Net和R-Net中,关键点的损失权重(α)要小于O-Net部分,这是因为前面2个stage重点在于过滤掉非人脸的bbox。β存在的意义是比如非人脸输入,就只需要计算分类损失,而不需要计算回归和关键点的损失。
training loss
Online hard sample mining 具体而言是这样做的:In particular, in each mini-batch, we sort the loss computed in the forward propagation phase from all samples and select the top 70% of them as hard samples. Then we only compute the gradient from the hard samples in the backward propagation phase.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值