天天看點

人臉識别系統python_基于python語言的人臉識别技術

人臉識别技術,如果往深了研究,很難,現在已經有團隊緻力于研究3D人臉識别技術。本文還是基于python成熟的函數庫(子產品)dlib對人臉識别進行簡單的介紹。首先看一下效果圖,首先給出對人臉的68個特征點進行提取的效果圖:

人臉識别系統python_基于python語言的人臉識别技術

再給出識别的效果:

人臉識别系統python_基于python語言的人臉識别技術

因為代碼中的算法是,與資料庫中圖檔歐式距離最小的,則判斷為該候選人。是以雖然左右兩位朋友不在資料庫中,但是也給出了識别結果。後期改進可以判斷,當歐式距離大于某個門限時,則判定為未知人員。

下面對人臉識别技術進行詳細介紹。

資料庫準備

在進行人臉識别時,首先得有資料,其中包含人臉資料、訓練好的模型資料,如下圖所示:

人臉識别系統python_基于python語言的人臉識别技術
人臉識别系統python_基于python語言的人臉識别技術

訓練好的資料包含人臉關鍵點檢測器、人臉識别模型,如圖所示:

人臉識别系統python_基于python語言的人臉識别技術

系統與子產品

Ubuntu64系統系統用的是Ubuntu64系統,便于後續dlib子產品的安裝,本文在做實驗時,是在虛拟機中進行的,如圖所示:

人臉識别系統python_基于python語言的人臉識别技術

dlib子產品安裝dlib官方文檔給出的智語是:高品質的機器學習、圖像處理、深度學習、人臉識别 C++/Python庫。

dlib子產品可以在Linux和Max系統安裝,但是也有很多資料顯示如何在windows系統中安裝dlib,感興趣的讀者可以自行研究。

dlib子產品的安裝需要兩個子產品依賴:cmake和boost,由于篇幅限制,本文不介紹如何安裝dlib子產品,因為相關的資料、部落格很多,請查閱相關資料。

人臉識别關鍵代碼

人臉識别系統python_基于python語言的人臉識别技術

如上圖所示給出3句人臉識别的關鍵代碼,其中第一句是加載正臉檢測器,第二句是加載人臉關鍵點檢測器,第三句是加載人臉識别模型。

人臉識别系統python_基于python語言的人臉識别技術

這一句代碼中,是對變量descriptors進行初始化,其中count是資料庫中人臉的個數,128是固定的值(因為文章借用别人已經訓練好的模型,而模型的特征向量就是128次元的)。

人臉識别系統python_基于python語言的人臉識别技術

上圖中的代碼,第一句detector(img, 1)是對人臉進行檢測,for循環是對圖檔中的人臉進行循環,有幾張人臉,就循環幾次。然後将特征向量存儲在descriptors中。

人臉識别系統python_基于python語言的人臉識别技術

最後将變量descriptors存儲在檔案candidates.npy中,即訓練得到的資料庫。

全部代碼

全部代碼内容較多,我們将放入網盤,包括前期的資料庫,訓練模型等資料,一并上傳網盤。

人臉識别資料庫

Labeled Faces in the Wild Home (LFW)本文使用的就是LFW人臉資料庫,LFW中的人臉資料多來源網絡,已經被廣泛的應用在評價Face Verification算法性能上。

人臉識别系統python_基于python語言的人臉識别技術

除此之外,我們再介紹幾種資料庫:

PubFig: Public Figures Face Database(哥倫比亞大學公衆人物臉部資料庫)Large-scale CelebFaces Attributes (CelebA) DatasetColorferetMulti-Task Facial Landmark (MTFL) datasetBioID Face Database - FaceDBPerson identification in TV seriesCMUVASC & PIE Face dataset等等,還有很多。當然讀者也可以自己采集。也可以通過爬蟲的手段在網際網路上進行爬蟲擷取。

總結

本文利用python的dlib子產品,對人臉識别技術進行了介紹。希望對你的學習有所幫助,謝謝