天天看點

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

論文:PyramidBox: A Context-assisted Single Shot Face Detector

原文連結:https://arxiv.org/abs/1803.07737?context=cs

PyramidBox是2018年的人臉檢測冠軍方案

先上一個效果圖,該圖據報道有1000人,PyramidBox人臉檢測器檢測到了880張人臉,圖檔右側的顔色條表示檢測置信度,可以發現隻有少數boxes(人臉)的置信度比較低。顔色越淺,置信度越低。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

摘要

    人臉檢測的一個挑戰是檢測不受控制條件下小的,模糊的,和部分遮擋的人臉。本文提出了一個上下文輔助的single shot人臉檢測器——PyramidBox,來解決人臉檢測的難題。我們在下面三個部分改進了上下文資訊的利用。1)設計了一種新的上下文anchor來監督由半監督方法學習到的高層上下文特征,我們把它叫做PyramidAnchors。2)提出了一種低層特征金字塔網絡(LFPN)整合高層的語義資訊和低層的面部特征,他可以使PyramidBox以single shot的方式預測所有尺度的人臉。3)我們引入了一個上下文敏感結構來增加預測網絡的容量,以提高輸出的最終準确性。PyramidBox在兩個人臉檢測基準資料集,FDDB和WIDER FACE上取得了state of the art的結果。

引言

    如何利用上下文資訊來檢測人臉沒有引起太多關注,但是對于很難檢測的人臉,上下文資訊扮演了一個很重要的角色。如圖一所示,人臉在現實世界中不是獨立出現的,通常有肩膀,身體提供豐富的上下文關聯源以便被利用,尤其是當面部紋理因低分辨率,模糊和遮擋而無法區分時。我們通過引入一個新的上下文輔助網絡架構來處理這些問題,這個架構可以充分利用上下文信号,如下面幾個步驟所示。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

    第一,網絡應該可以學習的特征不僅僅是人臉還包括上下文部分,例如頭和身體。為了達到這個目标,需要額外的标記,并且應該設計與頭和身體比對的anchors。本文,我們利用一個半監督的方法來為人臉相關的上下分部分生成近似的标簽和一系列anchor,我們把它叫做PyramidAnchors,可以很容易地添加到基于anchor的一般架構中。 

    第二,高層的上下文特征應該和低層的特征充分整合起來。易分和難分的人臉外觀可能完全不同,這意味着不是所有的高層語義特征對小目标的檢測是有幫助的。我們研究了FPN并把它改成了LFPN(低層特征金字塔網絡)。

    第三,預測分支網路應該充分利用聯合特征。我們引入了一個更深,更寬的網絡——上下文敏感預測子產品(CPM)來接受目标人臉附近的上下文資訊。同時我們為預測子產品提出了一個max-in-out層來進一步改善分類網絡的能力。

   另外,我們提出一個訓練政策叫做——Data-anchor-samling來調整訓練資料集的分布。為了學習更多可表示的特征,hard-set樣本的多樣性非常重要,可以通過樣本間的資料增強來獲得。

    本文的主要貢獻包含以下五點:

1)提出了一種基于anchor的上下文輔助方法——pyramidAnchor,在為小,模糊和部分遮擋的人臉的上下文特征學習引入監督資訊。

2)設計了一種低層特征金字塔網絡LFPN來更好的整合上下文和人臉特征,該方法用single-shot的方式來處理不同尺度的人臉。

3)引入一個上下文敏感預測子產品,該子產品由一個混合網絡結構和max-in-out層組成并重合并的特征中學習準去的位置和分類。

4)提出尺度感覺的Data-anchor-sampling政策來改變訓練樣本的分布,進而更加關注較小的人臉。

5)在FDDB和WIDER FACER兩個通用人臉檢測基本資料集上取得了最好的性能。

相關工作

 基于anchor的人臉檢測器:

    anchor是由faster rcnn首次提出,後來在two-stage和one-single-shot的目标檢測器中廣泛應用。基于anchor的目标檢測器在近些年取得了很好的效果。FaceBox和S3FD等論文都使用了基于anchor的方法來改善人臉的檢測。

尺度不變的人臉檢測器:

    為了改進人臉檢測器處理不同尺度人臉的性能,許多state of the art的網絡在同一架構中構造了不同的結構來檢測各種尺寸的人臉。其中高層特征用于 檢測較大的人臉,而低層特征用于檢測較小的人臉。為了整合高層的語義特征和低層的高分辨率特征,FPN提出了一種自上而下的結構在所有尺度上使用高層的語義特征圖。近些年,FPN風格的網絡結構在目标檢測和人臉識别的領域都取得了恨到的性能。

上下文輔助人臉檢測器:

    許多工作表明上下文資訊對人臉檢測非常重要,特别是對小的,模糊的,遮擋的人臉檢測極其重要。CMS-RCNN利用faster RCNN檢測不同尺度的人臉,SSH在每個預測子產品上利用大濾波器對上下文資訊進行模組化。FAN提出了一種anchor層面的注意力機制,通過加強人臉區域的特征來檢測模糊的人臉。

PyramidBox:

1、網絡結構:

    pyramidBOx網絡結構繼承了VGG16的backbone和S3FD中的anchor尺度設計。pyramidBOx可以等比間隔地生成不同層和anchors的特征圖。在backbone中添加了低層FPN和一個上下文敏感測子產品,上下文敏感預測子產品從每個金字塔檢測層中作為分支網絡來得到最後的輸出。關鍵在于,我們設計了一種新的金字塔anchor方法來為不同層的每張人臉生成一系列的anchor。網絡結構的各部分細節如下:

    尺度公平的backbone 層:我們采用基本的卷積層和S3FD中額外的卷積層作為我們的backbone 層,保留了VGG16中從conv1_1到pool5的層,然後把VGG16中的fc6和fc7轉化為conv_fc層,并添加了更多的卷積層使網絡更深。

    低層特征金字塔層:為了改進人臉檢測器處理不同尺度人臉的檢測器性能,低層高分辨率特征非常重要。是以,許多state of the art工作在同樣的架構中構造了不同的結構來檢測不同尺度的人臉。其中高層特征用于檢測較大的人臉,而低層特征用于檢測較小的人臉。為了整合高層語義特征和低層更高分辨率的特征,FPN提出了自上而下的結構以在所有尺度上利用高層的語義資訊。近些年,FPN風格的架構在人臉檢測和目标檢測方面都取得很多好的性能。

    我們都知道,所有建立在FPN的工作都是從頂層開始的,但是具有争論的一點是,不是所有的高層特征對于小目标(人臉)的檢測是有幫助的。第一,小的,模糊的和遮擋的人臉和較大的,清晰的,完整的人臉相比具有不同的紋理特征。是以直接把所有高層特征用來加強小的人臉的檢測性能太過粗暴。第二,高層特征是從沒有人臉紋理的區域提取的,可能引入噪聲資訊。例如,在pyramidBox的backbone層中頂部兩層conv7_2和conv6_2的感受野分别是724和468。注意到輸入訓練圖檔的尺寸是640,這意味着頂部兩層的包含太多的噪聲紋理特征,是以他們對檢測中等和小的人臉沒有貢獻。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox網絡結構圖

    另外我們從中間層自上而下建構了低層特征金字塔網絡(LFPN),它的感受野應該接近輸入圖檔尺寸的一半。同樣,每個LFPN block結構和FPN是一樣的,細節見圖三。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)
PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)
PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)
PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

    金字塔檢測層:選擇lfpn_2,lfpn_1,lfpn_0,conv_fc7,conv6_2和conv7_2作為檢測層,對應的anchor size為16,32,64,128,256和512.其中lfpn_2,lfpn_1和lfpn_0是分别對應基于conv3_3,conv4_3和conv5_3的LFPN輸出層。類似于SSD的方法,采用L2正則從新調整LFPN層的範數。

    預測層:每個檢測層後面接一個上下文敏感預測子產品(CPM),CPM的輸出用于監督金字塔anchors,這些anchors可以近似覆寫人臉,人頭和身體區域。第 l 個CPM的輸出尺寸是

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

,其中

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

 是對應特征圖的尺寸,對所有的l=0,1,...,5通道尺寸 cl 等于20。這裡,每個通道的特征分别用于人臉,人頭和身體的分類與回歸。其中人臉分類需要4個通道(cpl+cnl),cpl和cnl分别是前景和背景标簽的max-in-out,滿足下面公式。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

    對于人頭和身體的分類各需要兩個通道,對每個人臉,人頭和身體的定位需要4個通道。(20=4+2+2+4*3)

    pyramidbox損失層:對于目标人臉,有一系列pyramid anchor同時監督分類和回歸任務。我們設計了pyramidBox損失,分類采用softmax 損失回歸采用平滑L1損失。

