国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python庫的人臉識別方法研究

2019-07-10 12:15梁晶史記征
關(guān)鍵詞:關(guān)鍵點(diǎn)人臉人臉識別

◆梁晶 史記征

基于Python庫的人臉識別方法研究

◆梁晶 史記征

(重慶安全技術(shù)職業(yè)學(xué)院 重慶 404020)

人臉識別技術(shù)經(jīng)過幾十年的發(fā)展,已成為計算機(jī)視覺領(lǐng)域的一個研究熱點(diǎn)。隨著人臉識別算法的趨于成熟,人臉識別技術(shù)已經(jīng)在公安、支付、身份驗(yàn)證、美顏相機(jī)等領(lǐng)域得到了非常廣泛的應(yīng)用。本文利用Python語言的第三方庫,通過機(jī)器深度學(xué)習(xí)實(shí)現(xiàn)人臉識別,該方法具有編程簡單、易于實(shí)現(xiàn)、準(zhǔn)確率高等優(yōu)勢。

人臉識別;Python語言;dlib庫

0 引言

人臉是一個人在社會交往中最重要的特征,是確定一個人身份的最重要的方法,研究人臉識別具有重要的理論價值和應(yīng)用價值。人臉識別是通過生物特征對人的身份進(jìn)行辨認(rèn),是計算機(jī)視覺領(lǐng)域的一個研究方向。人臉識別研究起源于20世紀(jì)60年代,由Bledsoe和Chen最先提出。

1 人臉識別過程

通過對一個人面部的觀察可以獲得很多信息,比如:性別、心情、年齡、健康狀況等。人臉檢測是一個特別復(fù)雜的過程,根據(jù)所選檢測系統(tǒng)的不同,使用到的檢測算法、原理以及編程語言等也會相對應(yīng)的不相同,但歸納起來大致都可以分為以下幾個流程:

(1)人臉檢測:這個流程主要完成的工作是從所給圖像信息中檢測出人臉,同時將關(guān)鍵點(diǎn)的位置范圍進(jìn)行反饋。

(2)人臉規(guī)范化:由于人臉在不同的圖像像素和光照強(qiáng)度等問題下顯像程度是不一樣的,所以需要在上一步的基礎(chǔ)上對此進(jìn)行校正。

(3)人臉特征提取:完成校正后,對識別到的較清晰的人臉進(jìn)行特征提取。

(4)人臉識別:這一步是人臉檢測的最后一步,就是把前面提取出來的人臉特征與數(shù)據(jù)庫中已有的人臉特征進(jìn)行匹配,進(jìn)行人臉識別。具體識別過程如圖1所示。

本文所使用的Python第三方庫dlib是基于深度學(xué)習(xí)進(jìn)行人臉識別的。

圖1 人臉識別過程

2 dlib庫介紹

dlib庫一個機(jī)器學(xué)習(xí)的開源庫,解決包含機(jī)器學(xué)習(xí)算法以及開發(fā)復(fù)雜軟件的現(xiàn)實(shí)問題,它被廣泛應(yīng)用在工業(yè)和學(xué)術(shù)研究領(lǐng)域,包括機(jī)器人、嵌入式設(shè)備、移動手機(jī)以及大規(guī)模高性能計算環(huán)境中。它的主要特點(diǎn)有:文檔說明全、代碼質(zhì)量高,包含機(jī)器學(xué)習(xí)算法、科學(xué)計算算法、圖模型推理算法、圖像處理、網(wǎng)絡(luò)編程、圖形用戶接口、數(shù)據(jù)壓縮與整合算法等。

3 利用dlib庫實(shí)現(xiàn)人臉識別

3.1 dlib庫安裝

Python第三方庫最常用的安裝方式是通過pip命令。作為Python的內(nèi)置命令,pip需要通過命令行執(zhí)行。dlib庫的安裝命令是:pip install dlib。

3.2 所需文件介紹

本研究共涉及4種不同類型的文件:人臉關(guān)鍵點(diǎn)檢測器文件1.dat,人臉識別模型文件2.dat;候選人臉文件girl1.jpg、girl2.jpg、girl3.jpg、girl4.jpg、girl5.jpg、girl6.jpg;需要識別的人臉圖像文件test1.jpg、test2.jpg、test3.jpg、test4.jpg;Python腳本文件girl-face-rec.py。1.dat、2.dat可以從http://dlib.net/files/下載獲得;模型數(shù)據(jù)文件是用來估計人臉上68個特征點(diǎn)(x, y)的坐標(biāo)位置,這68個坐標(biāo)點(diǎn)的位置如圖2所示;候選人臉文件如圖3所示;需要識別的人臉圖像文件如圖4所示。

圖2 人臉特征坐標(biāo)

圖3 候選人臉圖像

圖4 待識別的人臉圖像

從圖4可以看出:test1.jpg、test2.jpg和候選文件中的本人看起來有很大差別,test3.jpg是候選人中的原圖,test4.jpg中的女孩微微側(cè)臉,并且左臉有明顯黑色陰影。

3.3 識別流程

基于以上分析和處理,人臉識別的相關(guān)數(shù)據(jù)已經(jīng)準(zhǔn)備完成,那么就可以通過編寫程序完成人臉識別了。其中人臉識別的大致流程如下:

