Face Attention Network: An Effective Face Detector for the Occluded Faces

論文:http://xxx.itp.ac.cn/abs/1711.07246

1 簡介

本文針對的是遮擋人臉的檢測,對於遮擋人臉的檢測,最關鍵的問題是如何減少誤檢。比如,一個帶了墨鏡的人臉,只有下半部分區域可見,要對這樣的人臉進行成功檢測,就需要模型能夠正確基於下半部分的人臉進行檢測,但是人的手部的皮膚顏色和麪部的皮膚顏色很接近,那麼這樣的模型就有可能把手部區域誤檢成人臉。如何在不增加誤檢的情況下成功的檢測出遮擋的人臉仍然是一個有難度的問題。

作者提出的FAN,利用了特徵金字塔進行多尺度的人臉檢測,利用了針對各尺度anchor的attention強調人臉區域且減少誤檢。

2 FAN

在這裏插入圖片描述FAN是單階段檢測器和anchor-level attention的結合。

2.1 骨幹網絡

CNN學習的是層次化的特徵。淺層特徵分辨率高,但語義信息弱,適合於小目標的檢測/定位,但不適合於圖像分類;深層特徵分辨率小,但語義信息強,不適合於目標檢測,但適合於圖像分類。FPN給出瞭如何結合多尺度的特徵實現不同尺度的目標的檢測。RetinaNet在ResNet+FPN的基礎上引入了focal loss,解決正負樣本不均衡的問題,實現了高精度的一階段目標檢測算法。本文的骨幹網絡就是RetinaNet的骨幹網絡,最後引出分類和定位兩個子分支。

分類子分支是在骨幹網絡輸出的feature map的基礎上應用兩個3 * 3 的卷積層,第一個卷積層的channel數爲256,第二個卷積層的channel數爲KA,K表示要檢測的類別數,對於這裏的人臉檢測,K=1,A表示每一個feature map點處對應的anchor的數量。實驗中作者設置A=6,另外因爲這裏是對於單個類別的預測,所以分類子分支使用sigmoid激活函數。迴歸子分支和分類子分支很像,除了輸出爲4A個channel。

2.2 Attention網絡

作者在RetinaNet的anchor上增加了attention函數,有三個目的:

  1. 實現多尺度的人臉檢測;
  2. 強調圖像中的人臉區域,弱化圖像中的背景區域;
  3. 生成更多的遮擋人臉用於訓練。

2.2.1 Anchor標註策略

FAN中,對於五個檢測層都設定了對應尺度的anchor。各anchor的長寬比設置爲1和1.5兩種,這是因爲正面人臉的長寬比接近1,側面人臉的長寬比接近1.5。作者統計了widerface數據集中的人臉尺寸,發現80%的人臉尺寸介於16到406個像素之間。作者認爲太小的人臉對訓練的提升不大,所以設置anchor的尺寸爲16216^24062406^2之間。作者對每一層的anchor的尺寸增加係數爲2132^{\frac{1}{3}},也就是說第一層的anchor的尺寸爲162×20,162×213,162×22316^2 \times 2^0,16^2 \times 2^{\frac{1}{3}},16^2 \times 2^{\frac{2}{3}},這樣每一層有三個尺寸,2個長寬比的anchor,因此一個特徵點處對應於6個anchor。這樣密集的anchor集能夠保證每一個gt box都有一個對應的IOU大於0.6的anchor。

如果某個anchor與一個gt box的IOU最大且大於0.5,則讓該anchor負責該人臉的預測;如果一個anchor和所有gt box的最大IOU都小於0.4,則設置其爲背景anchor,不負責人臉預測。剩餘的anchor不參與訓練過程。

2.2.2 attention函數

在這裏插入圖片描述如上圖所示,作者在檢測的基礎上添加了一個attention分支來解決遮擋問題。attention分支類似於分割網絡,標註值就是對ground-truth box填充的結果。但如下圖所示,作者使用了層次化的attention maps,也就是說不同尺度的特徵對應的attention信息是有尺寸區別的。尺度大的特徵只有一個大尺寸人臉的attention map作爲監督值,尺度小的特徵則包含了更多的小尺寸人臉的attention map作爲監督值。

在這裏插入圖片描述另外一點不同時,作者將attention map經過一個指數函數後和feature map相乘,實驗結果證明這樣做取得了很好的效果。下圖給出了學習完成的attention map,可以看出attention機制從圖像中檢測出了人臉。

