face alignment by 3000 fps系列學習總結

我們主要講一講Github上給出的matlab開源代碼《jwyang/face-alignment》的配置。
首先聲明:本人第一次配置的時候也是參考了csdn一個作者和github給出的說明配置成功的。其實后來想想很簡單的,但是可能對于初學者,還是有一定的困難。為此,本人將自己的一些心得列出來,以供參考。
另外,本人對代碼做了詳盡的注釋,代碼下載地址:http://pan.baidu.com/s/1nu58xx3

  1. 下載源代碼:https://github.com/jwyang/face-alignment
  2. 環境:windows64位+matlab2014a
  3. 下載數據庫,本人給出自己收集的一個數據集。見百度網盤(密碼:in)。注意:我們這里訓練的是68個特征點的,我那個數據集還有29個點和194個點的。
  4. 為代碼中的訓練樣本函數的依賴庫liblinear做配置,從http://www.csie.ntu.edu.tw/~cjlin/liblinear/,可以直接下載liblinear庫,然后如果你的系統是windows64位的就直接從里面的windows文件夾中將里面的文件全部拷貝到matlab的工程文件夾中(我就是這樣干的,當然你也可以自己編譯,參考文獻:http://blog.sina.com.cn/s/blog_5bd2cb260100ev25.html)。(本人也上傳了一個下好的liblinear庫)
  5. 準備數據,建立一個文件夾叫datasets,里面可以放你下好的數據,包括圖片和shape txt.
  6. 因為train_model.m文件中
 for i = 1:length(dbnames)% load training samples (including training images, and groundtruth shapes)if strcmp(dbnames{i},'lfpw')==1imgpathlistfile = strcat('./datasets/', dbnames{i}, '/trainset/Path_Images.txt');elseimgpathlistfile = strcat('./datasets/', dbnames{i}, '/Path_Images.txt');endtr_data = loadsamples(imgpathlistfile, 2);Tr_Data = [Tr_Data; tr_data];
end

表示讀入訓練樣本的數據的文件是Path_Images.txt,所以進入控制臺(cmd)先轉到目錄../datasets/afw,然后輸入命令dir /b/s/p/w .jpg>Path_Images.txt,這是將所有jpg的文件的文件名都輸入到Path_Images.txt文件中,同樣轉到目錄../datasets/lfpw/trainset文件夾中輸入命令dir /b/s/p/w .png>Path_Images.txt,因為lfpw的數據都是png文件。注意train數據集和test數據集都要做一遍。

注意:afw,ibug都是只有一個數據集,而lfpw分為兩個,一個訓練集,一個測試集。
7. 然后我們開始訓練樣本,在matlab文件夾下新建一個m文件,例如我這里建的是:train_start.m,然后里面輸入一下代碼:

filepath_model='./models/LBFRegModel.mat';LBFRegModel=train_model({'lfpw'});save(filepath_model,'LBFRegModel');

和《Face Alignment at 3000FPS工程配置》略有不同,其實本質一樣。都是為了保存訓練好的數據。只不過他分開保存,我一塊而保存而已。

然后執行,訓練樣本的時間可能會過長。目的是將訓練后的結果導入LBFRegModel.mat文件夾中.當訓練完畢后,可以在./models文件夾下看到LBFRegModel.mat。
8. 觀看結果。在matlab文件夾下新建一個m文件,例如我這里建的是:test_start.m,在里面輸入下面代碼:

filepath_model='./models/LBFRegModel.mat';
m=load(filepath_model,'LBFRegModel');
t=m.LBFRegModel;
[predshapes,Data]=test_model({'lfpw'},t);
[X,Y,N]=size(predshapes);
for i=1:Nshapes=predshapes(:,:,i);img=Data{i}.img_gray;drawshapes(img, [shapes,Data{i}.shape_gt]);rectangle('Position',  Data{i}.bbox_facedet, 'EdgeColor', 'b');hold off;pause;
end

就可以看到結果了。
PS: Github上有作者自己訓練的一個模型。使用時只需放在models里面,并將test_start.m中改為filepath_model=’./models/LBFRegModel_best.mat’;再將./src/config_te.m打開,將models/config_te_best.txt的內容復制進來即可。

另外:關于3000fps方法,網上也有許多好的資料,這里給出兩個鏈接:
http://blog.luoyetx.com/2015/08/face-alignment-at-3000fps/#
http://freesouls.github.io/2015/06/07/face-alignment-local-binary-feature/(中間求特征樹有一點問題,可以參考文中后面的答復).

后面,我會詳細講解這個matlab代碼的原理,重點是預處理和訓練,測試基本和訓練相同。

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

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

相關文章

paypal之nodejs 框架 Kraken-js 源碼分析

本文是基于 kraken-js 0.6.1 版本的 關于如何使用kraken-js 可以去看看官網的使用文檔 點擊這里 。kraken-js 是基于express之上的,目的在于讓工程師更多的去關注代碼邏輯,少關注自身的開發環境,所以他將express所有的一些公用的配置都寫在了…

go build 參數_Go語言 通過go bulid -tags 實現編譯控制

Go語言提供的build tag 條件編譯特性,顧名思義,只有在特定條件下才會構建對應的代碼。比如下面的源文件只有在設置debug構建標志時才會被構建:// build debugpackage mainvar buildMode "debug"可以用以下命令構建:go …

selinux 的管理

第十單元selinux 的管理一 顯示及更改 SELINUX 模式getenforce ###顯示selinux模式setenforce 0|1 ##0指permissive警告,1 表示 enforcing強制###vim /etc/sysconfig/selinux ###修改selinux開機狀態###注:disable表示關閉&…

