[論文筆記]:圖像&&表情分類&&人臉識別
看一些論文後的筆記。n寫得有點雜亂呃 ...n
1994-特徵提取之LBP(局部二值模式)
- 參考:
- T. Ojala, M. Pietik?inen, and D. Harwood (1994), "Performance evaluation of texture measures with classification based on Kullback discrimination of distributions", Proceedings of the 12th IAPR International Conference on Pattern Recognition (ICPR 1994), vol. 1, pp. 582 - 585.
- T. Ojala, M. Pietik?inen, and D. Harwood (1996), "A Comparative Study of Texture Measures with Classification Based on Feature Distributions", Pattern Recognition, vol. 29, pp. 51-59.
- LPB特徵分析
- 描述圖像局部紋理特徵的運算元,具有旋轉不變性和灰度不變性等顯著的優點,紋理分類上能提取強大的特徵。
- 感覺卷積結構已經很好包括了。
2001-基於Adaboost和級聯的人臉檢測器,稱Viola-Jones檢測器:簡單特徵的優化級聯在快速目標檢測中的應用.
- 參考:
- Viola P, Jones M. Rapid object detection using a boosted cascade of simple features[C]// Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on. IEEE, 2003:I-511-I-518 vol.1.
- Viola–Jones object detection framework--Rapid Object Detection using a Boosted Cascade of Simple Features中文翻譯 及 matlab實現(見文末鏈接)
- 一個視覺目標檢測的機器學習法,能快速地處理圖像而且能實現高檢測速率。這項工作可分為三個創新性研究成果。
- 第一個是一種新的圖像表徵說明,稱為積分圖,它允許我們的檢測的特徵得以很快地計算出來。
- 第二個是一個學習演算法,基於Adaboost自適應增強法,可以從一些更大的設置和產量極為有效的分類器中選擇出幾個關鍵的視覺特徵。
- 第三個成果是一個方法:用一個「級聯」的形式不斷合併分類器,這樣便允許圖像的背景區域被很快丟棄,從而將更多的計算放在可能是目標的區域上。
- 這個級聯可以視作一個目標特定的注意力集中機制,它不像以前的途徑提供統計保障,保證舍掉的地區不太可能包含感興趣的對象。在人臉檢測領域,此系統的檢測率比得上之前系統的最佳值。在實時監測的應用中,探測器以每秒15幀速度運行,不採用幀差值或膚色檢測的方法。
- 稱為Viola-Jones檢測器
2002-opencv的「Haar分類器」:用對角特徵Haar-like特徵對檢測器進行擴展。
- 參考:
- Lienhart R, Maydt J. An extended set of Haar-like features for rapid object detection[C]// International Conference on Image Processing. 2002. Proceedings. IEEE, 2002:I-900-I-903 vol.1.
- 淺析人臉檢測之Haar分類器方法
- Haar分類器 = Haar-like特徵 + 積分圖方法 + AdaBoost + 級聯
- Haar分類器用到了Boosting演算法中的AdaBoost演算法,只是把AdaBoost演算法訓練出的強分類器進行了級聯,並且在底層的特徵提取中採用了高效率的矩形特徵和積分圖方法.
2010年前-DPM、LSVM目標檢測
- 參考:
- 使用判別訓練的部件模型進行目標檢測 Object Detection with Discriminatively Trained Part Based Models
- 判別訓練的多尺度可變形部件模型 A Discriminatively Trained, Multiscale, Deformable Part Model
- 目標檢測之LatentSVM和可變形部件模型(Deformable Part Model,DPM)
- 有關可變形部件模型(Deformable Part Model)的一些說明
- DPM(Deformable Parts Model)--原理(一)
- Dalal和Triggs的檢測器即Dalal-Triggs檢測器模型,在PASCAL 2006目標檢測挑戰賽上表現最好,他使用基於HOG特徵的單獨濾波器(模版)來表示目標。它使用滑動窗口方法,將濾波器應用到圖像的所有可能位置和尺度。可以將此檢測器看做一個分類器,它將一張圖片以及圖片中的一個位置和尺度作為輸入,然後判斷在指定位置和尺度是否有目標類別的實例。
- Deformable Part Model(DPM)和 LatentSVM 結合用於目標檢測由大牛P.Felzenszwalb提出,代表作是以下3篇paper:
- [1] P. Felzenszwalb, D. McAllester, D.Ramaman. A Discriminatively Trained, Multiscale, Deformable Part Model. Proceedingsof the IEEE CVPR 2008.
- [2] P. Felzenszwalb, R. Girshick, D.McAllester, D. Ramanan. Object Detection with Discriminatively Trained PartBased Models. IEEE Transactions on Pattern Analysis and Machine Intelligence,Vol. 32, No. 9, September 2010.
- [3] P. Felzenszwalb, R. Girshick, D.McAllester. Cascade Object Detection with Deformable Part Models. Proceedingsof the IEEE CVPR 2010.
- [2]闡述了如何利用DPM(Deformable Part Model,DPM)來做檢測(特徵處理+分類階段),[3]闡述了如何利用cascade思想來加速檢測。綜合來說,作者的思想是HogFeatures+DPM+LatentSVM的結合:
- 1、通過Hog特徵模板來刻畫每一部分,然後進行匹配。並且採用了金字塔,即在不同的解析度上提取Hog特徵。
- 2、利用提出的Deformable PartModel,在進行object detection時,detect window的得分等於part的匹配得分減去模型變化的花費。
- 3、在訓練模型時,需要訓練得到每一個part的Hog模板,以及衡量part位置分布cost的參數。文章中提出了LatentSVM方法,將deformable part model的學習問題轉換為一個分類問題:利用SVM學習,將part的位置分布作為latent values,模型的參數轉化為SVM的分割超平面。具體實現中,作者採用了迭代計算的方法,不斷地更新模型。
- DPM是一個非常成功的目標檢測演算法,DPM連續獲得VOC(Visual Object Class)2007,2008,2009年的檢測冠軍。成為眾多分類器、分割、人體姿態和行為分類的重要部分。
- DPM可以做到人臉檢測和關鍵點定位的一氣呵成,但是其計算量太大導致時間消耗過高。
2014-MSRA的新技術《Joint Cascade Face Detection and Alignmen》 [ECCV]
- 參考:
- Chen D, Ren S, Wei Y, et al. Joint Cascade Face Detection and Alignment[C]// European Conference on Computer Vision. Springer, Cham, 2014:109-122.
- 人臉識別技術大總結1——Face Detection & Alignment
- 論文《Joint Cascade Face Detection and Alignment》筆記
- github:FaceDetect/jointCascade_py
- 結合了 cascade 和 alignment,在30ms的時間裡完成detection和alignment,PR曲線很高,時效性高,內存佔用卻非常低,在一些庫上虐了Face++和Google Picasa。
- 步驟:
- 1.樣本準備:首先作者調用opencv的Viola-Jones分類器,將recal閥值設到99%,這樣能夠儘可能地檢測出所有的臉,但是同時也會有非常多的不是臉的東東被檢測出來。於是,檢測出來的框框們被分成了兩類:是臉和不是臉。這些圖片被resize到96*96。
- 2.特徵提取.作者採用了三種方法:
- 第一種:把window劃分成6*6個小windows,分別提取SIFT特徵,然後連接著36個sift特徵向量成為圖像的特徵。
- 第二種:先求出一個固定的臉的平均shape(27個特徵點的位置,比如眼睛左邊,嘴唇右邊等等),然後以這27個特徵點為中心提取sift特徵,然後連接後作為特徵。
- 第三種:用他們組去年的另一個成果Face Alignment at 3000 FPS via Regressing Local Binary Features (CVPR14) ,也就是圖中的3000FPS方法,回歸出每張臉的shape,然後再以每張臉自己的27個shape points為中心做sift,然後連接得到特徵。
- 3.分類:將上述的三種特徵分別扔到線性SVM中做分類,訓練出一個能分辨一張圖是不是臉的SVM模型。
- 作者將用於關鍵點校準的回歸樹結合上用於檢測的弱分類器重建為一棵新的決策樹,並命名為 classification/regression decision tree (分類回歸決策樹),輸出一個用於判決人臉得分的同時還會輸出關鍵點的增量,可以說這兩步是完全同步的,並且採用的是相同的特徵。越靠前(根節點)的層里,較多的結點用於分類,較少的結點用於回歸;越靠後的層(葉節點)里,較少的結點用於分類,較多的結點用於回歸。
2014-DeepID1 [CVPR ]
- 參考:
- Sun Y, Wang X, Tang X. Deep Learning Face Representation from Predicting 10,000 Classes[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2014:1891-1898.
- Deep Learning Face Representation from Predicting 10,000 Classes論文筆記
- 步驟:
- 人臉標註裁剪出60個patches,分別訓練出60個CNN模型ConvNets(softmax多分類)。
- 每個ConvNets提取兩個160維的特徵(兩個指鏡像,160維是ConvNet模型的倒數第二層提取出),一張圖片提取19200維(160×60×2)。所有這些160維特徵,稱為Deep hidden identity feature(DeepID)。
- 接下來是Face Verification(人臉驗證)過程,即傳入兩張圖片,判斷是否同一人。傳入兩張圖片,分別獲得DeepID特徵,將他們(為60個組拼接而成,一組表示一個patch且有640維,640維= 160維特徵×2張鏡像x2張圖片的某patch)送到聯合貝葉斯(Joint Bayesian,JB)或者一個神經網路( Neural Network,NN)進行Face Verification。
- 聯合貝葉斯網路準確率顯然高於NN,所以最終實驗作者採用的是JB。這個實驗也說明,隨著網路輸入種類(人數)的增大,能夠提高網路的泛化能力,更利於提取的DeepID特徵進行分類。
- 當時的人臉識別方法:過完全的低級別特徵+淺層模型。而ConvNet 能夠有效地提取高級視覺特徵。已有的DL方法:
- Huang【CVPR2012】的生成模型+非監督;
- Cai 【2012】的深度非線性度量學習;
- Sun【CVPR2013】的監督學習+二類分類(人臉校驗 verfication),是作者2013年寫的。本文是1W類的多分類問題。
- 1張圖片通過Deep ConvNets得到DeepID特徵向量,再通過PCA降維特徵向量。最終在LFW庫上測試可以得到97.20%的精度.對齊人臉後能達到97.45%。而目前(2014年)幾種流行演算法數據:
2014-DeepID2 [CVPR ]
- 參考:
- Sun Y, Wang X, Tang X. Deep Learning Face Representation by Joint Identification-Verification[J]. Advances in Neural Information Processing Systems, 2014, 27:1988-1996.
- DeepID2——強大的人臉分類演算法
- DeepID人臉識別演算法之三代
- 在DeepID的softmax使用Logistic Regression作為最終的目標函數,即識別信號。而DeepID2繼續添加驗證信號,兩個信號使用加權的方式進行了組合。 識別信號(identification)增大類間距離,驗證信號(verification)減少類內距離。
- 由於驗證信號的計算需要兩個樣本,所以整個卷積神經網路的訓練過程也就發生了變化,之前是將全部數據切分為小的batch來進行訓練。現在則是每次迭代時隨機抽取兩個樣本,然後進行訓練。
- 首先使用SDM(supervised descent method)演算法對每張人臉檢測出21個landmarks,然後根據這些landmarks,再加上位置、尺度、通道、水平翻轉等因素,每張人臉形成了400張patch,使用200個CNN對其進行訓練,水平翻轉形成的patch跟原始圖片放在一起進行訓練。這樣,就形成了400×160維的向量。這樣形成的特徵維數太高,所以要進行特徵選擇,不同於之前的DeepID直接採用PCA的方式,DeepID2先對patch進行選取,使用前向-後向貪心演算法選取了25個最有效的patch,這樣就只有25×160維向量,然後使用PCA進行降維,降維後為180維,然後再輸入到聯合貝葉斯模型中進行分類
- 在LFW資料庫上得到了99.15%人臉準確率。
- 機器學習--詳解人臉對齊演算法SDM-LBF , 機器學習----人臉對齊的演算法-ASM.AAM..CLM.SDM
2015-DeepID2+ [CVPR]
- 參考:
- Sun Y, Wang X, Tang X. Deeply learned face representations are sparse, selective, and robust[C]// Computer Vision and Pattern Recognition. IEEE, 2015:2892-2900.
- DeepID1 DeepID2 DeepID2+ DeepID3
- DeepID人臉識別演算法之三代
- 相比於DeepID2,DeepID2+做了如下三點修改:
- DeepID特徵從160維提高到512維。
- 訓練集將CelebFaces+和WDRef數據集進行了融合,共有12000人,290000張圖片。
- 將DeepID層不僅和第四層和第三層的max-pooling層連接,還連接了第一層和第二層的max-pooling層。
- DeepID2+自動就對遮擋有很好的魯棒性
- 最後的DeepID2+的網路結構中ve是驗證信號和識別信號加權和的監督信號;FC-n表示第幾層的max-pooling。
- 適度稀疏與二值化: DeepID2+有一個性質,即對每個人照片,最後的DeepID層都大概有半數的單元是激活的,半數的單元是抑制的。而不同的人,激活或抑制的單元是不同的。基於此性質。使用閾值對最後輸出的512維向量進行了二值化處理,發現效果降低僅[0.5%,1%],但二值化後會有好處,即通過計算漢明距離就可以進行檢索了。然後精度保證的情況下,可以使人臉檢索變得速度更快,更接近實用場景。
- 在後續調查極度深網路的效果,在VGG和GooLeNet的基礎上進行構建合適的結構DeepID3,結果發現DeepID3的結果和DeepID2+相當。
2015-CNN級聯實現Viola-Jones人臉檢測器 [CVPR]
- 參考:
- Li H, Lin Z, Shen X, et al. A convolutional neural network cascade for face detection[C]// Computer Vision and Pattern Recognition. IEEE, 2015:5325-5334.
- 論文《A Convolutional Neural Network Cascade for Face Detection》筆記
- github:anson0910/CNN_face_detection
- 基於Viola-Jones,提出級聯的CNN網路結構用於人臉識別,貢獻如下:
- 提出了一種級聯的CNN網路結構用於高速的人臉檢測。
- 設計了一種邊界校訂網路用於更好的定位人臉位置。
- 提出了一種多解析度的CNN網路結構,有著比單網路結構更強的識別能力,和一個微小的額外開銷。
- 在FDDB上達到了當時最高的分數。
- 級聯的三個網路結構,其讀入的圖片解析度和網路的複雜度是逐級遞增的。前面的簡單網路拒絕絕大部分非人臉區域,將難以分辨的交由下一級更複雜的網路以獲得更準確的結果。
- 要想在CNN結構下實現Viola-Jones瀑布級連結構,就要保證瀑布的前端足夠簡單並有較高的召回率且能夠拒絕大部分非人臉區域,將圖片縮放可以滿足需求。
- 這三個網路用於矯正人臉檢測框的邊界,往往得分最高的邊界框並非最佳結果,經過校準後其能更好的定位人臉,其矯正原理是對原圖做45次變換(坐標移動比例、尺寸縮放比例),然後每個變換後的邊界框都有一個得分,對於得分高於某個設定的閾值時,將其累加進原邊界,最後結果取平均,就是最佳邊界框。
2015-Google的FaceNet [CVPR]
- 參考:
- Schroff F, Kalenichenko D, Philbin J. FaceNet: A unified embedding for face recognition and clustering[J]. 2015:815-823.
- FaceNet--Google的人臉識別
- Understanding FaceNet
- 通過卷積網路後的特徵,經過L2歸一化後得到特徵,再採用LMNN(Large margin nearest neighbor,最大間隔最近鄰居)中的Triplet Loss,從而替換掉以往的Softmax結構,Triplet loss是儘可能增大類間距離,減少類內距離。
- 三元組選擇對模型收斂、效率等很重要,文中提出兩種方法:
- 1 每N步線下在數據的子集上生成一些triplet
- 2 在線生成triplet,在每一個mini-batch中選擇hard pos/neg 樣例。
- 論文採用了第2種。為使mini-batch中生成的triplet合理,生成時確保每個mini-batch中每人圖片數量均等,再隨機加入反例。生成triplet的時,要找出所有的anchor-pos對,然後對每個anchor-pos對找出其hard neg樣本。
- LFW上的效果:
- 直接取LFW圖片的中間部分進行訓練,達98.87%左右。
- 使用額外的人臉對齊工具,效果99.63左右,超過DeepID。
- FaceNet不像DeepFace和DeepID需要對齊。且FaceNet得到最終表示後不用像DeepID那樣需要再訓練模型進行分類,它直接計算距離就即可。
- Triplet Loss的目標函數不是這論文首次提出。
2016-人臉檢測中級聯卷積神經網路的聯合訓練《Joint Training of Cascaded CNN for Face Detection》[CVPR]
- 參考:
- Qin H, Yan J, Li X, et al. Joint Training of Cascaded CNN for Face Detection[C]// Computer Vision and Pattern Recognition. IEEE, 2016:3456-3465.
- 有道雲筆記:Joint Training of Cascaded CNN for Face Detection
- 本文是對《A Convolutional Neural Network Cascade for Face Detection》(CNN級聯實現Viola-Jones人臉檢測器)的優化,優化手段就是用BP進行聯合訓練。作者提出了聯合訓練以達到CNN級聯端對端的優化。作者展示了用於訓練CNN的反向傳播演算法可以被用於訓練CNN級聯。聯合訓練可以被用於簡單的CNN級聯和RPN,fast RCNN。
- 現有最好的方法(2016)基本都是用多階段機制。第一個階段提出region proposal 第二個階段是用來detection的網路。級聯cnn和faster rcnn都是這個流程。這些方法都沒有聯合訓練,都是用貪心演算法去優化的。本文中提出的方法是使用bp去優化。所以不同網路的每一層都可以被聯合優化。
- 使用聯合訓練的情況如下:
- 1.detection network 和calibration network可以共享multi-loss network用於detection 和bounding box 回歸。
- 2 因為multi-resolution得到了使用,那麼後一個network將會包括前一個network,那麼可以讓卷積層在三個stage中共享。
- 3.某一個stage的network的參數可以被別的branch聯合優化。
- 可以使用聯合訓練的方法訓練RPN+fast RCNN。
咦表情識別呢??= =
表情識別
2015-多種方法聯合改進《Image based Static Facial Expression Recognition with Multiple Deep Network Learning》
- 1 多種串聯方式檢測人臉
- 2 五個卷積層,三個隨機池層和三個完全連接的層的網路結構。
- 3 較完整地對訓練圖片進行隨機裁剪、翻轉、旋轉、傾斜等等。
- 其中θ是從三個不同值隨機採樣的旋轉角度:{ - π/18,0,π/18}。
- s1和s2是沿著x和y方向的偏斜參數,並且都是從{-0.1,0,0.1}隨機採樣的。
- c是隨機尺度參數。定義為c = 47 /(47 - δ),其中δ是[0,4]上隨機採樣的整數。
- 實際上,用下面的逆映射產生變形的圖像:
- 其中A是歪斜,旋轉和縮放矩陣的組成。輸入(x∈[0,47],y∈[0,47])是變形圖像的像素坐標。簡單地計算逆映射以找到對應的(x,y)。由於所計算的映射大多包含非整數坐標,因此使用雙線性插值來獲得擾動的圖像像素值
- t1和t2是兩個平移參數,其值從{0,δ}被採樣並且與c耦合。
- 4 擾動的學習和投票:
- 架構最後有P個Dense(7),這P個擾動樣本的輸出結果的平均投票,(合併後)作為該圖像的預測值。
- 5 預訓練:
- 樣本隨機擾動
- 訓練時候增加了超過25%或者連續5次增加train loss ,則降低學習率為之前的一半,並重新載入之前損失最好的模型,繼續訓練.
- 6 克服過擬合問題:
- 凍結所有卷積圖層的參數,只允許在完全連接的圖層上更新參數。
- 7 上述都是單一網路,現採用集成多網路方式。
- 常用方法是對輸出響應進行簡單平均。
- 此處採用自適應地為每個網路分配不同的權重,即要學習集合權重w。採用獨立地訓練多個不同初始化的CNN並輸出他們的訓練響應。在加權的集合響應上定義了損失,其中w優化以最小化這種損失。在測試中,學習的w也被用來計算整體的測試響應。
- 在本文中,我們考慮以下兩個優化框架:
- 最大似然方法
- 最小化Hinge loss
2015-用LBP特徵作為CNN輸入《Emotion Recognition in the Wild via Convolutional Neural Networks and Mapped Binary Patterns》對照明變化有魯棒性
作者採用了:
- 4個cnn模型VGG S,VGG M-2048,VGG M-4096和GoogleNet
- 5種不同特徵作為CNN輸入 (RGB, LBP,以及作者額外三種處理的LBP特徵)
- 進行了20次實驗。實驗中10個最好的model中只有一個是RGB作為輸入的。
由於LBP的差值不能反映兩點間的差異,作者提出了mapping方法讓其差能代表兩點真實差距。 將圖像轉換為LBP代碼,使模型對照明亮度變化具有魯棒性。
2015-不同CNN及組合+數據改進《Hierarchical Committee of Deep CNNs with Exponentially-Weighted Decision Fusion for Static Facial Expression Recognition》
EmotiW 2015的冠軍,和《2015-Image based Static Facial Expression Recognition with Multiple Deep Network Learning》類似的方法。
- 先對圖片做align,
- 然後設計了三種CNN,由不同的輸入,不同的訓練數據和不同的初始化訓練了216個model,
- 然後用自己提出的方法將這些model組合起來
- 都是想辦法增加訓練集,讓一張圖片生成多張,
- 又比如訓練多個model結合起來
- 就經常見到的那些方法。
2013-級聯網路5個人臉特徵點定位《Deep Convolutional Network Cascade for Facial Point Detection》
2013年CVPR,論文的主頁 比較經典的做法,分為3大部分進行一步步定位。分別是level1,level2,level3。每個level中有好幾個cnn模型。
- 其中level1(深層網路)是對關鍵點進行準確估計,
- 接下的兩層將對小局部區域進行精細估計(淺層網路)。
- level1中幾個cnn模型分別交錯預測關鍵點(一個cnn模型預測多個點,不同cnn模型預測點有合集)。
- 全部level中會多次預測同一關鍵點,取平均值。
2013-改進的內外輪廓68人臉特徵點定位《Extensive Facial Landmark Localization with Coarse-to-fine Convolutional Network Cascade》[ICCV]
2013年face++的作品ICCV. 這篇是基於face++的前一篇定位5個特徵點《2013-Deep Convolutional Network Cascade for Facial Point Detection》的。
參考: 基於改進Coarse-to-fine CNN網路的人臉特徵點定位
也是採用由粗到細,和上一篇步驟類似,這篇分開了內特徵點和輪廓特徵點的定位。 讓cnn預測bounding box而不是其他人臉檢測器(讓人臉框住最小化無關背景,如內特徵點時可以把人臉輪廓那些部分不納入bounding box)。各個部分分開訓練(五官分開訓練,減少因為不同種類的點定位難度不同而影響訓練)
下圖中表示了全步驟:
- level1是兩個cnn來預測bounding box(crop輸出)。
- level2是對定位的粗估計
- level3是細定位(裁剪後的五官進行訓練預測)
- level4是將level3中圖片進行旋轉再預測(這層的精度提高很小)。
2016-兩個Inception+ SDM提取特徵點來截更小的人臉框《Going Deeper in Facial Expression Recognition using Deep Neural Networks》
人臉特徵點來獲取更小的人臉框(提高4-10%)、兩個Inception的CNN框架。
2013-fer2013第一名71.2%:損失函數為L2-SVM的表情分類《Deep Learning using Linear Support Vector Machines》
- 將損失函數Softmax改為L2-SVM,相比L1-SVM,它具有可微,並且對誤分類有更大的懲罰。
- SVM約束函數如右公式4。改寫為無約束優化問題如公式5,即為L1-SVM的最初形式。公式6為L2-SVM的形式。
- L2-svm通過 argtmax(wTx)t(tn∈{?1,+1})來判斷x的類別。
- 在反向傳播需要對其求導。如公式10為L1-SVM的,它是不可微。而公式11是L2-SVM的且是可微的。 且L2-SVM比L1-SVM效果好些。
- Softmax和L2-SVM在FER2013中的效果如圖:
準備考試啦,先暫停看論文。。 Ort
推薦閱讀:
※如何計算圖像的曲率?
※為什麼有時候看高清照片感覺會比肉眼看實物更清晰?
※如何實現論文中提出的新演算法?
※有哪些有趣的矩陣?
※有哪些看到就好像聽到聲音的圖片?