2,上下文敏感預測子產品

    預測子產品:類似于SSD和YOLO的原始基于anchor的檢測器,目标函數直接用于特征圖的選擇。MS-CNN中提出每個任務的子網絡可以改善準确率。目前,SSH通過在頂層放置不同步長更寬的卷積預測子產品增加了感受野。DSSD為每個預測子產品增加了殘差block。實際上SSH和DSSD分别使預測子產品變得更深和更寬,是以預測子產品可以獲得更好的特征用來分類和定位。

    受到 Inception-RenNet 的啟發,很明顯,可以采用更寬和更深的網絡擷取增益。我們設計了上下文敏感預測子產品(CPM),圖三(b)。我們用DSSD中無殘差預測子產品替換SSH中的上下文卷積子產品。這樣可以使CPM獲得DSSD子產品方法的所有優點,同時保留SSH中豐富的上下文子產品資訊。

    Max-in-out:Maxout第一次由Goodfellow等人提出,最近,S3FD采用max-out背景标簽來降低小負樣本的假陽性。本文,我們在正樣本和負樣本中都采用這種政策,max-in-out定義如圖三(c)所示。首先,對每個預測子產品預測cp+cn的得分,然後選擇最大的cp作為正得分。同樣地,選擇讓cn的最大得分最為負得分。在實驗中,第一個預測子產品設定cp=1,cn=3,因為小anchor具有更複雜的背景,而對于其他的預測子產品為了召回更多人臉,設定cp=3,cn=1。

3、PyramidAnchors

    目前,基于anchor的目标檢測器和人臉檢測器取得了顯著進展,被證明是,為每個尺度平衡anchors對檢測小的人臉是非常必要的。但是它仍然忽略了每個尺度的上下文特征,因為這些anchor是為人臉區域設計的。為了解決這個問題,我們提出了一個新的可選的anchor方法——PyramidAnchors。

    對于目标人臉,PyramidAnchors為大區域相關的人臉生成一系列對應的anchors,這些anchor包含了更多的上下文資訊,例如人頭,肩膀,和身體。我們通過比對區域尺度和anchor尺度來選擇一些層來設定這類anchors。他們可以監督更高層來為較低層的人臉學習更可表示的特征。為人頭,肩膀或者身體給定額外的标簽,我們可以準确的比對anchor和ground  truth來生成loss。因為它是不公平的增加額外的标簽,我們通過半監督的方式來實作,假設具有同樣的比率和偏移的不同人臉區域具有相同的上下文特征。是以,我們可以設定一些統一的boxes來近似表示人頭,肩膀和身體的真實區域,隻要這些boxes的特征在不同的人臉上是相似的。對一個目标人臉在原圖中處于

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

,考慮到 

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

表示第 i 個特征層的第 j 個anchor,步長為

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

,我們按照下面的公式來定義第k個pyramid-anchor的标簽:

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

    其中,

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

是pyramid anchors的步長,

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

表示原始圖檔中

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

對應的區域,

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

表示以步長為

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

對應的下采樣區域。threshold和其他基于anchor的檢測器是一樣的。在實驗中超參數

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

,因為鄰近預測子產品的步長是2。再者,threshold=0.35,K=2。label0,label1,label2分表是人臉,人頭,和身體的标簽。可以看出一個人臉将會在三個連續的預測子產品中生成3個目标,這三個連續的預測子產品分别表示人臉,和對應于人臉的人頭和身體。圖4顯示一個列子。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidAnchors的解釋

    圖4解釋了PyramidAnchors。例如,對于最大的紫色人臉尺寸為128,在p3,p4,p5處具有pyramid-anchors,其中P3處的anchors是由face-self(人臉本身)标記的conv_fc7生成的。P4處的anchors是由目标人臉的人頭(尺寸大約為256)标記的conv6_2生成的。P5處的anchors是由目标人臉的身體(尺寸大約為512)标記的conv7_2生成的(注:作者的圖檔和文字描述不一,筆者認為圖檔中紫色框P2,P3,P4應該是P3,P4,P5)。同樣的,為了檢測最小的尺度為16得藍綠色人臉,可以從P0處的金字塔anchors獲得一個監督特征,P0是由原始人臉标注得到。P1上的金字塔anchors由對應尺度為32的人頭标注,P2上的金字塔anchors由對應尺度為64的身體進行标注。

    受益于PyramidBox,我們的人臉檢測器可以更好的處理小的,模糊的和部分遮擋的人臉。注意pyramid anchors是自動生成的,沒有額外的标簽,并且半監督學習幫助PyramidBox提取近似的上下文特征。在預測階段,我們隻使用人臉分支的輸出,是以對比基于anchor的人臉檢測器,運作時沒有額外的計算代價。

