本文来自《DSFD: Dual Shot Face Detector》,时间线为2018年10月,是南理工Jian Li在腾讯优图实验室实习时候的作品。在WIDER FACE,FDDB上效果也超过了PyramidBox和SRN。

0 引言

最近在比赛上拿到最好成绩的人脸检测模型大致可以分成2类:

  • 基于RPN的网络,这种网络是2阶段模型
  • 基于SSD这种一次shot检测,直接预测边界框和置信度。

而一次shot的检测器因其高预测速度和简单的系统设计而更受青睐。不过分析下来,仍然有以下三个问题未完全解决:

  • 特征学习:当前特征金字塔网络(feature pyramid network,FPN)广受应用,然而FPN只是将high-level和low-level的输出网络层简单合并了下,并未考虑到当前层的信息,而且基于锚之间的上下文关系信息都被忽略了;
  • loss设计:主流使用的是目标检测中传统的loss函数,为了解决类别不平衡问题,Focal loss可以重点关注一个稀疏的硬样本的训练。为了使用所有原始和增强的特征,《Feature agglomeration networks for single stage face detection》提出层级loss以更有效训练网络。然而上面这些loss函数都没考虑到feature map在不同level上需要渐进学习的能力;
    ps:平滑L1 loss有助于阻止梯度爆炸
  • 锚匹配策略:基本上,每个feature map上面的预定义锚集合是通过在图片上平铺不同尺度和长宽比的框完成的。许多别人先前的工作分析了锚的合理尺度和锚的补偿策略,以此来增加正锚的数量。然而这些策略忽略了数据增强中的随机采样。人脸尺度的连续性和大量不同尺度的锚仍然会导致负锚和正锚之间比例的差距

本文提出了一个新的人脸检测框架叫DSFD(dual shot face detector),其继承了SSD的结构:

  • 首先,结合PyramidBox中low-level的FPN与RFBNet中的感受野块(receptive field block,RFB),提出一个特征增强模块(feature enhance module,FEM)来增强特征的判别性和鲁棒性;
  • 其次,受到《Feature agglomeration networks for single stage face detection》中层级loss(hierarchical loss)和PyramidBox中的金字塔锚的启发,将更小的锚平铺到higher-level feature map cell上可以获得更多关于分类的语义信息和更多关于检测的高分辨率定位信息。提出渐进锚loss(progressive anchor,loss,PAL),通过一组更小的锚去计算辅助有监督loss,以辅助特征学习;
  • 最后,提出一个改进锚匹配方法(improved anchor matching,IAM),在DSFD中融合锚划分策略和基于锚的数据增强方法去,以提供更好的回归器初始化,让锚和ground-truth人脸尽可能匹配。


图1显示更小的锚平湖和改进的锚与ground-truth人脸的匹配可以消除尺度和遮挡的问题,从而提升人脸检测性能。

1 结构

1.1 DSFD的结构(Pipeline of DSFD)

DSFD的结构如图2。

作者也采用如PyramidBox和S3FD中一样的策略,通过扩展VGG16作为DSFD的基底骨干网络,即将VGG16的全连接层替换成其他辅助的卷积层。作者选择conv3_3,conv4_3,conv5_3,conv_fc7,conv6_2,conv7_2作为first shot检测器层,以生成6个original feature maps,其对应命名为,\(of_1\),\(of_2\),\(of_3\),\(of_4\),\(of_5\),\(of_6\);然后,作者提出的FEM可以将这些original feature maps 转换成6个增强的feature maps,其对应命名为\(ef_1\),\(ef_2\),\(ef_3\),\(ef_4\),\(ef_5\),\(ef_6\),它们与对应的original feature maps有相同的size,通过将他们输入到SSD类型的头部,以此构建second shot 检测层。注意到训练图片的输入size是640,这意味着lowest-level层到highest-level层的feature map的size 从160到5。不同于S3FD和PyramidBox,在使用FEM对感受野增强和新的锚设计策略后,原则上就没必要让(stride,锚,感受野)这三个size满足等比例间隔原则。因此,DSFD更灵活也更鲁棒。同时,original和enhanced shot有2个不同的loss。分别被命名为第一次shot渐进式锚loss(first shot progressive anchor loss, FSL)和第二次shot渐进式锚loss(second shot progressive anchor loss, SSL)。

1.2 特征增强模块(Feature Enhance Module)

