人脸检测算法总结:S3FD

article/2025/11/8 10:04:43

人脸检测算法总结:S3FD——Single Shot Scale-invariant Face Detector

    • Introduction
    • S3FD
    • Training
    • 结论

S3FD是中科院自动化所的一篇文章,当时一出现就刷新了wider face榜单,比上一篇提到的SSH略高一点。这个算法主要是解决小人脸的检测问题,思路和SSD类似(之前提到的SSH也和SSD类似),多个不同的featuremap预测不同的人脸,但是没有想FPN一样,将featuremap 连接。

Introduction

S3FD算法受启发于anchor-based检测算法,通过一些预定义的anchor来分类并且回归检测目标,这些预定义的不同尺度、长宽比的anchor在feature map上密集采样可以得到目标的所有可能分布区域。anchor可以向FasterRCNN一样定义于一个feature map,也可以和SSD定义在多个feature map上,anchor的spatial size(空间位置)和stride 决定了anchor的位置和采样间隔。anchor-based检测器在复杂场景下更加鲁棒,检测速度和目标大小无关,但唯一的弱点是:目标越小,检测器的性能会急速下降。

在这里插入图片描述
如上图所示,anchor-based检测方法存在问题的原因

  • 1人脸太小导致的特征较少
  • 2人脸大小和anchor以及感受野的大小不匹配
  • 3默认的离散anchor尺度,真实人脸尺度gt确是连续的,anchor对真实人脸gt的匹配度不够,造成了小人脸和非尺度范围内的人脸匹配度不高。
  • 4小尺度anchor会在背景上引来过多的非人脸的干扰。

Biased framework

anchor-based检测器漏检小目标的原因如下:

  • 1预定义的anchor,即使是位于最低的特征层,其stride依然过大,小尺度人脸目标依赖于这些最底层的特征,经过下采样只有,目标特征信息损失过大
  • 2小尺度目标,感受野,anchor的尺度不匹配。
    为了解决上述问题,提出了scale-equitable-face detection framework。将anchor预定义于不同feature map,stride尺度从4-128pix。以确保不同尺度的人脸目标可以提取足够多的特征用于下一步检测。此外,依照有效感受野,在不同featuremap上为anchor定义尺度范围为16-512pix,并采用等比例采样方式确保不同feature map上anchor的采样密度一致anchor的尺度也匹配对应featuremap感受野尺度

anchor matching strategy

在anchor-based检测器中,anchor预定义是离散的(16,32,64,128,256,512),而自然场景下人脸的尺度是连续的,会造成某些离群尺度的人脸box匹配较少,甚至匹配不到合适的预定义anchor,造成了离群人脸的低召回率。
为了解决这个问题,提出了scale compensation anchor matching strategy,其实操作很简单,1.把anchor与gtbox的iou阈值调低,2.阈值调低之后,把所匹配的anchor按iou排序,选择topN。

Background from small anchors

将anchor调小并密集采样,这些小的anchor带来海量的background negative anchor,导致过多的误检。为了解决这个问题,文章提出了max-out background labels

S3FD

在这里插入图片描述
结构及流程

  • 检测在多层独立进行,类似于SSD
  • 有Normalization layer,作者认为conv3-3、conv4-3、conv5-3的feature map激活层尺度不同,做每个通道feature map的element-wise L2正则化,有利于更好的训练和收敛,注:之后还有个re-scale的操作,类似BN的alpha、gamma参数;
  • 输出是6维,4(坐标)+2(分类)
  • conv3-3输出维度为Ns+4,Ns = Nm + 1,1对应face的分类,Nm对应maxout bg label,以去除小目标的误检
  • fc6 和 fc7 是vgg16的全连接层,这里进行了改进,调整为卷积层,并且实现stride为2的降采样。