4、訓練

訓練資料集:PyramidBox在WIDER FACE資料集上訓練了12880張圖檔,包括顔色蒸餾,随機裁剪和水準翻轉。

Data-anchor-sampling:資料采樣在統計學,機器學習和模式識别中是一個經典的學科,在近些年取得巨大的發展。對于目标檢測任務,focal loss通過改進交叉熵損失函數處理類不平衡問題。

    這裡,我們利用資料增強采樣方法——Data-anchor-sampling。簡單來說,data-anchor-sampling通過reshape圖檔中一張随機人臉到一個随機更小的anchor 尺寸來resize訓練圖檔。準确地說,首先,在樣本中随機選擇一個尺度為 

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

的人臉。PyramidBox中的anchors尺度為:

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

 。使得

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

 為所選人臉的最近anchor尺度的索引。然後在集合

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

中随機選擇一個索引

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

。最後,resize 尺度為

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

的人臉到:

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

。是以,圖檔的縮放尺度為

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

     通過尺度 s* 縮放原始圖檔并裁剪到包含随機選擇人臉的640*640标準尺度,我們就得到了anchor-sampled訓練資料。例如,我們先随機選擇一張人臉,假設它的尺寸為140,然後離它最近的anchor尺寸為128。那麼我們需要從16,32,64,128和256中選擇一個目标尺寸。通常來說,假設我們選擇32,那麼利用縮放因子為32/140=0.2285來resize原始圖檔。最終,從最後resize的包含原始所選人臉的圖檔中裁剪一個640*640的子圖,我們就得到了采樣後的訓練資料。

    如圖5所示,data-anchor-sampling以下面的方式改變了訓練資料的分布:1)小臉的比例大于大臉2)通過較大的人臉樣本生成較小的人臉樣本增加了小尺度人臉樣本的多樣性。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox 損失

    PyramidBox損失函數定義為:

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

    其中第k個pyramid-anchors的損失為

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

    k是pyramid-anchors的索引(k=0,1,2分表表示,人臉,人頭和身體)i是一個anchor的索引,并且

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

是anchors i 屬于第k個目标(人臉,人頭或者身體)的預測機率。ground truth标簽定義如下: 

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

     例如當k=0時,ground truth标簽等于Fast RCNN中的标簽,否則當k>=1時,可以通過比對下采樣的anchores和ground truth來判斷對應的标簽。另外,

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

向量表示預測bbox的4個量化坐标。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

是配置設定為正anchor的ground truth box<我們按照下面的公式定義它:

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

     其中

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

表示偏移量,

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

分别表示寬度和高度縮放因子。實驗中的參數設定:對于k<2時(人臉和人頭來說,小中等物體),

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

0,

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

。對于k = 2時(對于身體來說,大物體)

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

。分類損失

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

二類(人臉vs.非人臉)log損失。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

回歸損失是Fast RCNN中的平滑L1損失。

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

 表示回歸損失,隻對正anchors 有效。分類損失和回歸損失分别利用

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

進行标準化,對于k = 0,1,2采用

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

PyramidBox:A Context-assisted Single Shot Face Detector(論文閱讀筆記)

平衡權重。

優化

    PyramidBox采用預訓練的VGG16進行權重初始化。conv_fc67和conv_fc7的參數利用VGG16的fc6和fc7下采樣參數進行初始化,其他額外的層采用随機初始化。在WIDER FACE訓練集上,batch size為16,前80k疊代的學習率為0.001,接下來的20k疊代的學習率為0.0001,最後20k疊代的學習率為0.00001.。momentum為0.9,權重衰減為0.0005。

繼續閱讀