这里提出的FEM模块主要是为了增强original features 让特征变得更据辨识性和鲁棒性。对于当前锚\(a(i,j,l)\),FEM会利用包含当前层锚\(a(i-1,j-1,l)\),\(a(i-1,j,l)\),...\(a(i,j-+1,l)\),\(a(i+1,j+1,l)\)和上层锚\(a(i,j,l+1)\)的不同维度信息。具体的,关联锚\(a(i,j,l)\)的feature map cell可以通过数学定义:

这里\(c_{i,j,l}\)是在第\(l\)层中feature maps上坐标为\((i,j)\)的cell,\(f\)表示扩张卷积(dilation convolution),逐元素相乘和上采样操作的组合,\(\gamma, \delta\)分别表示当前层信息和上一层信息。

如图3所示,其是FEM的原理,主要是受到FPN和RFB的启发。这里:

  • 首先用1x1卷积核去归一化feature maps;
  • 然后,上采样上一层feature maps并与当前层进行逐元素相乘;
  • 最后,将feature maps划分成3个部分,并连接对应的3个子网络,每个子网络包含不同数量的扩张卷积层。

1.3 渐进锚loss(Progressive Anchor Loss)

DSFD采用的是多任务loss,因为其可以让original和enhanced feature maps的训练任务以两个shots进行训练。首先,DSFD的second shot anchor-based 多任务loss函数定义如下:
\[L_{SSL}(p_i,p_i^*,t_i,g_i,a_i)=\frac{1}{N}(\sum_iL_{conf}(p_i,p_i^*)+\beta\sum_ip_i^*L_{loc}(t_i,g_i,a_i))\]
这里\(N\)是匹配的密集边界框的个数;\(L_{conf}\)是基于2个类(人脸和背景)的softmax loss;\(L_{loc}\)是基于锚\(a_i\)下,介于参数化的预测边界框\(t_i\)和ground-truth边界框\(g_i\)之间的平滑L1 loss;当\(p_i^*=1(p_i^*=\{0,1\})\)时,锚\(a_i\)是正类,且此时位置loss也是激活的。\(\beta\)是一个权衡这两个loss的超参数。相比于同一个level中的enhanced feature maps,original feature maps针对分类的语义信息更少,但是有更多针对检测的高分辨率定位信息。因此,作者认为original feature maps可以检测和分类更小的人脸。因此,作者提出了基于一组更小锚的first shot 多任务loss:
\[L_{FSL}(p_i,sp_i^*,t_i,g_i,sa_i)=\frac{1}{N}(\sum_iL_{conf}(p_i,sp_i^*)+\beta \sum_ip_i^*L_{loc}(t_i,g_i,sa_i))\]
这两个shot loss可以组合成一个渐进式锚loss:
\[L_{PAL}=L_{FSL}(a)+L_{SSL}(sa)\]
这里first shot中锚的size是second shot中的一半。在预测阶段,只采用second shot的输出,这意味着预测阶段并不会有额外的计算代价。

1.4 改进的锚匹配策略(Improved Anchor Matching)

在训练中,需要计算正锚和负锚以决定对应人脸边界框是哪一个锚。当前锚匹配方法是基于锚和ground-truth人脸之间双向选择。因此锚的设计和增强的人脸采样是协同的,以此尽可能让锚和人脸进行相配,以此提供回归器更好的初始化。

表1显示DSFD的锚设计细节,每个feature map cell是如何关联固定shape的锚的。这里基于人脸尺度的统计信息,将锚尺度的比例设为1.5:1。original feature中锚的size是enhanced feature中的一半。另外,在数据增强上:

  • 基于\(\frac{2}{5}\)的概率,采用PyramidBox中data-anchor-sampling相似的基于锚的采样,其是在一个图片中随机选择一个人脸(裁剪的子图片包含人脸),并将子图和选择的人脸之间size比例设置为\(\frac{640}{rand(16,32,64,128,256,512)}\);
  • 基于\(\frac{3}{5}\)的概率,采用SSD中的数据增强方法。

2 实验结果分析


.

face detection[DSFD]的更多相关文章

  1. Clash Detection

    Clash Detection eryar@163.com Abstract. Clash detection is used for the model collision check. The p ...

  2. YOLO: Real-Time Object Detection

    YOLO detection darknet框架使用 YOLO 训练自己的数据步骤,宁广涵详细步骤说明

  3. tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

    今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real- ...

  4. 使用intellij的svn时提示出错: Can't use Subversion command line client: svn.Errors found while svn working copies detection.

    使用Intellij的svn时提示出错:Can't use Subversion command line client: svn. Errors found while svn working co ...

  5. 论文阅读(Chenyi Chen——【ACCV2016】R-CNN for Small Object Detection)

    Chenyi Chen--[ACCV2016]R-CNN for Small Object Detection 目录 作者和相关链接 方法概括 创新点和贡献 方法细节 实验结果 总结与收获点 参考文献 ...

  6. 论文阅读(Xiang Bai——【TIP2014】A Unified Framework for Multi-Oriented Text Detection and Recognition)

    Xiang Bai--[TIP2014]A Unified Framework for Multi-Oriented Text Detection and Recognition 目录 作者和相关链接 ...

  7. 论文阅读(Xiang Bai——【arXiv2016】Scene Text Detection via Holistic, Multi-Channel Prediction)

    Xiang Bai--[arXiv2016]Scene Text Detection via Holistic, Multi-Channel Prediction 目录 作者和相关链接 方法概括 创新 ...

  8. 论文阅读(Zhuoyao Zhong——【aixiv2016】DeepText A Unified Framework for Text Proposal Generation and Text Detection in Natural Images)

    Zhuoyao Zhong--[aixiv2016]DeepText A Unified Framework for Text Proposal Generation and Text Detecti ...

  9. 论文阅读(Xiang Bai——【CVPR2015】Symmetry-Based Text Line Detection in Natural Scenes)

    Xiang Bai--[CVPR2015]Symmetry-Based Text Line Detection in Natural Scenes 目录 作者和相关链接 方法概括 创新点和贡献 方法细 ...

随机推荐

  1. windows查看笔记本电池使用报告

    CMD 下 powercfg /batteryreport /output “C:\battery_report.html” powercfg 参数 /LIST./L          列出所有电源方 ...

  2. 手动编译websocket-sharp项目使其支持.net core

    以前项目中使用了websocket-sharp,挺好用.可惜,不支持.net core.好在手动编译很顺利: 从github下载源代码 创建dotnet core的类库,复制代码后并编译即可 dotn ...

  3. 章节七、4-Sets

    一.set中不允许存在相同的元素 package ZangJie7; import java.util.ArrayList; import java.util.HashSet; import java ...

  4. [译]在Linux上的提高MySQL/MariaDB安全性的12条建议

    MySQL 是世界上最流行的开源数据库系统,而MariaDB(MySQL的一个分支)是世界上发展最快的开源数据库系统.安装MySQL服务器之后,它的默认配置是不安全的,保护它是一般数据库管理中的基本任 ...

  5. 关于ARM CM3的启动文件分析

    下面以ARM Cortex_M3裸核的启动代码为例,做一下简单的分析.首先,在启动文件中完成了三项工作: 1.  堆栈以及堆的初始化 2.  定位中断向量表 3.  调用Reset Handler. ...

  6. Eclipse启动时发生An internal error occurred duri ng: "Initializing Java Tooling ----网上的坑爹的一个方法

    补充一下: 上面的方法不行. 我的个人解决方法 出现这种问题的原因,我的是eclipse换了,工作目录还是用之前的那个 把build Automatically的钩去掉 假设我们是用之前的worksp ...

  7. [20190227]简单探究tab$的bojb#字段.txt

    [20190227]简单探究tab$的bojb#字段.txt --//上午做了删除tab$表,其对应索引i_tab1的恢复,我一直以为这个索引会很大,没有想到在我的测试环境仅仅139个键值.--//查 ...

  8. win10同时安装 office2016和visio2016

    一.下载镜像文件 因为office 2016和 visio2016 镜像文件是一样的,只是名称不一样,所以只需要下载一个即可. 二.下载Office 2016 Deployment Tool工具 到微 ...

  9. PostgreSQL远程访问设置

    数据库版本:9.3.23(Windows xp系统) 步骤: 1.需要修改数据库安装目录下的pg_hba.conf文件 修改成: 2.并使用psql执行pg_ctl reload重新加载配置文件

  10. 4.7Python数据处理篇之Matplotlib系列(七)---matplotlib原理分析

    目录 目录 前言 (一)总框架分析 (二)函数式的绘图 1.说明: 2.函数绘图的缺优点 3.绘图类的函数 4.操作类的函数 5.例子: (三)面向对象式的绘图 1.基本概念 2.基本对象 3.面向对 ...