Scale equitable framework
将anchor定义于不同的feature map,stride 尺度从4-128pix,以确保不同尺度的人脸目标可以提取足够多的特征用于下一步检测。在确定anchor在feature map上映射的位置后,我们依照有效感受野的大小,采用等比例的采样方式,确保不同feature map上anchor的采样密度一致,anchor的尺度也匹配对应feature map上有效的感受野尺度。
Designing scales for anchors:为anchor预定义合适的尺度
在这里插入图片描述

  • anchor的长宽比为1
  • stride是anchor的1/4
  • RF是根据卷积核算出来的
    在这里插入图片描述
    理论感受野和有效感受野
    理论感受野:TRF,theoretical receptive field,表示理论上输入图像区域对feature map上某个点值的影响;对于feature map上某个点,TRF根据conv的win_size和stride计算出来,一般比较大,如fig 3(a)黑色矩形框;但最终只有以TRF中心的高斯区域内输入点贡献值比较大,且贡献值按二维高斯分布向外逐步降低;
    有效感受野:ERF,effective receptive field:只有一部分(如高斯分布区域)对feature map上某个点的值有较大的贡献;如fig 3(a)白色圆形区域;基于以上理论,anchor应该匹配ERF
    Equal-proportion interval principle:EPIP,等比例采样策略
    epip保证了不同feature map上不同尺度的anchor有相同的采样密度。进而在不同尺度的人脸gt可以近似匹配相同数目的anchor。

Scale compensation anchor matching strategy

作者认为人脸的尺度是连续的,但预定义的anchor尺度是离散的,导致了小尺度人脸和离群人脸(gtbox不在anchor附近)没有anchor与它们匹配。图1c中发现,1每个人脸box的匹配的平均anchor数为3,2人脸gtbox与anchor尺度相距较远的话,很有可能无法被匹配。
为了解决这个问题,提出了SCAMS(Scale compensation anchor matching strategy),具体操作为
1:使用常规的fast rcnn的anchor与gt box的jaccard overlap匹配策略,但降低iou阈值至0.35,这样可以提升每个gt bbox匹配的anchor数目N;
2:将anchor与gt bbox的iou阈值降低至0.1,降序选取top N匹配的anchor作为与该gt bbox匹配的anchor;N为step1中的N;注:0.35~0.1 thres的降序排序;
在这里插入图片描述
如图所示,经过scams之后,小尺度人脸的anchor数量提升,离群人脸目标所匹配的anchor数量也明显提升。进而提升小尺度人脸和离群人脸的召回率。

Maxout background label
为了检测出小尺度的人脸,之前的操作是设置小的anchor,并做了密集采样,并且将anchor与gtbox匹配的阈值降为0.35,这样做的坏处就是带来了大量的background FP。如下图所示,小尺度anchor的conv3-3带来了大量的anchor,同时贡献了大部分的false positive。
在这里插入图片描述
为了解决这个问题,提出了新的分类策略来降低小尺度人脸anchor的bg fp。策略其实也很简单,针对anchor输出Nm个background标签得分,但是只选择最大score作为输出,然后再和fgscore组合成两个标签计算softmax。
只在conv3-3层应用这个分类策略,解决小anchor的false positive问题。MBL策略可以为S3FD的带来一些局部最优信息,进而降低小尺度人脸的false positive rate。

Training

在widerface上训练,进行了数据增强:color distortion, 随机裁剪, 尺度变换和水平翻转。

损失函数
损失函数和Frcnn一致,RPN的多任务优化。
在这里插入图片描述
Lcls分类loss:softmaxloss
Lreg:smooth L1回归loss
λ平衡系数。
hard negative mining
anchor匹配之后,发现大部分未被匹配的都是负样本,导致正负样本不平衡,因此采用难例挖掘,将负样本的loss值降序排序,再筛选负样本以确保正负样本比例3:1。bglabel中的Nm为3,lossfunction中的λ为4.

对比试验
在这里插入图片描述
baseline包含以下两个
RPN-face:RPN网络,6个尺度
SSD-face:SSD网络。anchor一致
S3FD(F):仅包含EPIP
S3FD(F+S):包含EPIP+SCAMS
S3FD(F+S+M):包含EPIP+SCAMS+MBL
对比:
rpn:anchor集中在最后一层,且stride为16,不利于检测小尺度的人脸,而且不同尺度的anchor共用相同的感受野
SSD:最小的stride为8,还是过大,且anchor与感受野的尺度不匹配。
S3FD(F):证明了密集采样的优势
S3FD(F+S):各种尺度人脸的高召回率,特别是离群人脸。
S3FD(F+S+M):解决了bgfp的问题。

