深度學(xué)習(xí)的實(shí)時面部姿勢估計(jì)研究
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
面部識別是深度學(xué)習(xí)的蓬勃發(fā)展的應(yīng)用。從電話到機(jī)場攝像頭,無論是在商業(yè)上還是在研究領(lǐng)域,該行業(yè)都得到了迅速的普及。當(dāng)我們將其與姿勢估計(jì)相結(jié)合時,我們將獲得非常強(qiáng)大的功能。

由于人的臉部是立體對象,因此它可以在所有三個軸上旋轉(zhuǎn)-當(dāng)然有一些限制。在人臉姿勢估計(jì)問題中,我們將這些運(yùn)動稱為側(cè)傾,俯仰和偏航,如下圖所示:

估計(jì)這些姿勢對于活動檢測系統(tǒng)非常有用。例如,它可能會要求用戶執(zhí)行一些預(yù)定義的隨機(jī)運(yùn)動(例如,“將您的臉向右旋轉(zhuǎn)”)以檢查其活動狀況。
對于這個問題,我們創(chuàng)建了一個數(shù)據(jù)庫,其中包含來自不同面部數(shù)據(jù)集的6,288張圖像。對于每個圖像,我們使用Dlib檢測面部標(biāo)志,并計(jì)算所有點(diǎn)之間的成對歐幾里德距離。因此,給定68點(diǎn),我們最終得到(68 * 67)/ 2 = 2,278個特征。每個面孔的側(cè)傾,俯仰和偏航都由Amazon的Face Detection API標(biāo)記。

現(xiàn)在,可以訓(xùn)練我們的模型了。我們將Keras用于此步驟。在C ++應(yīng)用程序中使用它。經(jīng)過幾次嘗試,我最終得到以下配置:

強(qiáng)調(diào)一些有關(guān)我們的模型架構(gòu)的細(xì)節(jié):
1. 強(qiáng)大的正則化:由于我們具有許多功能,因此我的網(wǎng)絡(luò)中很少提供正則化類型,以防止過度擬合和處理維數(shù)的限制。首先,所有層都具有L2正則化,因?yàn)槲覀儾幌MP蛯δ承┕δ苓^分注重視,尤其是在第一層中。另外,模型的架構(gòu)本身是一種正則化。它遵循自動編碼器的模式,其中每個層的神經(jīng)元數(shù)量少于以前的數(shù)量,以“迫使”網(wǎng)絡(luò)學(xué)習(xí)相關(guān)信息并忽略不相關(guān)的信息。
2. 我們本可以在第一層中使用L1正則化來迫使網(wǎng)絡(luò)忽略不必要的功能(因?yàn)檫@種正則化往往會將與此類信息相關(guān)的權(quán)重設(shè)置為零)。但是,由于已經(jīng)對網(wǎng)絡(luò)進(jìn)行了嚴(yán)格的規(guī)范化,因此在我們的測試中,L2正則化也略勝一籌。
這是訓(xùn)練了100個時間段后的損失圖表:

如圖所示,在數(shù)據(jù)集上,我們的模型取得了不錯的結(jié)果。該圖還遵循訓(xùn)練深度學(xué)習(xí)模型時預(yù)期的模式。由于我們使用MSE作為損失函數(shù),因此我們可以估計(jì)模型的誤差為±6o。
在下圖中,我們可以看到測試集中每個點(diǎn)的實(shí)際角度和預(yù)測角度之間的差異。我們可以看到,偏航是最容易預(yù)測的,其次分別是側(cè)傾和俯仰。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

