Supervised Descent Method and its Applications to Face Alignment

廣播說明:
進入深度學習時代,如下的方法已經失去可比性,且我們的代碼實現地很粗糙,如果堅持要用,推薦如下代碼
https://github.com/wanglin193/SupervisedDescentMethod (看起來作者對sdm實現的不錯)

另外一篇基于深度學習的基于回歸的方法,也是使用的基于SDM的相同的思路,但是全部深度學習化,
更加魯棒。 見:《Stacked Hourglass Network for Robust Facial Landmark Localisation》


本方法是當前人臉對齊最流行的算法,速度很快,很穩定。下面我將介紹一下這篇文章的整體思路和相關細節。
在介紹之前,先給出幾個有用的鏈接:
1.)
本論文作者主頁,形象地介紹了SDM的特點:
http://xiong828.github.io/sdm.html
2. )
superviseddescent C++11版本的實現:
http://patrikhuber.github.io/superviseddescent/
下面開始介紹:
人臉對齊就是要找人臉的特征點。如圖

我們要找到眼睛、鼻子、嘴巴等特征點。那么如何去做呢?方法有很多。本文講述了使用SDM去求特征點的方法。假設我們有一個初始的特征點x0x0,希望通過迭代,逐步求出準確地特征點x?x?。這就是大致的思路。

SDM方法(Supervised Descent Method )

Derivation of SDM

給定一幅含有m個像素的圖像dRm×1d∈Rm×1,d(x)Rp×1d(x)∈Rp×1用來索引圖像的p個特征點,x代表p個特征點。h(d(x))R128p×1h(d(x))∈R128p×1代表SIFT特征向量。在訓練階段,我們假設準確的p個特征點已知,設為x?x?。我們另外選取訓練集特征點的平均值x0x0作為初始值。如圖:

這樣,Face Alignment可以通過在ΔxΔx求解如下的最優化問題:

f(x0+Δx)=||h(d(x0+Δx))?Φ?||22f(x0+Δx)=||h(d(x0+Δx))?Φ?||22

這里 Φ?=h(d(x?))Φ?=h(d(x?))代表手工標記的特征點的SIFT特征。在訓練階段, Φ?Φ? ΔxΔx已知。
f(x0+Δx)f(x0)+Jf(x0)TΔx+12ΔxTH(x0)Δxf(x0+Δx)≈f(x0)+Jf(x0)TΔx+12ΔxTH(x0)Δx

對上面關于 ΔxΔx求導,令 f(x0+Δx)=0f′(x0+Δx)=0,可得
Δx1=?H?1Jf=?2H?1JTh(Φ0?Φ?)Δx1=?H?1Jf=?2H?1JhT(Φ0?Φ?)

,這里 Φ0=h(d(x0))Φ0=h(d(x0)).
R=?2H?1JThΔΦ0=Φ0?Φ?R=?2H?1JhT,ΔΦ0=Φ0?Φ?,于是R可看作 Δx1Δx1 ΔΦ0ΔΦ0的線性回歸系數。但是,我們知道在測試階段, Φ?Φ?是未知的,但是固定的。因此我們不再使用 Φ?Φ?做訓練,而是改用下面的公式:
Δx1Δx1Δx1===?2H?1JTh(Φ0?Φ?)?2H?1JThΦ0+(?2H?1JTh)(?Φ?)RΦ0+b0Δx1=?2H?1JhT(Φ0?Φ?)Δx1=?2H?1JhTΦ0+(?2H?1JhT)(?Φ?)Δx1=RΦ0+b0

使用訓練樣本,我們的方法可以學習 R0,b0R0,b0.
通常這種方法不可能一步迭代完成,需要進行多步,除非f是二次的。為了處理這個非二次的方程,SDM將產生一系列的下降方向 {Rk}{Rk}和偏差 {bk}{bk}.

xk=xk?1+Rk?1Φk?1+bk?1(1)(1)(1)xk=xk?1+Rk?1Φk?1+bk?1(1)
,使得對于訓練圖片集, xkxk將收斂到 x?x?.

Learning for SDM

假定給定一系列人臉{di}{di}與對應的特征點{xi?}{x?i}.對于每張圖片,從初始的特征點xi0x0i出發,R0,b0R0,b0可以通過求解最優化問題獲得:

argR0minb0dip(xi0)||Δxi?R0Φi0?b0||2dxi0argR0minb0∑di∫p(x0i)||Δxi?R0Φ0i?b0||2dx0i

這里 Δxi=xi??xi0,Φi0=h(di(xi0))Δxi=x?i?x0i,Φ0i=h(di(x0i)).
我們假定 xi0x0i可以從服從正態分布的人臉檢測框對齊采樣。于是上面的最優化問題化為:
argR0minb0dixi0||Δxi?R0Φi0?b0||2argR0minb0∑di∑x0i||Δxi?R0Φ0i?b0||2

以上方程是個線性的最優化問題,可以直接求解。
當第一步求解完畢后,代入方程式(1),可以求出 x1x1,進而又可以計算特征向量 Φik=h(di(xik))Φki=h(di(xki)) Δxki?=xi??xikΔx?ki=x?i?xki.這樣 Rk,bkRk,bk可以通過一個新的線性回歸得到。
argRkminbkdixik||Δxki??RkΦik?bk||2argRkminbk∑di∑xki||Δx?ki?RkΦki?bk||2

隨著k的增大,誤差逐漸減小,一般4到5次的迭代就可以達到比較好的效果。

Training for SDM

當我們計算出一系列的{Rk},{bk}{Rk},{bk},我們就可以通過迭代式(1)通過迭代求解特征點。一般初始的特征點可以選取訓練時的初始特征點。
后續我們還會給出SDM方法的Matlab代碼及相關說明,你就會看到比較清楚的步驟和效果了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

導出Excel神器最終版

泛型列表導出Excel&#xff1a; 最近好多導出問題就整這么個玩意共享給大家public class Export{/// <summary>/// 泛型導出Excel/// </summary>/// <param name"strCaption">Excel文件中的標題</param>/// <param name"pList"…

國外計算機課程lab,計算機系統實驗之bomblab

今天剛剛驗收CSAPP實驗3&#xff0c;趁著余溫&#xff0c;記錄一下這個實驗&#xff0c;順便回顧下CSAPP課程的相關知識。實驗目的1.使用gdb工具反匯編出匯編代碼&#xff0c;結合c語言文件找到每個關卡的入口函數。然后分析匯編代碼&#xff0c;分析得到每一關的通關密碼。2.熟…

批量實現ssh免交互認證

因為要部署一批服務器&#xff0c;為了以后管理方便&#xff0c;要進行免密認證。一臺一臺做很費時&#xff0c;腳本又得手動輸密碼。于是上網搜了搜&#xff0c;發現一個非常簡單的免交互認證&#xff0c;不需要入密碼即可完成&#xff01;環境&#xff1a;centos 6.8 虛擬機V…

CSS兼容IE6,IE7,FF的技巧(COPY來的,還沒看)

一、CSS HACK 以下兩種方法幾乎能解決現今所有HACK.翻閱很多資料&#xff0c;已測試可以使用。 1, !important 隨著IE7對!important的支持, !important 方法現在只針對IE6的HACK.(注意寫法.記得該聲明位置需要提前.) PLAIN TEXT CSS: #wrapper { width: 100px!important; /* IE…

計算機復制粘貼教案,信息技術《文本的復制與移動》教案

一、教學內容分析本課是小學信息技術教材四年級下冊第十八課文本的復制與移動。是在學生掌握了文件夾的復制、移動&#xff0c;以及掌握了Word的啟動、退出&#xff0c;在Word中輸入文字并保存等內容之后的又一個知識點&#xff0c;學好這一課為學生以后學習文本的編輯與操作&a…

ajax基礎知識

AJAX 指異步JavaScript及XML&#xff08;Asynchronous JavaScript And XML&#xff09;運用ajax步驟&#xff1a;創建對象&#xff08;注意IE6兼容問題&#xff09;、連接服務器、發送請求、接收返回ajax的readystate屬性&#xff1a;0&#xff1a;表示未初始化1&#xff1a;表…

SDM For Face Alignment 流程介紹及Matlab代碼實現之預處理篇

SDM全稱為 Supervised Descent Method&#xff0c;是一種機器學習的方法&#xff0c;可以被用來做Face Alignment. 下面我們將通過matlab代碼來梳理整個實現的過程。 預處理階段 Input&#xff1a; ../data/lfpw/trainset &#xff08;811張圖片&#xff09; Output: mean_…

Nginx初識

configure腳本&#xff1a;1、cat <EOF >>test.txtEOF多行追加2、uname用于打印當前操作系統的相關信息3、2>/dev/null/dev/null 代表空設備文件 1 表示stdout標準輸出&#xff0c;系統默認值是1&#xff0c;所以">/dev/null"等同于"1>/dev/n…

linux中shell變量$#,$@,$0,$1,$2的含義解釋