在這裏插入圖片描述

2.2.3 數據增廣

wider face數據集中只有16%的人臉存在較大的遮擋,這個數據量不足以進行較大CNN的訓練。因此作者通過隨機裁剪策略進行數據增廣。具體來說,按照圖像短邊的[0.3,1]的比例從圖像中隨機裁剪正方形子塊。如果某個ground-truth box被裁剪了,但它的中心點位於裁剪的圖像子塊內,那麼保留這個ground-truth box,且設置標註信息爲該ground-truth box和正方形圖像子塊的交集部分以模擬被遮擋的人臉。另外還使用了圖像隨機翻轉和顏色變換這兩種數據增廣手段。

2.3 損失函數

在這裏插入圖片描述
k表示特徵金字塔的層級,k[3,7]k\in[3,7];AkA_k表示金字塔層PkP_k設置的anchor;pi,pip_i,p_i^*分別表示預測的各anchor包含人臉的置信度與其實際label;ti,tit_i,t_i^*表示各anchor學習的和標註的座標值。

損失包含各anchor的分類損失 + 正例anchor的座標的smooth L1損失 + 逐像素點的sigmoid交叉熵損失作爲attention學習的損失(完全按照語義分割的思路來實現)。

實驗中,作者設置各子損失的係數爲λ1=λ2=1\lambda_1 = \lambda_2 = 1

3 實驗

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

作者主要關注對遮擋人臉的檢測效果,對應於widerface數據集中的hard子集。

4 總結

多尺度特徵 + 多尺度anchor + 基於語義分割的多尺度attention,提升了對於遮擋人臉的檢測效果。

以下摘抄自作者的解讀:https://zhuanlan.zhihu.com/p/56619497

我們可以從另一個角度考慮遮擋問題。一個物體在清晰可見、無遮擋之時,其特徵圖對應區域的響應值較高;如果物體有(部分)遮擋,理想情況應是隻有遮擋區域響應值下降,其餘部分不受影響;但實際情況卻是整個物體所在區域的響應值都會降低,進而導致模型 Recall 下降。

解決這個問題大概有兩種思路:1)儘可能保持住未遮擋區域的響應值,2)把無遮擋區域降低的響應值彌補回來;前者較難,後者則相對容易。一個簡單的做法是讓檢測器學習一個 Spatial-wise Attention,它應在無遮擋區域有更高的響應,然後藉助它以某種方式增強原始的特徵圖。(要讓人臉區域的特徵有更強的響應,所以要用指數函數對attention map進行處理)

那麼,如何設計這個 Spatial-wise Attention。最簡單考慮,它應當是一個 Segmentation Mask 或者 Saliency Map。基於 RetinaNet,FAN 選擇增加一個 Segmentation 分支,對於學到的 Score Map,做一個 exp 把取值範圍從 [0, 1] 放縮到[1, e],然後乘以原有的特徵圖。爲簡單起見,Segmentation 分支只是疊加 2 個 Conv3x3,Loss 採用 Sigmoid Cross Entropy。

這裏將面對的一個問題是,Segmentation 分支的 ground truth 是什麼,畢竟不存在精細的 Pixel-level 標註。由於人臉圖像近似橢圓,一個先驗信息是邊界框區域內幾乎被人臉填滿,背景區域很小;常見的遮擋也不會改變「人臉佔據邊界框絕大部分區域」這一先驗。基於這一先驗可以直接輸出一個以邊界框矩形區域爲正樣本、其餘區域爲負樣本的 Mask,並將其視爲一個「有 Noise 的 Segmentation Label」作爲實際網絡的 ground truth。我們也嘗試根據該矩形截取一個橢圓作爲 Mask,但實驗結果表明基本沒有區別。(人臉佔據了標註框的絕大部分區域,所以用矩形框作爲分割框的標註信息

這樣的 ground truth 真能達到效果嗎?通過可視化已學到的 Attention Map,發現它確實可以規避開部分遮擋區域,比如一個人拿着話筒講話,Attention Map 會高亮人臉區域,繞開話筒區域。我們相信,如果採用更復雜的手段去清洗 Segmentation Label,實際效果將有更多提高。

FAN 在 WIDER Face 上曾經保持了半年的 state-of-the-arts。由於僅僅驗證方法的可行性,FAN 沒有疊加任何 trick,只在原始的 RetinaNet 上調整錨點框,增加我們的 Spatial Attention,因此 FAN 還有很大的上升空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章