人脸检测:人脸检测算法综述
https://blog.csdn.net/SIGAI_CSDN/article/details/80751476
問題描述
人臉檢測的目標是找出圖像中所有的人臉對應的位置,算法的輸出是人臉外接矩形在圖像中的坐標,可能還包括姿態如傾斜角度等信息。下面是一張圖像的人臉檢測結果:
雖然人臉的結構是確定的,由眉毛、眼睛、鼻子和嘴等部位組成,近似是一個剛體,但由于姿態和表情的變化,不同人的外觀差異,光照,遮擋的影響,準確的檢測處于各種條件下的人臉是一件相對困難的事情。
人臉檢測算法要解決以下幾個核心問題:
人臉可能出現在圖像中的任何一個位置人臉可能有不同的大小人臉在圖像中可能有不同的視角和姿態人臉可能部分被遮擋評價一個人臉檢測算法好壞的指標是檢測率和誤報率。我們將檢測率定義為:
算法要在檢測率和誤報率之間做平衡,理想的情況是有高檢測率,低誤報率。
經典的人臉檢測算法流程是這樣的:用大量的人臉和非人臉樣本圖像進行訓練,得到一個解決2類分類問題的分類器,也稱為人臉檢測模板。這個分類器接受固定大小的輸入圖片,判斷這個輸入圖片是否為人臉,即解決是和否的問題。人臉二分類器的原理如下圖所示:
由于人臉可能出現在圖像的任何位置,在檢測時用固定大小的窗口對圖像從上到下、從左到右掃描,判斷窗口里的子圖像是否為人臉,這稱為滑動窗口技術(sliding window)。為了檢測不同大小的人臉,還需要對圖像進行放大或者縮小構造圖像金字塔,對每張縮放后的圖像都用上面的方法進行掃描。由于采用了滑動窗口掃描技術,并且要對圖像進行反復縮放然后掃描,因此整個檢測過程會非常耗時。
由于一個人臉附件可能會檢測出多個候選位置框,還需要將檢測結果進行合并去重,這稱為非極大值抑制(NMS)。多尺度滑動窗口技術的原理如下圖所示:
典型應用
人臉檢測是機器視覺領域被深入研究的經典問題,在安防監控、人證比對、人機交互、社交等領域都有重要的應用價值。數碼相機、智能手機等端上的設備已經大量使用人臉檢測技術實現成像時對人臉的對焦、圖集整理分類等功能,各種虛擬美顏相機也需要人臉檢測技術定位人臉,然后才能根據人臉對齊的技術確定人臉皮膚、五官的范圍然后進行美顏。在人臉識別的流程中,人臉檢測是整個人臉識別算法的第一步。
早期算法
我們將整個人臉檢測算法分為3個階段,分別是早期算法,AdaBoost框架,以及深度學習時代,在接下來將分這幾部分進行介紹。
早期的人臉檢測算法使用了模板匹配技術,即用一個人臉模板圖像與被檢測圖像中的各個位置進行匹配,確定這個位置處是否有人臉;此后機器學習算法被用于該問題,包括神經網絡,支持向量機等。以上都是針對圖像中某個區域進行人臉-非人臉二分類的判別。
早期有代表性的成果是Rowley等人提出的方法[1][2]。他們用神經網絡進行人臉檢測,用20x20的人臉和非人臉圖像訓練了一個多層感知器模型。文獻[1]的方法用于解決近似正面的人臉檢測問題,原理如下圖所示:
文獻[2]的方法解決多角度人臉檢測問題,整個系統由兩個神經網絡構成,第一個網絡用于估計人臉的角度,第二個用于判斷是否為人臉。角度估計器輸出一個旋轉角度,然后用整個角度對檢測窗進行旋轉,然后用第二個網絡對旋轉后的圖像進行判斷,確定是否為人臉。系統結構如下圖所示:
Rowley的方法有不錯的精度,由于分類器的設計相對復雜而且采用的是密集滑動窗口進行采樣分類導致其速度太慢。
AdaBoost框架
接下來介紹AdaBoost框架之后的方法,boost算法是基于PAC學習理論(probably approximately correct)而建立的一套集成學習算法(ensemble learning)。其根本思想在于通過多個簡單的弱分類器,構建出準確率很高的強分類器,PAC學習理論證實了這一方法的可行性,感謝大神Leslie-Valiant!!我們首先來看FDDB上各種檢測算法的ROC曲線,接下來的介紹將按照這些ROC曲線上的算法進行展開。
在2001年Viola和Jones設計了一種人臉檢測算法[10]。它使用簡單的Haar-like特征和級聯的AdaBoost分類器構造檢測器,檢測速度較之前的方法有2個數量級的提高,并且保持了很好的精度,我們稱這種方法為VJ框架。VJ框架是人臉檢測歷史上第一個最具有里程碑意義的一個成果,奠定了基于AdaBoost目標檢測框架的基礎,所以作為重點和大家嘮嘮。
用級聯AdaBoost分類器進行目標檢測的思想是:用多個AdaBoost分類器合作完成對候選框的分類,這些分類器組成一個流水線,對滑動窗口中的候選框圖像進行判定,確定它是人臉還是非人臉。
在這一系列AdaBoost分類器中,前面的強分類器設計很簡單,包含的弱分類器很少,可以快速排除掉大量的不是人臉的窗口,但也可能會把一些不是人臉的圖像判定為人臉。如果一個候選框通過了第一級分類器的篩選即被判定為人臉,則送入下一級分類器中進行判定,以此類推。如果一個待檢測窗口通過了所有的強分類器,則認為是人臉,否則是非人臉。下圖是分類器級聯進行判斷的示意圖:
這種思想的精髓在于用簡單的強分類器在初期快速排除掉大量的非人臉窗口,同時保證高的召回率,使得最終能通過所有級強分類器的樣本數很少。這樣做的依據是在待檢測圖像中,絕大部分都不是人臉而是背景,即人臉是一個稀疏事件,如果能快速的把非人臉樣本排除掉,則能大大提高目標檢測的效率。
出于性能考慮,弱分類器使用了簡單的Haar-like特征,這種特征源自于小波分析中的Haar小波變換,Haar小波是最簡單的小波函數,用于對信號進行均值、細節分解。這里的Haar-like特征定義為圖像中相鄰矩形區域像素之和的差值。下圖是基本Haar-like特征的示意圖:
Haar-like特征是白色矩形框內的像素值之和,減去黑色區域內的像素值之和。以圖像中第一個特征為例,它的計算方法如下:首先計算左邊白色矩形區域里所有像素值的和,接下來計算右邊黑色矩形區域內所有像素的和,最后得到的Haar-like特征值為左邊的和減右邊的和。
這種特征捕捉圖像的邊緣、變化等信息,各種特征描述在各個方向上的圖像變化信息。人臉的五官有各自的亮度信息,很符合Haar-like特征的特點。
為了實現快速計算,使用了一種稱為積分圖(Integral Image)的機制。通過積分圖可以快速計算出圖像中任何一個矩形區域的像素之和,從而計算出各種類型的Haar-like特征。假設有一張圖像,其第i行第j列處的像素值為,積分圖定義為:
即原始圖像在任何一點處的左上角元素之和。在構造出積分圖之后,借助于它可以快速計算出任何一個矩形區域內的像素之和,以下圖中的矩形框為例:在上圖中,要計算黑色矩形框內的像素值之和。假設上面四個矩形的右下角的坐標分別為
之所以這樣,是因為黑色區域內的像素值之和等于這4個矩形框內的像素值之和,減去上面兩個矩形框的像素值之和,再減去左邊兩個矩形框的像素值之和,這樣做的話,左上角的矩形框被減了兩遍,因此要加一遍回來。在計算出任何一個矩形區域的像素值之和后,可以方便的計算出上面任何一種Haar-like特征。下圖是通過AdaBoost算法自動篩選出來的對區分人臉和非人臉有用的Haar-like特征,基本符合人類的直觀感受:
弱分類器采用最簡單的深度很小的決策樹,甚至只有一個內部節點。決策樹的訓練算法此處不做詳細的闡述,需要注意的是這里的特征向量是稀疏的,即每一棵決策樹只接受少量特征分量的輸入,根據它們來做決策。
強分類器和前面講述的是一樣的,不同的是這里的強分類器加上了一個調節閾值:
這個式子表明增加分類器的級數會降低檢測率。對于前者,可以理解為一個負樣本被每一級分類器都判定為正樣本的概率;對于后者,可以理解為一個正樣本被所有分類器都判定為正樣本的概率。
在VJ算法問世之后,較好的解決了近似正面人臉的檢測問題。此后出現了大量改進方案,在深度學習技術出現之前,一直是人臉檢測算法的主流框架。這些方案的改進主要在以下幾個方面:
新的特征,包括擴展的Haar特征[4],ACF特征[15]等,它們比標準的Haar-like特征有更強的描述能力,同時計算成本也很低。
使用其他類型的AdaBoost分類器。VJ框架中采用的是離散型的AdaBoost算法,除此之外,還有實數型,Logit型,Gentle型等各種方案。實數型、Logit型和Gentle型AdaBoost算法不僅能輸出分類標簽值,還能給出置信度,有更高的精度。
分類器級聯結構,如Soft Cascade,將VJ方法的多個強分類器改成一個強分類器(該算法后面會有介紹)。另外,檢測處于各種角度和姿態的人臉是研究另一個重點,VJ方法的分類器級聯只有一條路徑,是瀑布模型,改進的方案有樹狀級聯,金字塔級聯等,篇幅所限這里不做過多解釋,各種級聯方案如下圖所示:
在深度學習出現以前工業界的方案都是基于VJ算法。但VJ算法仍存在一些問題:
(1)Haar-like特征是一種相對簡單的特征,其穩定性較低; (2)弱分類器采用簡單的決策樹,容易過擬合。因此,該算法對于解決正面的 人臉效果好,對于人臉的遮擋,姿態,表情等特殊且復雜的情況,處理效果不理想(雖然有了一些改進方案,但還是不夠徹底!!)。 (3 基于VJ-cascade的分類器設計,進入下一個stage后,之前的信息都丟棄了,分類器評價一個樣本不會基于它在之前stage的表現----這樣的分類器魯棒性差。ACF[15](Aggregate ChannelFeatures for Multi-view Face Detection)是一種為分類提供足夠多的特征選擇的方法。在對原圖進行處理后,得到多通道的圖像,這些通道可以是RGB的通道,可以是平滑濾波得到的,可以是x方向y方向的梯度圖等等。將這些通道合起來,在此基礎上提取特征向量后續采用Soft-Cascade分類器進行分類。
相較于VJ-cascade的設計,Soft-Cascade采用幾個改進的方案:
(1)每個stage的決策函數不是二值而是標量值(scalar-valued) ,且與該樣本有多"容易"通過這個stage以及在這個stage的相對重要性成比例。 (2)生成的決策函數是需要通過之前每個階段的值而不單單是本階段來判定。 (3)文中把檢測器的運行時間-準確率權衡通過一個叫ROC surface的3維曲面清楚的展示出來,方便調節參數,可以明確的知道動了哪個參數會對這個檢測器的性能會有些什么影響。DMP模型
DPM(Deformable Part Model),正如其名稱所述,可變形的組件模型,是一種基于組件的檢測算法,其所見即其意。該模型由Felzenszwalb在2008年提出,并發表了一系列的CVPR,NIPS會議。并且還拿下了2010年,PASCAL VOC的“終身成就獎”。
由于DPM算法[16]本身是一種基于組件的檢測算法,所以對扭曲,性別,多姿態,多角度等的人臉都具有非常好的檢測效果(人臉通常不會有大的形變,可以近似為剛體,基于DMP的方法可以很好地處理人臉檢測問題)。
DPM的方法采用的是FHOG進行特征的提取,作者對HOG進行了很大的改動,沒有直接采用4*9=36維向量,而是對每個8x8的cell提取18+9+4=31維特征向量。作者還討論了依據PCA(Principle Component Analysis)可視化的結果選9+4維特征,能達到HOG 4*9維特征的效果。基于DPM的方法在戶外人臉集上都取得了比Viola-Jones更好的效果,但是由于該模型過于復雜,判斷時計算復雜,很難滿足實時性的要求。后續有了一些列改進的流程,比如加入級聯分類器,針對特征計算采用了積分圖的方法等,但都還沒有達到VJ方法的效率。
DPM模型一個大的問題是速度太慢,因此在工程中很少使用,一般采用的是AdaBoost框架的算法。
基于經典的人工設計特征本身穩定性并不穩定,容易受外界環境的影響(光照、角度、遮擋等),所以在復雜場景下的人臉檢測性能很難的到保證,只能應用到受限的場景中。深度學習出現以后,DCNN(深度卷積神經網絡)能很好的學習到圖像中目標物各個層級的特征,對外界的抗干擾能力更強,后序的人臉檢測方法基本都基于DCNN的特征來優化了。
基于深度學習的方法在FDDB上基本飽和了,是時候拋出一個新的benchmark了!!!WIDERFace測試集上各種算法的性能:
深度學習框架
卷積神經網絡在圖像分類問題上取得成功之后很快被用于人臉檢測問題,在精度上大幅度超越之前的AdaBoost框架,當前已經有一些高精度、高效的算法。直接用滑動窗口加卷積網絡對窗口圖像進行分類的方案計算量太大很難達到實時,使用卷積網絡進行人臉檢測的方法采用各種手段解決或者避免這個問題。
Cascade CNN
Cascade CNN[17]可以認為是傳統技術和深度網絡相結合的一個代表,和VJ人臉檢測器一樣,其包含了多個分類器,這些分類器采用級聯結構進行組織,然而不同的地方在于,Cascade CNN采用卷積網絡作為每一級的分類器。
構建多尺度的人臉圖像金字塔,12-net將密集的掃描這整幅圖像(不同的尺寸),快速的剔除掉超過90%的檢測窗口,剩下來的檢測窗口送入12-calibration-net調整它的尺寸和位置,讓它更接近潛在的人臉圖像的附近。
采用非極大值抑制(NMS)合并高度重疊的檢測窗口,保留下來的候選檢測窗口將會被歸一化到24x24作為24-net的輸入,這將進一步剔除掉剩下來的將近90%的檢測窗口。和之前的過程一樣,通過24-calibration-net矯正檢測窗口,并應用NMS進一步合并減少檢測窗口的數量
將通過之前所有層級的檢測窗口對應的圖像區域歸一化到48x48送入48-net進行分類得到進一步過濾的人臉候選窗口。然后利用NMS進行窗口合并,送入48-calibration-net矯正檢測窗口作為最后的輸出。
12x12,24x24,48x48尺寸作為輸入的矯正(calibration)CNN網絡結構。其中輸出為45中種矯正模式的類別。
文中影響區域位置和大小的因素有三種:尺度、X方向偏移、Y方向偏移。總共構成了5x3x3=45種模式。
Cascade CNN一定程度上解決了傳統方法在開放場景中對光照、角度等敏感的問題,但是該框架的第一級還是基于密集滑動窗口的方式進行窗口過濾,在高分辨率存在大量小人臉(tiny face)的圖片上限制了算法的性能上限。
DenseBox
文獻[18]提出了一種稱為DenseBox的目標檢測算法,適合人臉這類小目標的檢測。這種方法使用全卷積網絡,在同一個網絡中直接預測目標矩形框和目標類別置信度。通過在檢測的同時進行關鍵點定位,進一步提高了檢測精度。
檢測時的流程如下: 1.對待檢測圖像進行縮放,將各種尺度的圖像送入卷積網絡中處理,以檢測不同大小的目標。 2.經過多次卷積和池化操作之后,對特征圖像進行上采樣然后再進行卷積,得到最終的輸出圖像,這張圖像包含了每個位置出現目標的概率,以及目標的位置、大小信息。 3.由輸出圖像得到目標矩形框。 4.非最大抑制,得到最終的檢測結果。在檢測時卷積網絡接受??的輸入圖像,產生5個通道的??輸出圖像。假設目標矩形左上角??的坐標為??,右下角??的坐標為??。輸出圖像中位于點(??)處的像素用5維向量描述了一個目標的矩形框和置信度信息:
第一個分量是候選框是一個目標的置信度,后面4項分別為本像素的位置與矩形框左上角、右下角的距離。每個像素都轉化成一個矩形框和置信度值,然后對置信度值大于指定閾值的矩形框進行非最大抑制,得到最終檢測結果。
backbone從VGG 19網絡改進得到,包含16個卷積層。前12個卷積層用VGG 19的模型進行初始化。卷積層conv4_4的的輸出被送入4個 的卷積層中。第一組的兩個卷積層產生1通道的輸出圖像作為置信度得分;第二組的兩個卷積層產生4通道的輸出圖像作為矩形框的4個坐標。網絡的輸出有兩個并列的分支,分別表示置信度和矩形框位置預測值。整個網絡的結構如下圖所示:
DenseBox的網絡結構
為了提高檢測精度,采用了多尺度融合的策略。將conv3_4和conv_4_4的卷積結果拼接起來送入后面處理。由于兩個層的輸出圖像大小不同,在這里用了上采樣和線性插值對小的圖像進行放大,將兩種圖像尺寸變為相等。
由于輸出層有兩個并列分支,損失函數由兩部分組成。第一部分輸出值為分類置信度即本位置是一個目標的概率,用表示。真實的類別標簽值為,取值為0或者1,分別表示是背景和目標。分類損失函數定義為:
Faceness-Net
Faceness-Net[19]是一個典型的由粗到精的工作流,借助了多個基于DCNN網絡的facial parts分類器對人臉進行打分,然后根據每個部件的得分進行規則分析得到Proposal的人臉區域,最后通過一個Refine的網絡得到最終的人臉檢測結果。整體流程如圖 Faceness(b)。
系統主要包含了2個階段:
第1階段:生成partness map,由局部推理出人臉候選區域。
根據attribute-aware深度網絡生成人臉部件map圖(partness map),如上圖Faceness(a)中的顏色圖,文章共使用了5個部件:hair,eye,nose,mouth,beard. 通過part的結合計算人臉的score.部件與部件之間是有相對位置關系的,比如頭發在眼睛上方,嘴巴在鼻子下方,因此利用部件的spatial arrangement可以計算face likeliness. 通過這個打分對原始的人臉proposal進行重排序. 如圖Faceness(b)。
第2階段:Refining the face
hypotheses
上一階段proposal生成的候選框已經有較高的召回率,通過訓練一個人臉分類和邊界回歸的CNN可以進一步提升其效果。
Faceness的整體性能在當時看來非常令人興奮。此前學術界在FDDB上取得的最好檢測精度是在100個誤檢時達到84%的檢測率,Faceness在100個誤檢時,檢測率接近88%,提升了幾乎4個百分點;除了算法本身的精度有很大提升,作者還做了很多工程上的優化比如:通過多個網絡共享參數,降低網絡參數量 83%;采用多任務的訓練方式同一網絡實現不同任務等。
MTCNN
MTCNN[20]顧名思義是多任務的一個方法,它將人臉區域檢測和人臉關鍵點檢測放在了一起,同Cascade CNN一樣也是基于cascade的框架,但是整體思路更加巧妙合理,MTCNN總體來說分為三個部分:PNet、RNet和ONet,如下圖所示:
Cascade CNN第一級的12-net需要在整張圖片上做密集窗口采樣進行分類,缺陷非常明顯;MTCNN在測試第一階段的PNet是全卷積網絡(FCN),全卷積網絡的優點在于可以輸入任意尺寸的圖像,同時使用卷積運算代替了滑動窗口運算,大幅提高了效率。下圖為不同尺度圖像經過PNet的密集分類響應圖,亮度越高代表該區域是人臉的概率越大(dense predictionresponse map)。
除了增加人臉5個關鍵點的回歸任務,另外在calibration階段采用了直接回歸真實位置坐標的偏移量的思路替代了Cascade CNN中的固定模式分類方式,整個思路更為合理。
MTCNN的整體設計思路很好,將人臉檢測和人臉對齊集成到了一個框架中實現,另外整體的復雜度得到了很好的控制,可以在中端手機上跑20~30FPS。該方法目前在很多工業級場景中得到了應用。
先拋出一張據說是目前世界上人數最多的合照嚇嚇大家。一眼望過去能估計下有多少人嗎?因為本文對小目標人臉檢測有很多獨到的理解,我們下面會多花點筆墨去分析!
HR
之前我們講過的一些方法都沒有針對小目標去分析,小目標檢測依然是檢測領域的一個難題,[21]本文作者提出的檢測器通過利用尺度,分辨率和上下文多種信息融合來檢測小目標,在上圖的總共1000個人臉中成功檢測到約800個,檢測器的置信度由右側的色標表示。
針對小目標人臉檢測,作者主要從三個方面做了研究:尺度不變,圖像分辨率和上下文,作者的算法在FDDB和WIDERFace取得了當時最好的效果。
作者分析了小目標人臉檢測的三個問題:
Multi-task modeling of scales
一方面,我們想要一個可以檢測小人臉的小模板;另一方面,我們想要一個可以利用詳細特征(即面部)的大模板來提高準確性。取代“一刀切”的方法,作者針對不同的尺度(和縱橫比)分別訓練了檢測器。雖然這樣的策略提升了大目標檢測的準確率,但是檢測小目標仍然具有挑戰性。
How to generalize pre-trained networks?
關于小目標檢測的問題,作者提出了兩個見解。
如何從預訓練的深度網絡中最佳地提取尺度不變的特征。
雖然許多應用于“多分辨率”的識別系統都是處理一個圖像金字塔,但我們發現在插值金字塔的最底層對于檢測小目標尤為重要。
因此,作者的最終方法是:通過尺度不變方式,來處理圖像金字塔以捕獲大規模變化,并采用特定尺度混合檢測器,如下圖:
(a)單一尺度模板和圖像金字塔 (b)不同尺度模板和單一圖像 (c)粗略尺度模板和粗略圖像金字塔,(a)和(b)的結合 (d)含有上下文信息的固定大小多尺度模板和粗略圖像金字塔 (e)定義了從深度模型的多個層中提取的特征模板,也就是foveal descriptors
How best to encode context?
作者證明從多個層中提取的卷積深度特征(也稱為 “hypercolumn” features)是有效的“ foveal”描述符,其能捕獲大感受野上的高分辨率細節和粗略的低分辨率線索。
從輸入圖像開始,首先創建一個圖像金字塔(2x插值)。然后我們將縮放的輸入圖像輸入到CNN中,獲得不同分辨率下人臉預測響應圖(后續用于檢測和回歸)。最后將在不同尺度上得到的候選區域映射回原始分辨率圖像上,應用非極大值抑制(NMS)來獲得最終檢測結果。
Face R-CNN
[22]該方法基于Faster R-CNN框架做人臉檢測,針對人臉檢測的特殊性做了優化。
對于最后的二分類,在softmax的基礎上增加了center loss。通過加入center loss使得類內的特征差異更小(起到聚類的作用),提高正負樣本在特征空間的差異性從而提升分類器的性能。
加入在線困難樣本挖掘(OHEM),每次從正負樣本中各選出loss最大的N個樣本加入下次訓練,提高對困難樣本的的分類能力。
多尺度訓練,為了適應不同尺度影響(或者更好地檢測小目標),訓練階段圖片會經過不同尺度縮放。
SSH
[23] SSH最大的特色就是尺度不相關性(scale-invariant),比如MTCNN這樣的方法在預測的時候,是對不同尺度的圖片分別進行預測,而SSH只需要處以一個尺度的圖片就可以搞定。實現方式就是對VGG網絡不同level的卷積層輸出做了3個分支(M1,M2,M3),每個分支都使用類似的流程進行檢測和分類,通過針對不同尺度特征圖進行分析,變相的實現了多尺度的人臉檢測。
M1和M2,M3區別有點大,首先,M1的通道數為128,M2,M3的通道數為512,這里,作者使用了1*1卷積核進行了降維操作。其次,將conv4_3卷積層輸出和conv5_3卷積層輸出的特征進行了融合(elementwise sum),由于conv5_3卷積層輸出的大小和conv4_3卷積層輸出的大小不一樣,作者對conv5_3卷積層的輸出做了雙線性插值進行上采樣。
其中,M模塊如上圖所示,包含了分類和回歸2個任務,其中Context Module的為了獲得更多的上下文信息,更大的感受野,對該模塊使用了等價的5*5和7*7的卷積分別進行操作,然后進行特征的concat最終形成了上圖的Context Module。(由于大的卷積核效率問題,根據INCEPTION的思想,使用2個3*3的卷積核替代一個5*5的卷積核,使用3個3*3的卷積核替換1個7*7的卷積核)。
PyramidBox
這張圖又出現了!!!這一次是百度的“PyramidBox”[24]跑出來的結果。880個人臉!!!
PyramidBox從論文看主要是已有技術的組合應用,但是作者對不同技術有自己很好的理解,所以能組合的很有效,把性能刷的非常高。
Architecture of PyramidBox
針對之前方法對上下文信息的利用不夠充分的問題,作者提出了自己的優化方案:
1. 提出了一種基于 anchor 的上下文信息輔助方法PyramidAnchors,從而可以引入監督信息來學習較小的、模糊的和部分遮擋的人臉的上下文特征(下圖中紫色的人臉框為例可以看到P3,P4,P5的層中框選的區域分別對應face、head、body)。
2. 設計了低層特征金字塔網絡 ( Low-level Feature
Pyramid Networks ) 來更好地融合上下文特征和面部特征,該方法在一次前向過程中(in a single shot)可以很好地處理不同尺度的人臉。
3. 文中提出了一種上下文敏感的預測模塊,該模塊由一個混合網絡結構和max-in-out層組成,該模塊可以從融合特征中學習到更準確的定位信息和分類信息(文中對正樣本和負樣本都采用了該策略,針對不同層級的預測模塊為了提高召回率對正負樣本設置了不同的參數)。max-in-out參考的maxout激活函數來自GAN模型發明人Ian J,Goodfellow,它對上一層的多個feature map跨通道取最大值作為輸出,在cifar10和cifar100上相較于ReLU取得了更好的效果。
4. 文中提出了尺度敏感的Data-anchor-采樣策略,改變訓練樣本的分布,重點關注了較小的人臉。
結束語
人臉做為計算機視覺的一個大的研究方向,很多科研人員在上面投入了大量精力,每年出來上百篇相關論文,本文中不一一列舉,文中講述分析如有不妥之處請多包涵指正!
總結
以上是生活随笔為你收集整理的人脸检测:人脸检测算法综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果笔记本python怎么换行_pyth
- 下一篇: 人脸美颜技术