linux中shell變量$#,$,$0,$1,$2的含義解釋: 變量說明: $$ Shell本身的PID&#xff08;ProcessID&#xff09; $! Shell最后運行的后臺Process的PID $? 最后運行的命令的結束代碼&#xff08;返回值&#xff09; $- 使用Set命令設定的Flag一覽 $* 所有參數列表。如"$*&quo…

分享25個新鮮出爐的 Photoshop 高級教程

網絡上眾多優秀的 Photoshop 實例教程是提高 Photoshop 技能的最佳學習途徑。今天&#xff0c;我向大家分享25個新鮮出爐的 Photoshop 高級教程&#xff0c;提高你的設計技巧&#xff0c;制作時尚的圖片效果。這些教程可以幫助把你的想法變成現實&#xff0c;并創造新的東西。 …

北京林業大學計算機技術復試,北京林業大學計算機應用技術04年考研復試辦法...

一、復試小組的組成原則和人數計算機應用技術學科碩士研究生復試小組由具有副教授以上(含副教授)職稱的研究生導師和具有博士學位的副教授組成&#xff0c;人數為3~5人。組長有學科負責人擔任&#xff0c;設秘書1名。二、專業課的考核形式和要求專業課的考核形式為筆試和口試。…

SDM For Face Alignment 流程介紹及Matlab代碼實現之訓練篇

SDM 訓練階段的任務如下&#xff1a; 載入標準化的數據&#xff08;包括400*400的正臉及特征點&#xff09;對每一張標準化的圖片&#xff0c;模擬人臉檢測儀&#xff0c;產生10個擾動的人臉框及相應的初始特征點x0。求解Δx,Φ,其中Δxx??x0,x?表示true shape,Φ表示每個特…

Hibernate5-多對1(n:1)-fetch=join

1.創建項目,項目名稱hibernatedemo26,目錄結構如圖所示2.在項目中創建lib目錄存儲jar文件,目錄結構如圖所示3.在src目錄中創建實體類Forum,包名(com.mycompany.demo.bean),如圖所示4.實體類Forum的內容如下package com.mycompany.demo.bean;import java.util.Set;public class …

如何使用固定二級子域名公網訪問多個本地Windows Web網站

文章目錄 1. 下載windows版Nginx2. 配置Nginx3. 測試局域網訪問4. cpolar內網穿透5. 測試公網訪問6. 配置固定二級子域名7. 測試訪問公網固定二級子域名 1. 下載windows版Nginx 進入官方網站(http://nginx.org/en/download.html)下載windows版的nginx 下載好后解壓進入nginx目…

部分和問題

0-1部分和 問題描述&#xff1a;有n個大小不同的數字a&#xff0c;判斷是否能從中取出若干個數&#xff0c;使得這些數的和為k。解決思路&#xff1a;利用DFS(深度優先搜索)來解決&#xff0c;用dfs(i,j)表示前i個數字能否得到部分和j,則根據前i1個數的能否得到部分和j或ja[i1]…

實驗 6 數組1

//輸入n個整數&#xff0c;將它們存入數組a中。輸出最大值和它所對應的下標。 #include<stdio.h> int main(void) {int n,i,x;int a[10];x0;printf("enter n:");scanf("%d",&n);for(i0;i<n;i){printf("enter :");scanf("%d&qu…

初中計算機職稱答辯,晉升中學語文高級教師職稱答辯內容舉例

晉升中學語文高級教師職稱答辯內容舉例 晉升中學語文高級教師職稱答辯秘籍 最重要的一點&#xff1a;你要對課本上的重點篇目非常熟悉&#xff01;對于現代文來說作者、題材、課文重點、重點句子詞語、中心思想等你都要明了。對于文言文來說&#xff0c;要求學生掌握的&#xf…

SDM For Face Alignment流程介紹及Matlab代碼實現之測試篇

測試很簡單了&#xff0c;只需要載入數據&#xff0c;然后做正則化處理&#xff0c;使用訓練模型產生的{Rk},就可以預測特征點了。 face_alignment.m:用來預測特征點 function shape face_alignment( ShapeModel, DataVariation,...LearnedCascadedModel, Data, img, shape,…

Flink – JobManager.submitJob

JobManager作為actor&#xff0c; case SubmitJob(jobGraph, listeningBehaviour) >val client sender()val jobInfo new JobInfo(client, listeningBehaviour, System.currentTimeMillis(),jobGraph.getSessionTimeout)submitJob(jobGraph, jobInfo) submitJob&#xff0…

window內容

window parent top location.href location.reload location.replace轉載于:https://www.cnblogs.com/carlos-guo/p/3391784.html