深度學習 人臉檢測概述

2021-10-01 16:39:35 字數 1918 閱讀 8318

在目標檢測領域可以劃分為人臉檢測與通用目標檢測,往往人臉檢測這方面會有專門的演算法(包括人臉檢測、人臉識別、人臉其他屬性的識別等等),並且和通用目標檢測(識別)會有一定的差別,這主要是因為人臉的特殊性(有時候目標比較小、人臉之間特徵不明顯、遮擋問題等),下面我們將從人臉檢測和通用檢測兩個方面來講解目標檢測。

目前人臉檢測方法主要包括兩個區域:傳統人臉檢測演算法和基於深度學習的人臉檢測演算法。傳統人臉檢測演算法主要可分為4類:

基於知識的人臉檢測方法。

基於模型的人臉檢測方法。

基於特徵的人臉檢測方法。

基於外觀的人臉檢測方法。

接下來我們著重介紹基於深度學習的人臉檢測方法。

深度學習在人臉檢測領域的研究主要集中在cnn的人臉檢測。如基於級聯卷積神經網路的人臉檢測(cascade cnn)、基於多工卷積神經網路的人臉檢測(mtcnn)、facebox等,很大程度上提高了人臉檢測的魯棒性。當然通用目標檢測演算法像faster-rcnn、yolo、ssd等也有用在人臉檢測領域,也可以實現比較不錯的結果,但是和專門的人臉檢測演算法比還是有差別。

傳統人臉檢測演算法中針對不同大小人臉主要有兩個策略:

縮放的大小(影象金字塔如下面第一張圖所示)。

縮放滑動窗的大小(如下面第二章圖所示)。

基於深度學習的人臉檢測演算法中針對不同大小人臉主要也有兩個策略,但和傳統人臉檢測演算法有點區別,主要包括:

縮放大小。(不過也可以通過縮放滑動窗的方式,基於深度學習的滑動窗人臉檢測方式效率會很慢,存在多次重複卷積,所以要採用全卷積神經網路(fcn),用fcn將不能用滑動窗的方法)。

通過anchor box的方法(如下圖所示,但不要和上面的圖混淆,這裡是通過特徵圖**原圖的anchor box區域,具體在facebox中有描述)。

主要是看滑動窗的最小視窗和anchor box的最小視窗。

滑動窗的方法:假設通過12 * 12 的滑動窗,不對原圖做縮放的話,就可以檢測原圖中12 * 12的最小人臉。但是往往通常給定最小人臉a=40、或者a=80,以這麼大的輸入訓練cnn進行人臉檢測不太現實,速度會很慢,並且下一次需求最小人臉a=30 * 30又要去重新訓練,通常還會是12 * 12的輸入,為滿足最小人臉框a,只需要在檢測的時候對原圖進行縮放即可:w = w * 12 / a。

滑動窗的方式:滑動窗的方式是基於分類器識別人臉的框的位置確定最終的人臉。如下面的圖所示。

fcn的方式:fcn的方式通過特徵圖對映到原圖的方式確定最終識別人臉的位置,特徵圖對映到原圖人臉框是要看特徵圖相比較於原圖有多少次縮放(縮放主要檢視卷積的步長和池化層),假設特徵圖上(2,3)的點,可粗略計算縮放比例為8倍,原圖中的點應該是(16,24);如果訓練的fcn為12 * 12的輸入,對於原圖框位置應該是(16,24,12,12),當然這只是估計位置,實際構建網路時還要加入回歸框的**,主要是相對於原圖框的乙個平移與縮放。

通過anchor box的方式:通過特徵圖對映到圖的視窗,通過特徵圖對映到原圖的多個框的方式確定最終識別為人臉的位置。

上圖通過nms得到最終的人臉位置,nms改進版有很多,最原始的nms就是判斷兩個框的交集,如果交集大於設定的閾值,將刪除其中乙個框,那麼兩個框應該怎麼選擇刪除哪乙個呢?因為模型輸出有概率值,一般會優先選擇概率小的框刪除。

學習opencv opencv人臉檢測

首先利用opencv自帶的訓練檔案haarcascade frontalface alt.xml和haarcascade eye.xml檢測人臉及人眼,其次初步嘗試如何利用opencv訓練資料以及獲得訓練檔案 xml void detectmultiscale const mat image,cv ...

深度學習概述

深度學習概述 1.深度學習定義 深度學習 deep learning 起源於人工神經網路,它的定義 通過組合低層特徵形成更加抽象的高層特徵或類別,從而從大量的輸入資料中學習有效特徵表示,並把這些特徵用於分類 回歸和資訊檢索的一種技術。何謂為深度 網路學習得到的函式中,非線性運算組合水平的數量。2深度...

深度學習概述

rnn,recurrent neural network,迴圈神經網路。在rnn中,神經元的輸出可以在下乙個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了 i 1 層神經元在該時刻的輸出外,還包括其自身在 m 1 時刻的輸出。適用場景 自然語言處理 語音識別 手寫體識別等。因為樣本出現的時...