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

image

原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375

作為計算機視覺研究員,我們很早就開始研究人臉。人臉分析領域最廣為人知的就是人臉識別(face recognition).但是為了識別一幅圖像中的人臉,我們首先必須要找到圖像中人臉的位置。因此人臉檢測(face detection)-定位一幅圖像中的人臉并且返回一個包圍人臉的矩形或者正方形(bounding rectangle/square)是一個熱門的研究領域。2001年,Paul Viola 和Michael Jones 發表了史詩級論文<< “Rapid Object Detection using a Boosted Cascade of Simple Features.>>.在OpenCV早期甚至某種程度下在現在,OpenCV的致命武器就是對
Viola and Jones face detector的一個比較好的實現。

一旦你找到了人臉附近的包圍盒,最顯然的研究當然是準確識別人臉不同特征的位置(比如,眼角、瞳孔、嘴巴、鼻子等)。人臉特征檢測(face feature detection)也稱為 “facial landmark detection”, “facial keypoint detection” and “face alignment”,你可以在Google找到類似的文獻。

Facial Keypoint Detection

人臉關鍵點檢測有很多應用。如下做了一些列舉:

Facial feature detection improves face recognition

人臉特征點可以被用來將人臉對齊到平均人臉(mean face shape),這樣在對齊之后所有圖像中的人臉特征點的位置幾乎是相同的。直觀上來看,用對齊后的圖像訓練的人臉識別算法更加有效,這個直覺已經被很多論文驗證。

Head pose estimation

一旦你知道了一些特征點的位置,你也可以估計頭部的姿勢。換句話說,你可以解決頭部在空間中的定向問題,或者通俗的講就是人朝那里看的問題。

Face Morphing (人臉變形)

人臉特征點可以對齊人臉,這樣可以生成兩張人臉的中間圖像。如下圖:
image

Virtual Makeover(虛擬化妝)

在我的公司
我們已經寫了自己的人臉特征點檢測器。檢測出的特征點被用來計算嘴的輪廓,眼睛等用來渲染虛擬化妝。Figure2z展示了這一效果:
image

Face Replacement

如何兩張人臉的特征點已經估計出來了,你可以將一張人臉對齊到另一張人臉,并且可以無縫換臉。你也可以做像下面一樣傻瓜的事。
https://auduno.github.io/clmtrackr/examples/facesubstitution.html

先前的報告中,我們展示了如何使用人臉特征點去預測人臉的吸引力。

很明顯,在圖片和視頻上進行人臉特征點檢測為許多有趣的應用提供了很多的可能性。下面我們就將介紹一些有用的特征點檢測工具。

Facial Feature Detection & Tracking Libraries

過去五年來,這個領域很火,部分原因是大量可以用來訓練的數據如LFPW、Helen被提供。我在下一節列了很多論文。但是我不建議胡亂實現這些論文,因為已經有開源的實現。

下面的視頻中,你可以看到兩個庫DlibCLM-framework.
http://7xrqgw.com1.z0.glb.clouddn.com/dlib_clm.mp4

Dlib(C++/Python)

Dlib是機器學習,計算機視覺,圖像處理,線性代數中眾多算法的集合。庫中大多數是頭文件,你可以直接直接包含在C++應用中。或者你更喜歡Python?沒問題,他也有一個Python接口.

我個人更喜歡Dlib因為代碼是簡潔的,有大量的注釋,也可以被用來商用。他們選擇實現的算法是非常快的,并且是準確的,你可以很容易集成這個庫到你的C++工程中,而你需要做的僅僅是包含頭文件.

如何編譯Dlib?

  1. 從Github上下載:
git clone https://github.com/davisking/dlib.git
  1. 建立Examples(OSX\Linux)
cd dlib/examples
mkdir build
cd build
cmake .. 
cmake --build . --config Release

這些例子是一個開始使用Dlib的非常好的方法。拷貝一個例子的cpp文件,修改它,修改examples/CMakeLists.txt 并且像上面一樣再一次編譯它。很容易吧!
3. 編譯dlib python 模塊