结论

S3FD解决了anchor-based的检测器在小尺度人脸性能下降的问题。主要有三个创新点。
1.1 提出EPIP:采用类似SSD的方案,在多层feature maps上预定义多尺度的anchor,并根据合适的anchor尺度,以确保所有feature map上anchor采样密度保持一致;

1.1.1 scale-equitable framework with a wide range of anchor-associated layers:SSD的多层feature maps设置anchor并预测人脸目标的做法;

1.1.2 a series of reasonable anchor scales to handle different scales of faces:就是设置合适的anchor尺度和stride,确保不同层的anchor采样密度保持一致;

1.2 提出SCAMS提升小尺度人脸的召回率;

1.3 提出MBL降低conv3_3上检测小尺度人脸的false positive rate;

本文参考:https://zhuanlan.zhihu.com/p/36317597


http://chatgpt.dhexx.cn/article/JcZGifKy.shtml

相关文章

SSH人脸检测算法(SSH: Single Stage Headless Face Detector)

论文:《SSH: Single Stage Headless Face Detector》 链接:https://arxiv.org/pdf/1708.03979.pdf 代码链接:https://github.com/mahyarnajibi/SSH 摘要 我们介绍了单点无头(SSH)人脸检测器。与两阶段提议分类检测器…

人脸检测算法MTCNN

本文将对人脸检测效果不错的MTCNN算法做一个梳理。 论文地址 MTCNN主要分为三步: 最初先对图像进行多尺度变换,获取图像金字塔,获取图像多尺度信息。 P-net(Proposal Network): 主要使用一个全卷机网络,获取候选框…

YbFace:完全开源的人脸检测算法

YbFase(yolo base face detector),是一个借鉴了yolov3的网络结构,在多特征尺度下预测人脸框的人脸检测算法.并结合了yolov4使用的mish激活函数.该模型大小仅为7,8M,无论模型大小,还是准确率,还是执行速率都很有竞争力. 源码地址(github): face_detect 如果对你有…

适合ARM 的轻量级人脸检测算法汇总

目录 1、场景需求2、libfacedetection2.1 相关链接2.2 算法简介2.3 算法效果展示2.4 算法性能展示 3、Ultra-Light-Fast-Generic-Face-Detector-1MB3.1 相关链接3.2 算法简介3.3 算法效果展示3.4 算法性能展示 4、BlazeFace4.1 相关链接4.2 算法简介4.3 算法效果展示4.4 算法性…

opencv算法+人脸检测

文章目录 ORB算法视频读写图像人脸识别摄像头实时人脸检测 ORB算法 orb算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋转不变性。 # orb算法结合了Fast和Brief算法,提…

人脸检测算法对比分析

 https://blog.csdn.net/twinkle_star1314/article/details/53318689 人脸识别包括以下5个步骤:人脸检测、图像预处理、特征提取、匹配、结果输出。 人脸检测是人脸识别中的第一个环节,是一项关键技术。人脸检测是指假设在输入…

人脸检测算法:mtcnn简介

人脸检测算法:MTCNN简介 算法流程网络介绍训练方法 MTCNN是一个针对于人脸检测的模型, 由PNet, RNet, 和ONet三个网络组成,三个网络都比较轻量, 易于训练.基于pytorch的实现可以看我这篇: 链接: l利用celebA数据集训练MTCNN网络. 算法流程 1. 对传入P网络的图片re…

10种轻量级人脸检测算法的比拼

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 转自:https://blog.csdn.net/nihate/article/details/108798831 计算机视觉研究院专栏 作者:Edison_G 最近在微信公众号里看到…

mtcnn人脸检测算法介绍

