深度学习RetinaFace人脸检测简要介绍

Posted 超级无敌陈大佬的跟班

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习RetinaFace人脸检测简要介绍相关的知识,希望对你有一定的参考价值。

介绍

Insight Face在2019年提出的最新人脸检测模型,原模型使用了deformable convolution和dense regression loss, 当时在 WiderFace 数据集上达到SOTA。

基网络有三种结构,基于ResNet的ResNet50和ResNet152版本能提供更好的精度,以及基于mobilenet(0.25)的轻量版本mnet,检测速度更快。

简化版mnet结构

RetinaFace的mnet本质是基于RetinaNet的结构,采用了特征金字塔的技术,实现了多尺度信息的融合,对检测小物体有重要的作用,RetinaNet的结构如下:

简化版mnet与RetinaNet的区别除了在于主干网络的选择上使用了mobilenet做到了模型的轻量化,最大的区别在于检测模块的设计。mnet使用了SSH检测网络的检测模块,SSH检测模块由SSH上下文模块组成,上下文信息结构位于网络末尾的检测头位置。

上下文结构模块细节:

这部分是文章一个比较重要的理解点,下面手绘图有上下文信息的结构图(个人感觉和inception有点类似)和Retinaface的几个亮点。

附一个专业点的解释:

  • Context Modelling:提升模型的上下文模块推理能力以捕获微小人脸,SSH和PyramidBox在特征金字塔上用context modules扩大欧几里德网格的感受野。
  • 为了提高CNNs的非刚性变换建模能力,可变形卷积网络(deformable convolution network, DCN)采用了一种新的可变形层对几何变换进行建模

原文链接:https://blog.csdn.net/flyfor2013/article/details/105337298

网络的Loss函数:

多任务组合loss:

(1)人脸分类loss Lcls(pi,pi*),这里的pi是anchor i为人脸的预测概率,对于pi * 是1是positive anchor,0代表为negative anchor。分类loss Lcls是softmax loss 在二分类的情况(人脸/非人脸)。

(2)人脸框回归loss,Lbox(ti,ti*),这里的ti={tx,ty,tw,th},ti * ={tx *,ty *,tw * ,th *}分别代表positive anchor相关的预测框和真实框(ground-truth box)的坐标。我们按照 [16]对回归框目标(中心坐标,宽和高)进行归一化,使用Lbox(ti,ti *)=R(ti-ti *),这里R 是 Robust loss function(smooth-L1)(参考文献16中定义)

(3)人脸的landmark回归loss Lpts(li,li *),这里li={l x1,l y1,...l x5,l y5},li *={l x1 *,l y1 *,...l x5 *,l y5 *}代表预测的五个人脸关键点和基准点(ground-truth)。五个人脸关键点的回归也采用了基于anchor中心的目标归一化。

(4)Dense回归loss Lpixel (参考方程3)。loss调节参数 λ1-λ3 设置为0.25,0.1和0.01,这意味着在监督信号中,我们增加了边界框和关键点定位的重要性,也侧面反应最后那个Dense 任务loss重要性比较低。

Pytorch-RetinaFace 详解(带代码讲解):

https://zhuanlan.zhihu.com/p/157297085

以上是关于深度学习RetinaFace人脸检测简要介绍的主要内容,如果未能解决你的问题,请参考以下文章

基于Facenet+Retinaface+Pytorch实现卷积神经网络(CNN)人脸识别

facenet-retinaface快速复现 实现 facenet-retinaface-pytorch 人脸识别 windows上 使用cpu实现

facenet-retinaface快速复现 实现 facenet-retinaface-pytorch 人脸识别 windows上 使用cpu实现

人脸检测—Retinanetface

实现人脸识别APP

什么是mtcnn人脸识别能力?