face detection[HR]


該模型hybrid-resolution model (HR),來自《finding tiny faces》,時間線爲2016年12月網絡

0 引言

雖然你們在目標識別上有了較好的進步,但是檢測小物體仍然是一個極具挑戰的事情。對於幾乎全部當前的識別和目標檢測系統而言,尺度不變性是一個必須的特性。可是從實際角度來講,尺度不變性也只是必定程度的不變性,由於對於一個3像素的和300像素的縮放來講,的確相差太大了。
而如今大多數的目標檢測任務使用的無外乎2種形式來解決尺度不變性問題:ide

  • 基於一個圖像金字塔進行窗口滑動的方式,如MTCNN;
  • 基於ROI-pooling方式進行區域分類,如fast-rcnn。

其實,咱們主要是但願有一個小模板可以檢測小模型,大模板可以檢測大模型,那麼這時候就涉及到須要針對不一樣尺度訓練不一樣的檢測器,並且在預測的時候也得處理屢次,而且也缺乏對應的數據集。因此做者這裏爲了權衡之間的問題,經過訓練一個CNN,並基於不一樣的網絡層提取對應的feature map(就和ssd同樣)。不過這樣雖然對大目標有較好效果,對於小的人臉,還須要其餘考慮。
函數


如上圖所示,這是一個簡單的人類實驗,其中用戶須要試圖基於模型給出的結果基礎上,區分真人臉(真陽性)和假人臉(假陽性)。從這個實驗中能夠看出,人類須要上下文信息去準確的判別小臉。

如圖所示:

  • 圖像金字塔方法:如(a),傳統的方法是創建一個單尺度模板,將其用在圖像金字塔上面;
  • 不一樣尺度採用不一樣檢測器:如(b),而若是想要利用到不一樣分辨率上的信息,那麼須要基於不一樣的對象尺度構建不一樣的檢測器(如在一張圖片上,檢測小臉的一個檢測器,檢測大臉的一個檢測器),而這樣的方法在極端對象尺度上仍是會失敗,由於可能這個尺度的根本沒出現過在訓練集中;
  • 本文方法:如(c)做者先用粗略的圖像金字塔去抓取極端的尺度變化。而後爲了提高關於小臉的檢測,增長了額外的上下文信息,即經過一個固定大小的感覺野在全部特定尺度上進行抓取,如(d)。而後如(e),基於同一個深度模型,在網絡不一樣層上提取的特徵來定義模板。

ps:在一個網絡模型中,採用一樣大小的劃框在多個feature map上進行局部採樣,這樣造成的特徵叫「超級列(hypercolumns)」,被用在語義分割中《Hypercolumns for object segmentation and fine-grained localization》。測試

1 尺度分析(上下文、分辨率等信息利用)

要說到尺度不變性,還得追述到SIFT模型,不過隨着fast-rcnn等提出的ROI pooing等深度網絡的興起,還有近來基於不一樣網絡層提取多種尺度信息的SSD(其實就是將圖像金字塔轉換成特徵層金字塔)。做者也有了一些想法和靈感。
做者這裏基於ResNet-50做爲基底模型,並提取每一個殘差快最後一層的feature map做爲特徵,即(res2cx,res3dx,res4fx,res5cx),這裏簡寫成(res2,res3,res4,res5)。經過對不一樣層進行超級列(中央凹)等操做,並基於提取的特徵作二值熱力圖預測(即結果也是一個map,其中每一個值表示以其爲中心的人臉出現的置信度)es5

1.1 上下文信息

固定大小的劃框在多層map下的變化
首先設計了一個實驗,首先設計一個固定大小的劃窗,而後不斷的增長層上的區域,從而達到增長感覺野的目的:
spa


如圖所示,劃窗大小都爲25×20,在不一樣feature map上面,獲得的感覺野倒是不一樣的,好比res4上能夠獲得291x291的感覺野。能夠看出,基於多層通道獲取的特徵能夠提供豐富的上下文信息,從而有助於人臉的檢測。在小臉檢測上,最開始就能提供較爲準確的檢測,並隨着感覺野的增大和信息的增多,準確度也在增大(最後有所降低,估計是最開始最小的劃框恰好框住人臉,而後隨着感覺野增大,輸入了太多噪音致使過擬合了);而對於大人臉,只有不斷上升的效果(是由於隨着感覺野的增大,當前小劃框終於可以看到完整的人臉了,最初只能看到鼻子而已)。


這裏還是基於固定大小的劃框,而後是否採用中央凹(多層通道)的結果,能夠看出若是採用了中央凹,那麼就能夠提供更多信息,從而檢測效果上升;若是沒有采用,只是考慮感覺野的增大,發現對大人臉效果是有上升,不過對小人臉卻有過擬合的風險。設計

總結:經過感覺野的增大,且保證劃框恰好框住對象,此時獲得的效果最好,然而固定劃框若是框多了,或者少了,會形成過擬合或者欠擬合。若是此時增長多通道的特徵,能夠起到正則效果,並下降框住太多背景噪音而形成的過擬合,這樣就解決了劃框大小選擇的問題,從而不須要不一樣尺度目標都去設計不一樣的檢測模型了3d

1.2 模板分辨率

做者還作了實驗,如何讓模板去對應不一樣尺度的目標,
對象


如圖所示:

  • 他假設採用了一箇中等尺寸的模板(50x40),而後去找小的人臉(25x20),若是進行放大兩倍,那麼結果就從原來的69%上升到75%;
  • 反過來,若是當前中等尺寸模板大小爲125x100,去找大的人臉(250x200),將這張圖片縮小兩倍,結果也從原來的89%上升到94%。

能夠看出,若是若是模板的大小和人臉大小基本一致,那麼就能提高檢測結果
做者猜想,這主要就是基於不一樣的尺度目標下,訓練數據不充分的緣故。
blog


如圖,好比在wider face 和coco數據集中,小人臉的量大於大人臉的量。不平衡的數據致使採用中等模板檢測大人臉要比檢測小人臉容易(由於相對在訓練階段有更多中等人臉),雖然這並無解釋小人臉問題。
接着從預訓練數據集Imagenet上進行分析

如圖所示,80%的訓練樣本都包含中等尺寸的目標(從40到140像素之間)。
此時做者也假設,若是用基於Imagenet預訓練的模型在本身的數據上微調,最好的部分也就是這部分

2 結構

那麼如今問題來了,如何實現多個目標尺度上採用不一樣的模板呢?

  • 如圖7所示,假設咱們定義模板爲\(t(h,w,\sigma)\);並假設是用來檢測分辨率爲\(\sigma\)的目標尺度爲\((h/\sigma,w/\sigma)\),好比圖7中,用\(t(250,200,1)\)\((t(125,100,0.5))\)能夠同時去檢測\(250 \times 200\)的人臉。

那麼問題又來了,怎麼設定模板大小?

  • 假設咱們的訓練集有圖像和對應的邊界框,那麼先採用聚類的方式去獲取其中的對象尺度,這裏採用的距離測度是:
    \[d(s_i,s_j)=1-J(s_i,s_j)\]
    這裏\(s_i=(h_i,w_i)\)\(s_j=(h_j,w_j)\)是一對邊界框,\(J\)表示標準的jaccrad類似度(IOU)。

如今,對於每一個對象尺度\(s_i=(h_i,w_i)\),咱們想知道\(\sigma_i\)設多大合適呢?

  • 經過多任務模型方法,直接將每一個\(\sigma \in \Sigma\)一塊兒作目標函數;並對每一個對象尺度提取最大的,如圖8所示

    如圖8所示,對於每一個\((h_i,w_i)\)的最優\(\sigma_i\),咱們用一個多任務模型去訓練一個混合分辨率(HR),在實測中也符合因此曲線的上限。有趣的是,的確存在不一樣策略下的天然懲罰:
  • 爲了找到大目標(高度超過140像素),使用2X進行縮小;
  • 爲了找到小目標(小於40像素),使用2X進行放大;
  • 不然就是用1X的分辨率。
    咱們的結果也證實了以前關於Imagenet統計的猜想。

剪枝
上面提到的(hybrid-resolution,HR)中仍是有一些冗餘的。例如:模板(62,50,2)能夠用來尋找31x25的人臉,但是他同時也和尋找64x50的人臉的模板(64,50,1)相沖突了。如圖9,冗餘刪除以後,甚至有點小提高。本質來講,咱們的模型能夠進一步減小到只包含幾個具體尺度模板的集合,並在一個粗粒度的圖像金字塔上作計算。


這裏咱們給出本論文的模型結構:

如圖所示,經過訓練二值多通道熱力圖,預一個範圍人臉尺度(40-140像素)之間的對象置信度。而後基於特定分辨率下獲得的熱力圖,經過圖像金字塔尋找更大或者更小的人臉;對於共享的CNN部分,咱們測試過ResNet101,ResNet50,VGG16,結果顯示ResNet101最好。
相關文章
相關標籤/搜索