0. 概述 MTCNN(Multi-task Cascaded Convolutional Networks,多任务卷积神经网络),是2016年由Kaipeng Zhang、Zhanpeng Zhang等提出的一种多任务人脸检测模型,该模型使用3个CNN级联算法结构,将人脸检测和人脸特征点提取同时完成。…

Matlab人脸检测算法详解

这是一个Matlab人脸检测算法详解 前言人脸检测结果算法详解源代码解析所调用函数解析bwlabel(BW,n)regionpropsrectangle 总结 前言 目前主流的人脸检测与人脸识别算法主要基于人工神经网络进行训练与检测,本文基于数字图像处理解析一个非人工神经网络的有趣人脸检…

人脸检测算法落地详解

人脸检测 Face Detection 目标:人脸检测的目的是找出一张图片中的所有人脸的位置信息 人脸检测是人脸其他应用的基础,只有获取到了是否有人脸和人脸的精确的位置信息,其它的应用才能继续开展,所以说人脸检测是一个基础且重要的一…

MATLAB人脸检测算法

MATLAB人脸检测算法 人脸检测是将人脸从复杂的背景图像中检测出来,它是实现人脸识别的基础和前提。 肤色重建 使用人脸肤色模板对灰度图像进行肤色重建,使其变成彩色图像,效果如下: 在函数function Rgray2rgb1(img1,img2)中&a…

人脸检测算法

https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html 人脸识别各论文参考 知乎一个栏目: https://zhuanlan.zhihu.com/p/25025596 首先介绍一下常用人脸检测的常用数据库: FDDB和WIDER FACE FDDB总共2845张图像&#xff0…

一文带你了解人脸检测算法的类型及其工作原理

在过去的几年里,人脸识别受到了广泛的关注,被认为是图像分析领域最有前途的应用之一。人脸检测可以考虑人脸识别操作的很大一部分。根据其强度将计算资源集中在持有人脸的图像部分。图片中的人脸检测方法很复杂,因为人脸存在可变性&#xff0…

人脸识别之人脸检测算法

人脸识别的一般步骤:人脸检测->人脸对齐->人脸特征提取->(计算人脸的差值)三元组损失/中心损失->差值小于某一阈值则为同一个人,差值大于某一阈值则不是同一人。 本文将对每一个步骤的技术现状,进行分析&a…

Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案

前言 上一节实现了题目的整理,没整理答案是不完整的,所以这一节加上答案的爬取。 上一节地址:Python网络爬虫与信息提取(16)—— 题库爬取与整理 效果 思路 爬答案有点难搞,像这种题库的答案都是要么要会员,要么要登陆账号才能看答案,这种就比较费劲了,解决方案有…

Python 网络爬虫及数据可视化

网络爬虫及数据可视化 1 项目背景1.1Python的优势1.2网络爬虫1.3数据可视化1.4Python环境介绍1.4.1简介1.4.2特点 1.5扩展库介绍1.5.1安装模块1.5.2主要模块介绍 2 需求分析2.1 网络爬虫需求2.2 数据可视化需求 3 总体设计3.1 网页分析3.2 数据可视化设计 4 方案实施4.1 网络爬…

python网络爬虫权威指南 百度云-Python网络爬虫权威指南 PDF 第2版

给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python、网络爬虫方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小5.54 MB,瑞安米切尔编写,目前豆瓣、亚马逊、当当、京东等电子书综…

【python】基础网络爬虫教程

1.爬虫目的 用通俗易懂的话来说,是对多种类型数据(如文字,图片,音频,视频等)进行批量式的采集与存储。 本文为个人一些学习心得,举例对网页进行信息爬取操作,使用python中基础的方法进行爬取,便于理解学习。2.爬虫准备 需要对python有一些基础,对字符串,列表,循环结构等有了解。…

python网络爬虫及数据可视化

广东某学校的期末python作业 一、设计内容及要求 设计内容:对中国大学专业排名网站中2021年,计算机科学与技术专业,进行数据爬取和数据可视化。 URL: https://www.shanghairanking.cn/rankings/bcmr/2021/080901 设计要求&am…