(1)在對候選人進(jìn)行人臉檢測、關(guān)鍵點(diǎn)提取、描述子生成后,把候選人描述子保存起來。

(2)然后對測試人臉進(jìn)行人臉檢測、關(guān)鍵點(diǎn)提取、描述子生成。

(3)最后求測試圖像人臉描述子和候選人臉描述子之間的歐氏距離,距離最小者判定為同一個人。

3.4 Python腳本代碼

#文件名: girl-face-rec py

#-*-coding:UHF-8-*-

import sys, os, dlib, glob, umpyfrom skimage

import io

if len(sys. argv)!=5:

print"請檢查參數(shù)是否正確”

exit()

predictor_path=sys.argv[1]

face_rec_model_path=sys. argv[2]

faces_folder_path=sys. argv[3]

img_path=sys. argv[4]

detector= dlib.get_frontal_face detector()

sp =dlib_shape_predictor(predictor_path)

facerec=

dlib face_recognition_model_vl(face_rec_mo

del_path)

descriptors=[]

for f in

glob glob(os path. join(faces_folder_path,

“*.jpg”)):

print(“Processing file:{}”.format(f))

img=io.imread(f)

dets=detector(img,1)

print(“Number of faces detected:

{}”.format(len(dets)))

for k, d in enumerate(dets):

shape=sp(img,d)

face descriptor=

facerec.compute_face_descriptor(img, shape)

v=numpy.array(face_descriptor)

descriptors.append(v)

img=io.imread(img_path)

dets=detector(img, 1)

dist=[]for k,d in enumerate(dets):

shape=sp(img, d)

face_descriptor=

facerec.compute_face_descriptor(img, shape)

d_test=numpy.array(face_descriptor)

for i in descriptors:

dist_=numpy.linalg.norm(i-d_test)

dist.append(dist_)

candidate=

[‘Unknown1’, ‘Unknown2’, ‘Shishi’, ‘Unknown4’

‘Bingbing’, ‘Feifei’]

c_d=dict(zip(candidate,dist))

cd_sorted=sorted(c_d.iteritems(),

key=lambda d:d [1])print” The person is:

“, cd_sorted[0][0]

dlib.hit_enter_to_continue()

4 運(yùn)行結(jié)果分析

分別運(yùn)行如下命令:

(1)python girl-face-rec.py 1.dat

2.dat./candidate-faces testl.jpg

(2)python girl-face-rec.py 1.dat

2.dat./candidate-faces test2.jpg

(3)python girl-face-rec.py 1.dat

2.dat./candidate-faces test3.jpg

(4)python girl-face-rec.py 1.dat

2.dat./candidate-faces test4.jpg

通過運(yùn)行結(jié)果可知:test1.jpg、test2.jpg、test3.jpg測試結(jié)果完全正確。但是測試圖片test4.jpg的輸出結(jié)果顯示是候選人girl4.jpg,識別存在一定的錯誤率。

5 結(jié)語

利用Python的dlib庫可以實(shí)現(xiàn)人臉識別功能,編程簡單、準(zhǔn)確度高。但由于每個人臉有68個特征值,假如已知人臉圖片過多,特征值庫將較大,歐式距離的計算將消耗較長時間,所以需要引入并行計算技術(shù),以提高人臉識別效率。

[1]聶晶. Python在大數(shù)據(jù)挖掘和分析中的應(yīng)用優(yōu)勢[J].廣西民族大學(xué)學(xué)報, 2018, 24 (1) : 76-79.

[2]嚴(yán)婷,欣秀,趙嘉豪,等.基于Python 的可視化數(shù)據(jù)分析平臺設(shè)計與實(shí)現(xiàn)[J].計算機(jī)時代, 2017,(12) : 54-56.

[3]鄒國鋒,傅桂霞,李海濤,高明亮,王科俊.多姿態(tài)人臉識別綜述[J].模式識別與人工智能, 2015,28(07):613-625.

[4]胡敏,程天梅,王曉華.融合全局和局部特征的人臉識別[J].電子測量與儀器學(xué)報, 2013,27(09):817.

[5]Mark Summerfield著.王弘博,孫傳慶譯.Python3程序開發(fā)指南(第2版)[M].人民郵電出版社, 2015:427-444.

2018年重慶市高等職業(yè)教育雙基地建設(shè)重慶安全技術(shù)職業(yè)學(xué)院“大數(shù)據(jù)與物聯(lián)網(wǎng)融合實(shí)訓(xùn)基地”項(xiàng)目支持。

猜你喜歡
關(guān)鍵點(diǎn)人臉人臉識別
論建筑工程管理關(guān)鍵點(diǎn)
人臉識別 等
肉兔育肥抓好七個關(guān)鍵點(diǎn)
有特點(diǎn)的人臉
一起學(xué)畫人臉
建筑設(shè)計中的防火技術(shù)關(guān)鍵點(diǎn)
玻璃窗上的人臉
揭開人臉識別的神秘面紗
人臉識別技術(shù)的基本原理與應(yīng)用
人臉識別技術(shù)研究與應(yīng)用進(jìn)展概述