人脸检测:SSH

简介

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 × 800 400\times800 400×800的输入下FPS也可达到20,在 1200 × 1600 1200\times1600 1200×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 × 1 1\times1 1×1的卷积降低了通道数量到128,并将Conv5_3输出做上采样,最后把它们加起来。这种跨层的信息融合在通用目标检测网络中很常见,比如YOLOv2里面那个奇怪的reorg操作,在SSH之后的文章中,也有很多使用了这种思想,比如YOLOv3FPN
信息融合之后又加了一层卷积,主要是为了整合之前加操作得到的特征,然后就进入Detection Module了。

Detection Module

在这里插入图片描述
上图是SSH的Detection Module,在这里能清楚的看出来最后的输出,是 w / s × h / s w/s\times h/s w/s×h/s 4 k 4k 4k w / s × h / s w/s\times h/s w/s×h/s 2 k 2k 2k k k k是Anchor的数量,和RPN是一样一样的。
此外,Detection Module还有一个Context Module。

Context Module

在这里插入图片描述
Context Module是一个聚合上下文信息的模块,说白了就是多用几种尺寸的卷积核,不同的卷积核的感受区域是同的。两个 3 × 3 3\times3 3×3的卷积核作用相当于一个 5 × 5 5\times5 5×5的,三个 3 × 3 3\times3 3×3的卷积核作用相当于一个 7 × 7 7\times7 7×7的。
所以最后Detection Module相当于有三种尺寸的卷积核 3 × 3 3\times3 3×3 5 × 5 5\times5 5×5 7 × 7 7\times7 7×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 × 800 400\times800 400×800的输入,在 1200 × 1600 1200\times1600 1200×1600时耗时达到了182ms。

其次是SSH的图像金字塔应用:
在这里插入图片描述
SSH不使用金字塔时要比HR(ResNet-101)+Pyramid差上一点点,在用上金字塔后,可以超过HR(ResNet-101)+Pyramid,当然这个时候SSH自己的耗时也会上去。

最后是在Wider Face上PR曲线:
在这里插入图片描述
在当时得到了state-of-art的效果,我们顺便看下在2019年9月的时候,SSH排在哪里?
在这里插入图片描述
大概在16名左右。

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页