face r-cnn是腾讯ai实验室的做品,并且登陆过腾讯ai实验室官网,发现果真硕果累累,不得不佩服。html
人脸检测虽然相对以前有了不小的进步,但是仍是由于真实世界中人脸图像的明显变化致使仍然极具挑战。
算法
- softmax loss函数:该函数倾向于区分特征之间的类间可分性,不能获取类内的紧凑性。
而前人的工做已经证实了对于CNN特征,不论是类间可分性,仍是类内紧凑性都十分重要。为了减小类内变化而且拉大类间距离,做者在Faster R-CNN框架的原有loss函数上增长了一个新的loss函数叫作center loss。经过增长center loss,类内变化能够有效的减少,相对的让学到的特征辨别力加强。
为了进一步提高检测的准确度,这里采用了在线硬样本挖掘(online hard example mining, OHEM)和多尺度训练策略。网络
为了延续faster rcnn的辉煌,做者:架构
- 在该架构上增长了一个新的多任务loss函数去扶助训练有无人脸的二值分类器;
- 用在线硬样本挖掘算法生成硬样本以供后续处理;
- 使用多尺度训练策略去帮助提高检测性能。
如图所示该网络结构包含一个ConvNet,一个RPN,和一个Fast RCNN模块:- ConvNet:是一个卷积层和最大池化层的堆叠,用来生成卷积feature map;
- RPN:该模块生成一系列的矩形区域候选框,这些候选框大几率都包含了人脸。是一个全卷积网络,构建在卷积feature map上。该RPN的loss层包含一个二值分类层和一个边界框回归层;
- Fast R-CNN:生成的区域候选框会被送入Fast RCNN模块,并做为ROI区域。ROI层处理这些ROIs去提取固定长度的特征向量。最终输出到两个分开的全链接层用于分类和回归。
face rcnn与经典的faster rcnn的差异不在RPN部分,而是在对应的fast r-cnn中,做者基于一个新提出的center loss,设计了一个新的多任务loss函数。以下面所述。app
center loss函数被证实在人脸识别任务中有很好的效果,center loss的基本思想是鼓励网络学习辨识性特征,以此来最小化类内变化,同时扩大类间变化。center loss的公式:
框架
对于RPN阶段,采用的是多任务loss,该loss是基于结合box-分类loss和box-回归loss:ide
- 分类loss:关因而前景仍是背景的二分类的softmax loss;
- 回归loss:这里采用的是平滑L1范式。
对于fast r-cnn阶段,咱们基于以前提到的center loss设计了一个多任务loss。咱们使用center loss和softmax loss结合来做为分类任务的loss;而后用平滑L1 loss做为边界框回归的任务。整个loss函数形式以下:
函数
在线硬样本挖掘(online hard example mining, OHEM)是一个简单可是十分有效的引导技术。关键的想法是收集硬样本,即那些预测不正确的,将这些样本输送给网络以加强分辨性。由于loss能够表示当前网络拟合的程度,因此能够经过他们的loss将生成的候选框进行排序,而后只提取前N个最差的样本做为硬样本。性能
标准的OHEM会遇到数据不平衡的问题,由于选择的硬样本可能其中负样本的量极可能压倒性的超过正样本的量(或者反过来)。而且注意到,当使用center loss的时候,保持正和负的训练样本的平衡对于训练阶段来讲十分重要。最后,咱们在正样本和负样本上分别独立使用OHEM,并在每一个mini-batch中将正负样本的比例保持1:1.
在训练的时候,OHEM与SGD交替的执行。对于一次SGD迭代,OHEM是经过前向一次当前的网络实现的。而后将选择的硬样本在下一次迭代中使用。学习
做者设计了一个多尺度训练方法:在训练过程当中,将原始图片缩放到不一样尺寸,这样学到的模型就能更适应小分辨率的人脸;在预测阶段,也进行对应的多尺度预测,而后将不一样尺度下预测的边界框在结合到最终的输出中。
咱们使用在基于ImageNet上预训练好的VGG19,在RPN阶段,锚是具备多个尺度和长宽比例的:
- 与ground-truth的IOU超过0.7的视为正样本;
- 与ground-truth的IOU低于0.3的视为负样本。
在fast rcnn阶段:
- 将IOU超过0.5的为正样本;
- IOU在0.1到0.5之间的视为负样本。
在RPN的候选框上须要执行NMS,在其阈值为0.7,一共生成2k个候选框,这些候选框随后经过OHEM方法选择硬样本用于给fast rcnn作训练。其中RPN的batch-size为256;fast rcnn的batch-size为128.
在预测阶段,NMS的阈值为0.3。
参考文献: