無需看到你的臉就能認出你——實現Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues


今年年初Facebook AI Research發布了一篇名為Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues的人物識別的文章。

正好公司mentor想搞一個類似的東西看看能不能做一個智能相冊出來(有點像iphoto和新版的lightroom里面那個根據人的id來分子相冊),於是就實現了一下。

如果只想要代碼的話就不用往下看了,請直接點擊:https://github.com/sciencefans/Beyond-Frontal-Faces

由於使用了定制的caffe的matlab接口,所以想要跑通需要根據你自己的接口來改一下,還是需要折騰的~

其中feature文件夾下給出了我跑出來的test集上有臉的所有圖片的特征向量和labels,可以直接訓練svm或者knn跑跑看。

在我的試驗中1nn(最鄰近)算法居然比svm搞了快10個點。。。

轉載請說明轉自http://www.cnblogs.com/sciencefans/

整篇文章噱頭滿滿,總結一下有以下貢獻:

1.作者從flickr上收集了一個叫People In Photo Albums (PIPA)的數據庫,其中:1)標注了人的頭的位置,注意是頭的位置不是臉的位置;2)有一半的人都是沒有臉的;3)包含60000張圖,2000多個人;4)數據庫分成了三個子庫,train,valid和test,互不相交。

具體的一些例子如下:

 

 

2.文章提出了一個叫Pose Invariant PErson Recognition(PIPER) 的方法,其實就是搞了109個分類器(具體哪109個后面說),用了一個線性分數疊加來做最后的得分,這個model在上述PIPA的test集上得到了83.05%的准確率,如果只看有臉的圖片,准確率能夠到達93.4%。這個結果超過了deepface(只有89.3%)。

3.想不出有什么別的貢獻了。

一句話總結這篇文章就是:提出了一個標注了頭部的數據庫,想了一種方法線性疊加了109個CNN-SVM模型來獲得了一個很好的identify效果。

下面具體來說一說這109個分類器:

109分類器=用人體的107個poselet(詳見參考文獻2)分別訓練出來的107個CNN(這一步是在Imagenet模型上finetune的,並不是直接訓練的)+1個global model(用整個身體來訓練一個CNN,一樣是finetune)+1個基於DeepFace(詳見參考文獻3)提出的特征的SVM分類器。

這109個分類器都是神經網絡的倒數第二層(fc7)作為特征來訓練出的SVM。

怎么組合這109個分類器給出的得分呢?首先計算圖片的每個poselet的激活程度(得分程度),如果沒有激活(得分很低),則使用global model來代替。計算公式如下:

其中Pi就是第i個poselet的svm對X的預測

Fi指的是訓練集中擁有第i個poselet的人物的集合,是所有identity的子集。

得到了Pi之后,就可以計算每個分類器的權重w了。

文章使用validation集合來計算得出w,方法還是svm:

對於任意一張圖j,它的第i個poselet分類器的得分是

一共有K個poselet分類器的話,一張圖就一共有K+1個得分(加上global model)

這樣就相當於一個圖可以用一個K+1維的向量表示,用這個特征向量和來訓練出一個二分類SVM(label是j是否屬於y這個人)

最后每個分類器的權重就是最后這個SVM模型的權重w。

接下來就是實驗結果:

然后作者又用特征做了一下聚類,得到了如下結果:

論文到這里就結束了,我覺得搞這么多分類器來做得分疊加是一個很簡單暴力的想法。

復現的時候我用Zeiler網絡訓練了臉部和global兩個model,基於caffe框架在8顆Tesla K40m上跑了整整兩天。

其中global model是純粹根據頭部位置計算出的一個矩形區域,效果只做到了百分之三十多(最新更新,效果以做到69.59%)。但是臉部區域達到了和論文近似的效果——全部test集做cross validation得到了82%(91.68%),只看有臉的圖能達到91%(93.90%)。這一復現均超越了原文,我猜原因可能是我們的face feature比較好吧。

=======================

參考文獻

[1]Ning Zhang, et al, Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues

[2]L. Bourdev and J. Malik. Poselets: Body part detectors trained using 3D human pose annotations. In International Conference on Computer Vision (ICCV), 2009

[3]Y. Taigman, M. Yang, M. Ranzato, and L. Wolf. DeepFace: Closing the Gap to Human-Level Performance in Face Verification. In Conference on Computer Vision and Pattern Recognition (CVPR), 2014


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM