人臉檢測–S3FD: Single Shot Scale-invariant Face Detector

人臉檢測–S3FD: Single Shot Scale-invariant Face Detector

S3FD: Single Shot Scale-invariant Face Detector
ICCV2017
Caffe code will be available

本文針對基於 anchor 的檢測器對 小的人臉檢測率低的問題進行了分析和改進。

基於 anchor 的目標檢測發展迅速,人臉檢測也有很大進展,但是對於小的人臉檢測效果仍然不是很好。
the performance of anchor-based detectors drop dramatically as the objects becoming smaller

Biased framework.
The anchor-based detection frameworks tend to miss small and medium faces
原因如下:
1) the lowest anchor-associated layer 使用的步長尺寸 stride size 太大, (SSD 是 8個畫素,Faster R-CNN 是16個畫素),在這些網路層中 中小尺寸的人臉 被高度壓縮,只有少量的特徵用於檢測。
2) 小的人臉, anchor scale, 和 receptive field 是相互不匹配的,mutual mismatch
這裡寫圖片描述

3 Single shot scale-invariant face detector
本文的檢測系統流程圖如下:
這裡寫圖片描述

3.1. Scale-equitable framework
這裡我們將 anchor-associated 網路層的步長 從 4到 128 以2倍方式遞增,這樣我們可以保證不同尺度的人臉都有足夠的資訊用於人臉檢測。
our architecture ensures that different scales of faces have adequate features for detection at corresponding
anchor associated layers.

我們的 anchors 尺寸 從 16 to 512, based on the effective receptive field and our equal-proportion interval principle

Constructing architecture, 我們的網路結構包括以下幾個部分:
1) Base Convolutional Layers: 保持 VGG16 中的 conv1 1 to pool5, 去除其他網路層
2) Extra Convolutional Layers: 通過增加這些額外的卷積層 得到 multi-scale feature maps
3) Detection Convolutional Layers, 我們選擇前面網路的 conv3_3, conv4_3, conv5_3, conv fc7, conv6_2 and conv7_2 作為檢測層,使用 不同尺寸的 anchor 來進行預測
4) Normalization Layers: conv3_3, conv4_3, conv5_3 這三個網路層具有不同特徵尺度,我們採用 L2 normalization [27] 其歸一化
5) Predicted Convolutional Layers: 每個檢測層後面使用一個 p×3×3×q 卷積層 用於預測,p and q are the channel number of input and output, and 3×3 is the kernel size。 對於每個 anchor,我們預測 4個座標位置補償, N_s 個分類概率,其中 conv3_3 檢測層是N_s = N_m 1 , (N m is the max-out background label),其他檢測層 N_s =2

6) Multi-task Loss Layer: 我們 對於分類 使用 softmax loss,對於位置迴歸使用 smooth L1 loss

Designing scales for anchors: 對於6個檢測層,我們使用不同尺寸的 square anchor
這裡寫圖片描述

這裡有個 Effective receptive field 概念,文獻【29】指出,一個 CNN 單元有 2個類別的 receptive fields:
theoretical receptive field 和 effective receptive field
兩者關係如下:
這裡寫圖片描述

這裡我們採用了一個設計原則 Equal-proportion interval principle:
the scales of our anchors are 4 times its interval anchors 的尺寸 等於 4 乘以 步長
這麼做可以保證不同尺寸的 anchor 在影象中具有相同的 檢測密度
guarantees that different scales of anchor have the same density on the image, so that various scales face can approximately match the same number of anchors

3.2. Scale compensation anchor matching strategy
影象中連續分佈的人臉尺寸和 anchor 離散的尺寸造成 兩個相鄰 的 anchor 中間尺寸 的人臉 檢測率低
anchor scales are discrete while face scales are continuous , these faces whose scales distribute
away from anchor scales can not match enough anchors, leading to their low recall rate
這裡寫圖片描述

這裡我們採用下面兩個步驟來解決該問題:
1) Stage one: decrease threshold from 0.5 to 0.35 in order to increase the average number of matched anchors
2) Stage Two: 我們挑出一個人臉對應的 jaccard overlap 大於 0.1的 anchors ,然後排序,對該人臉 挑出前 N 個作為 matched anchors
firstly picking out anchors whose jaccard overlap with this face are higher than 0.1, then sorting them to select top-N as matched anchors of this face. We set N as the average number from stage one.

3.3. Max-out background label
對於 conv3_3 由於採用了 小的 anchor,導致 high false positive rate of small faces,太多的人臉虛警

這裡寫圖片描述
we propose to apply a more sophisticated classification strategy on the lowest layer to handle the complicated background from small anchors.
這裡背景太過複雜,將其分類一類太籠統了,於是我們將背景細分為多類,人臉作為一類。這樣複雜的背景可以被正確分類的概率就提升了。

為了去除這些 虛警,我們對每個 最小 anchors,我們將背景分為了 N_m 類, 在計數每個位置類別時,我們得到 N_m 類個背景的概率,然後選擇一個概率最大的分數作為最終分數用於計算 softmax loss。
Max-out operation integrates some local optimal solutions to reduce the false positive rate of small faces

這裡寫圖片描述
F: only uses the scale-equitable framework
F S: applies the scale-equitable framework and the scale compensation anchor matching strategy
F S M : scale-equitable framework, the scale compensation anchor matching strategy and the max-out background label

從上面可以看出: Scale-equitable framework is crucial

We measure the speed using Titan X (Pascal) and cuDNN v5.1 with Intel Xeon [email protected] For the VGA-resolution image with batch size 1 using a single GPU, our face detector can run at 36 FPS and achieve the real-time speed. Besides, about 80% of the forward time is spent on the VGG16 network, hence using a faster base network could further improve the speed