前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸检测:SSH

人脸检测:SSH

作者头像
chaibubble
发布2019-09-18 10:49:52
1.6K0
发布2019-09-18 10:49:52
举报

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                 本文链接:[https://blog.csdn.net/chaipp0607/article/details/100578202](https://blog.csdn.net/chaipp0607/article/details/100578202) 

简介

SSH是一个用于人脸检测的one-stage检测器,提出于2017年8月,在当时取得了state-of-art的效果,论文是《SSH: Single Stage Headless Face Detector》,SSH本身的方法上没有太多新意,更多的是在把通用目标检测的方法往人脸检测上应用。

SSH原理

设计理念

SSH(Single Stage Headless)的目的是设计一个速度快,内存占用小的网络结构,所以采用了one-stage结构,并移除了backbone的全连接层。

但是这个速度快也是相对的,平台还是要依赖GPU,NVIDIA Quadro P6000,然后在400×800400\times800400×800的输入下FPS也可达到20,在1200×16001200\times16001200×1600时FPS只能到5。而且,这个时间是在没有image pyramid的情况下算出来的,但是state-of-art的效果却要加上image pyramid,加上之后会耗时会增加5倍。

SSH中所谓的Headless,指的是去除VGG中的全连接层,文中指出VGG的全连接层有160M的参数,ResNet-101有12M的参数,占内存比较大,而且在two-stage的情况下,这些参数要计算每一个区域建议,非常耗时,所以SSH采用了全卷积的设计,总体上SSH有下面三个部分:

  • 一个去除连接层的VGG作为backbone;
  • 用卷积层拉取的多层分支,共拉取三层,每一层最后输出都类似RPN
  • 用于融合上下文信息的Context Module。

网络结构

上图是SSH的整体网络结构,它的backbone选择了VGG结构,并从Conv4_3,Conv5_3拉取了两个分支,Conv5_3后做Max pool,拉取了第三个分支。三个分支分别是M1,M2和M3,其中M1在最浅层,M3在最深层。

在每一路分支上最后都有一个Detection Module(它是多种卷积的组合,后面会详细说明),最后在Detection Module输出的特征图上,参考RPN的方法滑动输出两路分支,分别负责是不是人脸的置信度(Scores)和(Boxes)。

值得注意的是,M1分支有一个跨层的信息融合,SSH把Conv4_3和Conv5_3的输出用1×11\times11×1的卷积降低了通道数量到128,并将Conv5_3输出做上采样,最后把它们加起来。这种跨层的信息融合在通用目标检测网络中很常见,比如YOLOv2里面那个奇怪的reorg操作,在SSH之后的文章中,也有很多使用了这种思想,比如YOLOv3FPN

信息融合之后又加了一层卷积,主要是为了整合之前加操作得到的特征,然后就进入Detection Module了。

Detection Module

上图是SSH的Detection Module,在这里能清楚的看出来最后的输出,是w/s×h/sw/s\times h/sw/s×h/s个4k4k4k和w/s×h/sw/s\times h/sw/s×h/s个2k2k2k,kkk是Anchor的数量,和RPN是一样一样的。

此外,Detection Module还有一个Context Module。

Context Module

Context Module是一个聚合上下文信息的模块,说白了就是多用几种尺寸的卷积核,不同的卷积核的感受区域是同的。两个3×33\times33×3的卷积核作用相当于一个5×55\times55×5的,三个3×33\times33×3的卷积核作用相当于一个7×77\times77×7的。

所以最后Detection Module相当于有三种尺寸的卷积核3×33\times33×3,5×55\times55×5和7×77\times77×7。

Anchor设置

由于SSH用于人脸检测,它的Anchor选取和RPN有所区别,它将人脸默认为正方形,所以Anchor只有一种比例,1:1。尺寸上,每一层分支都有两个,分别是16的{1,2},{4,8},{16,32}倍,话说最大的尺寸到1472,也是够大的。

OHEM

最后SSH训练的时候使用了OHEM,所以SSH训练必须有一个finetune的过程,而且三层分支的OHEM是分开finetune的,一个消融实验证明,OHEM对SSH来说,影响还是挺大的:

SSH性能评价

首先是SSH的耗时统计(NVIDIA Quadro P6000):

就像我们最开始说的那样,50ms的时间是在400×800400\times800400×800的输入,在1200×16001200\times16001200×1600时耗时达到了182ms。

其次是SSH的图像金字塔应用:

SSH不使用金字塔时要比HR(ResNet-101)+Pyramid差上一点点,在用上金字塔后,可以超过HR(ResNet-101)+Pyramid,当然这个时候SSH自己的耗时也会上去。

最后是在Wider Face上PR曲线:

在当时得到了state-of-art的效果,我们顺便看下在2019年9月的时候,SSH排在哪里?

大概在16名左右。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年09月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • SSH原理
    • 设计理念
      • 网络结构
        • Detection Module
          • Context Module
            • Anchor设置
              • OHEM
              • SSH性能评价
              相关产品与服务
              人脸识别
              腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档