cd dlib/python_examples 
./compile_dlib_python_module.bat
  1. 設置 PYTHONPATH 環境變量
# Put the following line in .bashrc or .profile
export PYTHONPATH=/path/to/dlib/python_examples:$PYTHONPATH
  1. 測試python模塊
python -c "import dlib"

如果以上都沒有問題的話,你就設置好了。

How to run Dlib’s facial landmark detector ?

當你編譯好examples后,為了在網絡攝像頭上運行人臉特征點檢測器,可以這樣做:

cd examples/build/
#Download the face landmark model 
wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
tar xvjf shape_predictor_68_face_landmarks.dat.bz2
./webcam_face_pose_ex

如果你想要在單個圖像上運行,你可以這樣試試:

./face_landmark_detection_ex shape_predictor_68_face_landmarks.dat faces/*.jpg

CLM-Framework (C++)

CLM-framework,也被稱為劍橋人臉跟蹤器,是一個用來進行人臉特征點檢測和頭部姿勢估計的C++庫。你可以看看他在包含的video文件里工作的多么好啊!在OSX上編譯這個庫有點兒挑戰但是也不太難。庫依賴于OpenCV3和X11.

有兩個重要的事說明Dlib可以挑戰CLM-Framework。首先,Dlib比CLM-Framework更快。其次,Dlib的license允許你商用。如果要挑一個的,我會使用Dlib.有趣的是,CLM-Framework依賴于Dlib.

如何編譯CLM-Framework?

編譯CLM-Framework在OSX上有點兒復雜。對于Windows和linux,這里有一份詳細的說明.為了在OSX上編譯version 1.3.0,我使用了linux的指示,但是發生了很多改變。

許多依賴項可以使用brew安裝.

在文件CMakeLists.txt(如下劃掉的被后面的取代)

find_package( OpenCV 3.0 REQUIRED )

find_package( OpenCV 3.0 REQUIRED HINTS /path/to/opencv )

INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})

INCLUDE_DIRECTORIES(/opt/X11/include)

在文件exe/SimpleCLM/SimpleCLM.cpp中

writerFace = VideoWriter(tracked_videos_output[f_n], CV_FOURCC(‘D’,’I’,’V’,’X’), 30, captured_image.size(), true);

writerFace = VideoWriter(tracked_videos_output[f_n], CV_FOURCC(‘M’,’P’,’4′,’V’), 15, captured_image.size(), true);

如何運行CLM-Framework人臉檢測器?

編譯后,可執行文件在bin路徑中.對于視頻中展現的網絡攝像頭Demo,你可以這樣使用:

bin/SimpleCLM

Face++ ( FacePlusPlus ) : Web API

人臉特征點檢測最好的實現之一就是Face++.他們在300 Faces in-the-Wild
Landmark Detection Challenge,2013取得了冠軍。他們提供了一個易用的API。問題是你需要上傳一張圖片到他們的服務器,這個將帶來很多隱私上的擔憂。但是如果隱私不是問題的話,Face++是一個好的選擇。你可以在
http://www.faceplusplus.com/demo-landmark/
看到一個Demo.

Facial Feature Detection Research

許多不同的方法都可以用來解決這個問題。很難再博客中對其歸類。我簡單地列出了一些重要論文。
1. Active Appearance Model (AAM) by T. Cootes, G. Edwards and C. J. Taylor. [1998]
2. Face Alignment through Subspace Constrained Mean-Shifts by Jason M. Saragih, Simon Lucey and Jeffrey F. Cohn. [2009]
3. Localizing Parts of Faces Using a Consensus of Exemplars by Peter N. Belhumeur, David W. Jacobs, David J. Kriegman, Neeraj Kumar [ 2011 ]
4. Face Alignment by Explicit Shape Regression by Xudong Cao Yichen Wei Fang Wen Jian Sun [2012]
5. Supervised Descent Method and Its Applications to Face Alignment by Xuehan Xiong and Fernando De la Torre [2013]
6. Constrained Local Neural Fields for robust facial landmark detection in the wild by Tadas Baltrusaitis, Peter Robinson, and Louis-Philippe Morency. [2013]
7. Extensive Facial Landmark Localization with Coarse-to-fine Convolutional Network Cascade by Erjin Zhou, Haoqiang Fan, Zhimin Cao, Yuning Jiang and Qi Yin. [2013]
8. Face alignment at 3000 fps via regressing local binary features by S Ren, X Cao, Y Wei, J Sun. [2014]
9. Facial Landmark Detection by Deep Multi-task Learning by Zhanpeng Zhang, Ping Luo, Chen Change Loy, and Xiaoou Tang. [2014]
10.One Millisecond Face Alignment with an Ensemble of Regression Trees by Vahid Kazemi and Josephine Sullivan. [2014]

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

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

相關文章

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 里面出現的次數&#xff0c;如果 beg 或者 end 指定則返回指定范圍內 str …

Java中的Error和Exceptiond的異同點

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

python算法題_python基本算法題(一)

1、3位水仙花數計算 "3位水仙花數”是指一個三位整數&#xff0c;其各位數字的3次方和等于該數本身。 例如&#xff1a; ABC是一個“3位水仙花數”&#xff0c;則&#xff1a;A的3次方&#xff0b;B的3次方&#xff0b;C的3次方 ABC。 使用Python&#xff0c;輸出所有的3…

虛擬機環境下安裝ESX不能安裝虛擬系統解決方案

在虛擬機環境&#xff08;ESX、workstation等&#xff09;下安裝ESX或workstation等虛擬機&#xff0c;在虛擬機上再安裝操作系統&#xff0c;會提示“虛擬系統不能啟動&#xff0c;直到你配置了外部虛擬機&#xff08;vmware esx in a virtual machine requires the outer vir…

superviseddescent (SDM C++11實現)環境配置

今天試著用了一下SDM的C11實現&#xff0c;本來以為挺簡單的&#xff0c;可是配置環境還是花了一些時間。為了給自己留下一些記憶&#xff0c;特把配置過程記錄下來。 這個實現是C11的版本&#xff0c;是一個通用版本&#xff0c;里面包含了很多的功能&#xff0c;比如函數的最…

1008: University

臺州ACM&#xff1a;1008: University Description 在大學里&#xff0c;非常多單詞都是一詞多義。偶爾在文章里還要用引申義。這困擾Redraiment非常長的時間。 他開始搜集那些單詞的全部意義。他發現了一些規律&#xff0c;比如 “a”能用“e”來取代, “c”能用“f”來取代……

Android 5.1 API 22 所有sdk文件下載地址

開源中國的 IT 公司開源軟件整理計劃介紹 https://dl-ssl.google.com/android/repository/docs-22_r01.ziphttp://dl.google.com/android/repository/android-22_r01.ziphttps://dl-ssl.google.com/android/repository/samples-22_r05.ziphttps://dl-ssl.google.com/android/re…

python圖形小游戲代碼_手把手制作Python小游戲:俄羅斯方塊(一)

手把手制作Python小游戲&#xff1a;俄羅斯方塊1大家好&#xff0c;新手第一次寫文章&#xff0c;請多多指教 A.準備工作&#xff1a; 這里我們運用的是Pygame庫&#xff0c;因為Python沒有內置&#xff0c;所以需要下載 如果沒有pygame&#xff0c;可以到官網下載 pygame官網&…

關于Git使用的一些心得

2019獨角獸企業重金招聘Python工程師標準>>> 本篇稍微記錄下Git使用的一些心得。 對Git的使用&#xff0c;應該是從搭建自己的博客開始的。當時看到開源中國推薦的一篇基于碼云hexo搭建自己博客的文章。所以就花了一天時間鼓搗了下博客。 順帶整理下目前能看到我寫的…

Dlib機器學習庫安裝

昨天使用了一下dlib的人臉檢測功能&#xff0c;效果出奇的好。下面給出dlib整個的安裝過程和使用指導。 下載安裝 我們可以從dlib的官網下載最新的版本&#xff0c;我的是dlib18.18.然后我們需要使用cmake編譯dlib庫和examples示例。 當然前提是你要按照好cmake和opencv。 …

struts2上傳

今天在使用struts2上傳的過程中無意發現,struts2上傳一個文件大小為0字節的文本竟然會報錯FileNotFoundException,嘗試了好久也沒找到答案,最后只能判斷文件的大小后上傳,至于文件字節為0的怎么處理就看各位了 struts2上傳java源碼 1 package com.jzgx.web.action;2 3 import j…

BitSet之為什么用long保存信息

BitSet內部使用long[] words來保存位信息。咋看之下并不理解原因&#xff0c;在解讀set(int bitIndex)之后似乎有了一些領悟。 public void set(int bitIndex) { if (bitIndex < 0) throw new IndexOutOfBoundsException("bitIndex < 0: " bitIndex); //用來計…

ipv4地址是幾位二進制數_幾張思維導圖,讓你清楚的知道ip地址怎么回事?

網絡工程中&#xff0c;ip地址是必須要了解的內容&#xff0c;今天我們用幾張思維導圖來給大家詳細講解IP地址。一、什么是IP地址在生活中我們使用具有上網功能的電子設備都有IP地址&#xff0c;就跟每個人都有自己的名字一樣。IP地址分為IPV4 IPV6&#xff0c;我們所說的的IP地…

《關系營銷2.0——社交網絡時代的營銷之道》一檢查拼寫和語法

本節書摘來異步社區《關系營銷2.0——社交網絡時代的營銷之道》一書中的第2章&#xff0c;作者&#xff1a; 【美】Mari Smith 譯者&#xff1a; 張猛 , 于宏 , 趙俐 責編&#xff1a; 陳冀康, 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 檢查拼寫和語法 關系營銷2…

dlib人臉檢測功能介紹

本文主要介紹三個點&#xff1a; 1. 如何單獨建立一個工程&#xff0c;使用dlib的人臉檢測功能。 2. 提高人臉檢測率的兩個方法 3. 加速人臉檢測的方法 下面圍繞這幾個點展開敘述。 建人臉檢測工程 1 . 首先我們先使用上期說的examples里的人臉檢測。 我們只要將face_de…

ios網絡開發 網絡狀態檢查

http://www.cnblogs.com/hanjun/archive/2012/12/01/2797622.html 網絡連接中用到的類&#xff1a; 一.Reachability 1.添加 Reachability 的.h和.m文件&#xff0c;再添加SystemConfiguration.framework。 2.Reachability中定義了三種網絡狀態&#xff1a; typedef Num{ NotR…

delphi xe4 ini文件不能讀取的解決方法

今天發現用inifiles下 tinifile.readstring方法突然不能讀數據了&#xff0c;結果把ini文件格式由utf-8改成unicode后就能正常讀取了。轉載于:https://www.cnblogs.com/liqiao/p/3503985.html

《眾妙之門——網頁排版設計制勝秘訣》——3.4 展現品牌視覺的同時保持網頁的可讀性...

本節書摘來自異步社區《眾妙之門——網頁排版設計制勝秘訣》一書中的第3章&#xff0c;第3.4節&#xff0c;作者&#xff1a; 【德】Smashing Magazine 譯者&#xff1a; 侯景艷 , 范辰 更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 3.4 展現品牌視覺的同時保持網頁的…

vs2013創建及使用DLL

這幾天看了許多關于生成Dll的博文&#xff0c;很有感觸&#xff0c;遂整理在此&#xff0c;以供自己后續參考。 VS2013創建DLL 我們使用vs2013來生成Dll&#xff0c;其實使用其他的版本也是同理如此。步驟如下&#xff1a; 單擊“新建項目”&#xff0c;選擇“Win32 項目”&a…