ubuntu15.10下安裝opencv2.4.9python上調用opencv庫

對于centos,可以參考:Install OpenCV-Python in Fedora 如果IPP難以下載可以在cmake時禁掉它,只需:cmake -DWITH_IPPOFF OpenCV3.3CUDA9.0 安裝過程中遇到的問題,解析: https://blog.csdn.net/u014613745/a…

【轉】jquery 注冊事件的方法

原文鏈接:http://outofmemory.cn/code-snippet/2123/jquery-zhuce-event-method 1.使用事件名來綁定,可用的事件名有 change,click,dblclick,error,focus,focusin,focusout,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,…

ffmpeg 時間戳

轉http://blog.csdn.net/yfh1985sdq/article/details/5721953 AVpacket里的時間戳pts和dts.單位好像是us. 問 : 時間戳pts和dts,這里兩個時間戳各有什么意義? 答 : 顯示時間,解碼時間. DTS:decoding time stamp PTS:presentation time stamp Generally …

鍵盤改鍵軟件_一秒五鍵,一鍵三招,萬種光污染,杜伽K310櫻桃軸機械鍵盤感受...

機械鍵盤我一直用的青軸,或者各種其他名字但其實本質就是青軸的。喜歡青軸那種清脆的聲音,在我聽來如同山間小溪流水般的叮咚。不過這聲音在夜間分外的具有穿透力,更會在人身體不好的時候難以承受,所以每每用過之后卻又不得不換回…

ubuntu 15.10下cmake 的安裝

因為原先ubuntu自帶的cmake有點舊,就想著安裝個最新的,可是直接安裝卡在了某一步上,后面有說明。現將正確的安裝方法列出來。1.卸載原有的版本sudo apt-get autoremove cmake2. 下載最新的cmake :https://cmake.org/download/3. 解壓&#xf…

codeigniter鉤子的使用

CodeIgniter 的鉤子功能,使得我們可以在不修改系統核心文件的基礎上,來改變或增加系統的核心運行功能。可是鉤子究竟該怎么用呢?雖然不是很難,不過很多剛用ci的朋友可能還是不明白怎么用。 通過本文的簡單實例,大家一下…

wxWidgets之wxGrid控件

1. 介紹wxGrid控件時wxWidgets界面庫中內置的網格控件。通經常使用來顯示表格數據。該控件擁有強大的功能。開發人員可依據自己的需求對其進行定制。 2. 經常使用API 構造函數:wxGrid ()wxGrid (wxWindow *parent, wxWindowID id, const wxPoint &poswxDef…

powerdesigner畫關系圖_想畫好手繪,這些圖你一定要畫一下!

畫好手繪除了對透視要深入了解掌握以及線條運用把握之外,還有很重要的就是要對空間物體的關系、比例、光影關系都要理解透徹。大體快可分割成多個x小體塊。其實當年學習的繪畫基礎也是畫好手繪的基礎,畫手繪依然需要去理解整體畫面的空間黑白灰、物體穿插…

C#,pdf文件轉換成圖片文件。

本文采用Adobe Acrobat9.0的COM組件,將Pdf文件的每一頁轉換成對應的圖片文件。 開發環境:VS2010,.Net Framework4.0,Adobe Acrobat9.0。 工程中添加COM引用:Adobe Acrobat 9.0 Type Library(必須裝了Adobe …

Android進程間通信

一.Linux系統進程間通信有哪些方式? 1.socket; 2.name pipe命名管道; 3.message queue消息隊列; 4.singal信號量; 5.share memory共享內存; 二.Java系統的通信方式是什么? 1.socket; 2.name pip…

最新的一些開源face alignment及評價

dlib :https://github.com/davisking/dlib/tree/v18.18 評價:速度快,可商用,有些時候不太準確 2. CLM-framework: https://github.com/TadasBaltrusaitis/CLM-framework 評價:很準確,不可商用 3. Face Detection…

1048 石子歸并

1048 石子歸并 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 黃金 Gold 題目描述 Description有n堆石子排成一列,每堆石子有一個重量w[i], 每次合并可以合并相鄰的兩堆石子,一次合并的代價為兩堆石子的重量和w[i]w[i1]。問安排怎樣的合并順序&#xf…

internetreadfile讀取數據長度為0_【完結】TensorFlow2.0 快速上手手冊

大家好,這是專欄《TensorFlow2.0》的第五篇文章,我們對專欄《TensorFlow2.0》進行一個總結。我們知道全新的TensorFlow2.0 Alpha已經于2019年3月被發布,新版本對TensorFLow的使用方式進行了重大改進,為了滿足各位AI人對TensorFlow…

Facial Landmark Detection(人臉特征點檢測)

原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作為計算機視覺研究員,我們很早就開始研究人臉。人臉分析領域最廣為人知的就是人臉識別(face recognition).但是為了識別一幅圖像中的人臉&…

cpu卡操作協議iso14443協議

http://baike.baidu.com/link?url3mef2ZMRoNuBrVLA2HpEh8xrBtzACdIi5nIDUsMyVkA8OulIXGWgswvFcTiBfh_B轉載于:https://www.cnblogs.com/shuenjian901/p/3496331.html

Python 字符串的內置函數

方法描述string.capitalize()把字符串的第一個字符大寫string.center(width)返回一個原字符串居中,并使用空格填充至長度 width 的新字符串string.count(str, beg0, endlen(string))返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str …

Java中的Error和Exceptiond的異同點

Error和Exception的異同點: (1)Error類和Exception類都繼承超類Java.lang.Throwable (2)Error:一般指與虛擬機相關的問題,如系統崩潰,內存溢出等。對于這類錯誤,僅靠程序…