Retinaface简介

精确的人脸定位是表情识别,ID识别的先决条件,所以精确的定位人脸是网络首要解决的问题。Retinaface是来自insightFace2019年提出,基于one-stage的人脸检测网络。融合了特征金字塔网络FPN(使网络适用于检测不同尺度的人脸)和上下文检测SSH(通过环境信息增强感受野改善检测效果)

resnet face_特征提取


可以进行基础的特征提取Retinaface在实际训练的时候使用两种网络作为主干特征提取网络。分别是MobilenetV1-0.25和Resnet。使用Resnet可以实现更高的精度,使用MobilenetV1-0.25可以在CPU上实现实时检测。MobileNet模型是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络。核心思想便是深度可分离卷积depthwise separable convolution,可以大大减少模型的参数。网络通过14层卷积层不断进行特征提取和下采样,将最后三个特整层输入加强特征提取网络。

resnet face_特征提取_02


增强特征提取网络由两部分构成:FPN和SSH。

与Retinanet类似的是,Retinaface使用了FPN的结构,对Mobilenet最后三个shape的有效特征层进行FPN结构的构建。首先利用1x1卷积对三个有效特征层进行通道数的调整。调整后利用Upsample和Add进行上采样的特征融合。

SSH使用了三个并行结构,利用3x3卷积的堆叠代替5x5与7x7卷积的效果:左边的是3x3卷积,中间利用两次3x3卷积代替5x5卷积,右边利用三次3x3卷积代替7x7卷积。

网络整体结构图如下:

resnet face_resnet face_03

输入网络后可以得到三个特整层,需要通过这三个特征层预测结果:Retinaface的预测结果分为三个,分别是分类预测结果,框的回归预测结果和人脸关键点的回归预测结果。

分类预测Face classification结果用于判断先验框内部是否包含物体,框的回归预测结果用于对先验框进行调整获得预测框,人脸关键点的回归预测结果Face box regression用于对先验框进行调整获得人脸关键点,每一个人脸关键点需要两个调整参数,一共有五个人脸关键点:眼睛,鼻尖,嘴角。

Facenet简介:

谷歌人脸识别算法,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性,提出使用 cnn + triplet mining 方法。通过卷积神经网络,将人脸映射到紧凑欧式空间的特征向量上,映射空间中的平方L2 距离对应人脸的相似性,最后用128字节的基于三重损耗的紧凑128_映射表示人脸的特征。不同图片人脸特征的距离较大;通过相同个体的人脸的距离,总是小于不同个体的人脸这一先验知识训练网络。测试时只需要计算人脸特征特征向量,然后计算距离使用阈值即可判定两张人脸照片是否属于相同的个体。

facenet的主干网络起到提取特征的作用,原版的facenet以Inception-ResNetV1为主干特征提取网络。本设计主要采用mobilenetv1,可以提高实时检测的效果。主干提取网络如下图:

resnet face_特征向量_04

利用主干特征提取网络我们可以获得一个特征层,进行全连接。将输出转换为一个128字节的特征向量。
在获得一个长度为128的特征向量后,将特征向量进行L2 标准化处理。L2标准化就是每个元素/L2范数;2范数极为欧几里得范数,即向量元素绝对值的平方和再开方。