人脸检测——RetinaFace

news/2024/10/28 18:36:17/

RetinaFace: Single-stage Dense Face Localisation in the Wild

作者: 帝国理工,伦敦米德尔塞克斯大学,InsightFace
paper: https://arxiv.org/pdf/1905.00641.pdf
github: https://github.com/deepinsight/insightface/tree/master/RetinaFace

摘要: 虽然在未受控制的人脸检测方面取得了巨大进步,但野外准确有效的面部定位仍然是一个开放的挑战。这篇文章提出了一个强大的单阶段人脸检测器,名为RetinaFace,它利用联合监督和自我监督的多任务学习,在各种人脸尺度上执行像素方面的人脸定位。具体来说,我们在以下五个方面做出了贡献:(1)我们在WIDER FACE数据集上手动注释五个面部标志,并在这个额外的监督信号的帮助下观察硬面检测的重要改进。 (2)我们进一步增加了一个自监督网格解码器分支,用于与现有的受控分支并行地预测像素三维形状的面部信息。 (3)在WIDER FACE硬测试装置上,RetinaFace的性能优于现有技术平均预测(AP)1.1%(达到AP等于91.4%)。 (4)在IJB-C测试集上,RetinaFace使最先进的方法(ArcFace)能够改善他们在面部验证中的结果(FAR = 1e-6的TAR = 89.59%)。 (5)通过采用轻量级骨干网络,RetinaFace可以在单个CPU内核上实时运行,以实现VGA分辨率的显示。

1. 人脸检测任务引言

  1. 与通用物体检测不同,人脸检测具有较小的比率变化。1:1到1:1.5
  2. 但是人脸的尺度变化比较大,从几个像素到几千个像素
  3. 借鉴MTCNN,加入5个人脸关键点,提升检测算法在hard部分的精度
  4. 通过自监督学习使用网格解码器分支来预测与现有监督分支并行的像素级三维人脸形状

2. 相关工作

图像金字塔or特征金字塔

一阶段or二阶段

背景建模

SSH等通过在特征图中引入上下文建模提高小人脸的检测。可变性卷积(DCN)也有助于提高精度

多目标损失

在人脸检测中加入人脸关键点的检测有助于提高box的回归精度。如果MASK RCNN增加一个分割分支一样。

3. Retinaface

3.1 多损失

  • 分别是分类(focal loss),box回归(IOU loss),人脸关键点,密集的回归损失(这个不懂)

3.2 密集回归损失

  • 采用mesh decoder来编码连接形状和纹理信息
    。。。这个不太懂

4. 实验

  • 采用wider face数据进行训练
  • 根据图片的清晰质量,标注了人脸的5个关键点,有些不可见的则不标注
    在这里插入图片描述

4.2 应用细节

  • 加入了FPN
  • 在5个金字塔特征图中加入了独立的上下文模块提高建模能力
  • 还用可变形卷积网络(DCN)替换了横向连接和上下文模块中的所有3×3个卷积层
  • 多正样本,采用同样的损失头和不同的特征图在计算多损失
  • anchor的设定:在从P2到P6的特征金字塔级别上使用特定比例的锚点
    在这里插入图片描述
  • 采用OHEM优化正负anchor不平衡的问题

图像增强

  • 因为wider face有20%的小人脸,于是在增强的时候,以图像的短边为基准,随机resize [0.3, 1],在调整成640*640的方形块,如果人脸的中心点在方形块中,则保留这个人脸。

测试策略

  • 翻转,多尺度,投票策略(实际应用这些都没啥用),不过竞赛的时候,这些还是很有用的。

分析

  • 加DCN有用,0.x的提升
  • 加上关键点分支有用, 1左右的提升
    在这里插入图片描述

文章创新点

  1. 整个模型整合了:人脸检测、人脸对齐、像素级的人脸分析、3D密集通信回归(这个不太懂)。
  2. 通过利用强监督和自监督多任务损失函数来实现上述功能。
    在这里插入图片描述
  3. 基于单阶段设计,我们提出了一种名为RetinaFace的新型像素智能人脸定位方法,该方法采用多任务学习策略同时预测人脸分数,面部框,五个点和三维位置。每个面部像素的对应关系
  4. Mesh Decoder使用图卷积神经网络进行加速

结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章的思路(最关键)

  1. 为了速度,所以在一阶段的通用检测器上进行改进,而retina检测算法又是当前精度最高的。
  2. 加入了上下文建模模块,DCN等小的部件
  3. 加入了人脸关键点分支,这个确实有一定作用
  4. 多损失函数的融合。
  5. 自监督方法的引入。(个人认为这是最可以借鉴的一点,也是借鉴之后具有通用性和可复制性的一点)

http://www.ppmy.cn/news/662007.html

相关文章

人脸识别——FaceBook的DeepFace、Google的FaceNet、DeepID

DeepFace--Facebook的人脸识别 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[] 连续看了DeepID和FaceNet后,看了更早期的一篇论文,即FB的DeepFace。这篇论文早于DeepID和FaceNet,但其所使用的方法在…

Face-recognition实现人脸识别

文章目录 1.前置知识点(1)Opencv中矩形,绘制文本(2)Opencv中基础的知识点(3)face_recognition.face_locations(img1ToRGB)(4)face_recognition.face_encodings(img1ToRGB…

face_recognition 人脸识别

前言 之前实践了下face在线人脸识别版本,这回做一下离线版本。github 上面有关于face_recognition的相关资料,本人只是做个搬运工,对其中的一些内容进行搬运,对其中一些例子进行实现。 官方描述: face_recognition …

DeepFace--Facebook的人脸识别

连续看了DeepID和FaceNet后,看了更早期的一篇论文,即FB的DeepFace。这篇论文早于DeepID和FaceNet,但其所使用的方法在后面的论文中都有体现,可谓是早期的奠基之作。因而特写博文以记之。 DeepFace基本框架 人脸识别的基本流程是…

人脸识别之特征脸方法(Eigenface)

人脸识别之特征脸方法(Eigenface) zouxy09qq.com http://blog.csdn.net/zouxy09 因为需要,花了一点时间写了下经典的基于特征脸(EigenFace)的人脸识别方法的Matlab代码。这里仅把该代码分享出来。其实,在…

RetinaFace

文章目录 一、数据处理1. wider_face.py2. data_augment.py 二、默认框生成三、网络框架四、损失函数box_utils.pymultibox_loss.py五、与MTCNN对比MTCNNRetinaFace 一、数据处理 RetinaFace的数据处理脚本主要有wider_face.py和data_augment.py两个文件。 1. wider_face.py …

FaceNet--Google的人脸识别

引入 随着深度学习的出现,CV领域突破很多,甚至掀起了一股CV界的创业浪潮,当次风口浪尖之时,Google岂能缺席。特贡献出FaceNet再次刷新LFW上人脸验证的效果记录。 本文是阅读FaceNet论文的笔记,所有配图均来自于论文。…

人脸识别系列(十七):ArcFace/Insight Face

论文链接:ArcFace: Additive Angular Margin Loss for Deep Face Recognition 作者开源代码:https://github.com/deepinsight/insightface 这篇论文原名是ArcFace,但是由于与虹软重名,后改名为Insight Face。 其实这篇论文可以看…