由于在自然场景的图像中,人脸的尺寸大小不一的。而所谓的尺度不变性则是指模型对于图像中不同尺寸大小脸的检测均具有良好的鲁棒性,很多模型检测尺寸比较大的人脸具有良好性能,然而却不能检测到尺寸小的人脸。对于这一问题,有些论文(例如MTCNN和HR)中的思路则是通过构造图像金字塔,但是其带来缺点则是运行inferrence的时候,每检测一张图像都要对该图像的构造一次图像金字塔结构,且每层的金字塔图像均进行一次前向运算,这显然是会对模型的耗时带来影响。而SSH通过在三个不同深度的卷积层feature map 上,拼接三个设计好的检测模块以检测小、中、大不同尺度的图像。

人脸检测之SSH
人脸检测之SSH(Single Stage Headless)
SSH模块加强感受野,从而检测到尺寸大小不一的物体,SSH网络用采用Max-pooling操作以增加感受野,使得M3分支能够检测到比M2分支更大的人脸。
人脸检测
网络结构是基于VGG16网络结构进行改进的,由SSH网络结构图可看出,检测模块M3是拼接在conv5-3后增加了一个max-pooling层之后的,而检测模块M2则是是直接拼接在conv5-3卷积层之后,检测模块M3和检测模块M2之间相差一个stride为2的max-pooling层操作,通过Max-pooling操作以增加感受野,从而使得M3能够检测到比M2更大的人脸。

对于检测模块M1这一分枝,其借鉴了图像语义分割的特征融合的方法,论文中将conv4-3 和conv5-3 的特征进行了融合,以检测小尺寸人脸。而为了降低内存消耗,又通过1×1卷积操作进行了降维处理,将通道数从原来的512维降至128维,由于conv5-3输出的feature map 比conv4-3 输出的feature map 小,因此还需要双线性插值up-sampling操作将feature map的尺寸变大,然后对应求和,经过3×3的卷积层,最后拼接上检测模块M1。

检测模块
人脸检测
检测模块包括如下三部分:

3✖️3卷积层
上下文网络模块
两个1✖️1输出卷积层
首先是将3✖️3卷积和上下文网络模块的输出进行concat合并,然后输入两个1✖️1的卷积,分别用于人脸分类和人脸检测框修正坐标回归,其中,分类这一分枝输出向量维度为W/S✖️H/S✖️2K;回归这一分枝输出向量维度为W/S✖️H/S✖️4K,用于预测每个滑动点处每个含有人脸与ground truth 的相对缩放量和位移量。

上下文网络模块的作用是用于增大感受野,一般在two-stage 的目标检测模型当中,都是通过增大候选框的尺寸大小以合并得到更多的上下文信息,SSH通过单层卷积层的方法对上下文(context)信息进行了合并
通过2个3✖️3的卷积层和3个3✖️3的卷积层并联,从而增大了卷积层的感受野,并作为各检测模块的目标尺寸。通过该方法构造的上下文的检测模块比候选框生成的方法具有更少的参数量,并且上下文模块可以在WIDER数据集上的AP提升0.5个百分点 。

相关文章: