人臉檢測
人臉檢測的目標是找出圖像中所有的人臉對應的位置,算法的輸出是人臉外接矩形在圖像中的座標,可能還包括姿態如傾斜角度等信息。
傳統方法
早期的人臉檢測算法使用了模板匹配技術,即用一個人臉模板圖像與被檢測圖像中的各個位置進行匹配,確定這個位置處是否有人臉,一般是使用mlp、 svm、adaboost等算法:根本思想在於通過多個簡單的弱分類器(前面的強分類器設計很簡單,包含的弱分類器很少,可以快速排除掉大量的不是人臉的窗口,)構建出準確率很高的強分類器。用到的一些特徵有pca,herr like等。
深度學習方法
- Cascade CNN:構建多尺度的人臉圖像金字塔,12-net將密集的掃描這整幅圖像(不同的尺寸),快速的剔除掉超過90%的檢測窗口。採用非極大值抑制(NMS)合併高度重疊的檢測窗口,保留下來的候選檢測窗口將會被歸一化到24x24作爲24-net的輸入。第一級還是基於密集滑動窗口的方式進行窗口過濾。
- MTCNN:將人臉區域檢測和人臉關鍵點檢測放在了一起
三個部分:PNet(用來生成候選框)、RNet(去除大量的非人臉框和非極大值抑制)和ONet(輸出框和關鍵點)人臉分類,邊框迴歸,關鍵點定位 - Face-RCNN
- PyramidBox
人臉關鍵點提取
傳統方法
- ASM:主動形狀模型。爲每個關鍵點構建局部特徵,目的是在每次迭代搜索過程中每個關鍵點可以尋找新的位置。對其人臉,在對齊後的各個點附近搜索,匹配每個局部關鍵點
- AAM:形狀加紋理特徵
深度學習方法
- DCNN:級聯迴歸方法。作者通過精心設計擁有三個層級的級聯卷積經網絡,每層不斷的去優化。
- MTCNN
人臉圖像分割
傳統方法
- 基於閾值的分割方法:基於圖像的灰度特徵來計算一個或多個灰度閾值,並將圖像中每個像素的灰度值與閾值作比較,最後將像素根據比較結果分到合適的類別中。難點就是閾值選擇上,單閾值,多閾值。
- 基於區域的圖像分割方法:區域生長:從單個像素出發,逐步合併以形成所需要的分割區域,另一種是從全局出發,逐步切割至所需的分割區域(種子像素,生長準則,生長停止條件)。
- 基於邊緣檢測的分割方法:不同區域的邊界上像素的灰度值變化比較劇烈,如果將圖片從空間域通過傅里葉變換到頻率域,邊緣就對應着高頻部分。一階邊緣算子,二階邊緣算子
- 主動輪廓ASM的方法:先定義初始曲線C,然後根據圖像數據得到能量函數,通過最小化能量函數來引發曲線變化,使其向目標邊緣逐漸逼近,最終找到目標邊緣。
深度學習方法:
- Mask-RCNN:在faster-rcnn基礎上增加像素級分割
- FCN:圖片會先進性上採樣(擴大像素);再進行卷積,通過學習獲得權值
- UNet:特徵提取,上採樣部分(每上採樣一次就與對應的通道相同尺度融合)
- deepLab系列算法