《人工智能基礎(chǔ)與應(yīng)用》第8章 人臉識別:機(jī)器也認(rèn)識你課后習(xí)題答案_第1頁
《人工智能基礎(chǔ)與應(yīng)用》第8章 人臉識別:機(jī)器也認(rèn)識你課后習(xí)題答案_第2頁
《人工智能基礎(chǔ)與應(yīng)用》第8章 人臉識別:機(jī)器也認(rèn)識你課后習(xí)題答案_第3頁
《人工智能基礎(chǔ)與應(yīng)用》第8章 人臉識別:機(jī)器也認(rèn)識你課后習(xí)題答案_第4頁
《人工智能基礎(chǔ)與應(yīng)用》第8章 人臉識別:機(jī)器也認(rèn)識你課后習(xí)題答案_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第8章人臉識別:機(jī)器也認(rèn)識你

課后習(xí)題答案

一、考考你

1.一個完整的人臉識別系統(tǒng)主要包含人臉圖像采集和檢測、B、人臉圖像特征提取

和人臉識別四個部分。

A.人臉分類器B.人臉圖像預(yù)處理

C.人臉數(shù)據(jù)獲取D.人臉模型訓(xùn)練

2.刷臉支付比傳統(tǒng)密碼支付的突出優(yōu)勢是」

A.更快捷方便B.更安全

C.更容易實現(xiàn)D.成本更低

3.OpenCV庫主要應(yīng)用A領(lǐng)域的人工智能開發(fā)。

A.計算機(jī)視覺和機(jī)器學(xué)習(xí)B.人臉識別

C.深度神經(jīng)網(wǎng)絡(luò)D.圖像處理

4.下列OPenCV的哪個函數(shù)可定義一個人臉檢測器4。

A.CascadeClassifier()B.detectMultiScale()

C.predict()D.LBPHFaceRecognizejCreate()

5.關(guān)于百度PaddleHub錯誤的說法是D。

A.它是一個預(yù)訓(xùn)練模型管理工具,支持一鍵預(yù)測

B.它涵蓋了圖像分類、目標(biāo)檢測、詞法和情感分析等許多主流模型

C.它有不同的版本,用戶在安裝時可以指定具體的版本

D.它的使用要有PaddlePaddle的支持

二、亮一亮

1.人臉識別驗證與傳統(tǒng)密碼驗證相比它有哪些優(yōu)勢?

參考答案:

人臉識別驗證是利用人臉視覺特征信息進(jìn)行身份鑒別的計算機(jī)技術(shù),具備自然性、非強(qiáng)

制性和非接觸性等特點,而且人臉識別利用的是人臉的獨(dú)一無二特性,不易被復(fù)制,識別率

高,安全性高。

2.簡述如何使用OPenCV提供的人臉分類器來檢測人臉。

參考答案:

人臉檢測是在提取人臉特征的基礎(chǔ)上進(jìn)行,0PenCV中支持Haar和LBP特征的分類器,

我們以Haar分類器為例介紹人臉檢測的步驟:

1)使用以下命令安裝Pylhon版本的OPenCV第三方庫OPenCV-Python:pip?install

opencv-python,安裝好OPenCV-Python后,就會在Python的第三方模塊文件夾Site-PaCkageS

下有一個新的文件夾cv2,在cv2∕data∕下保存了許多用于檢測人臉、眼睛、微笑等訓(xùn)練好的

分類器,這些分類器以XML文件的形式存儲,如下圖所示:

>Ienovo>APPDdta>Local>Programs>Python>PylhOn37>Lib>4te*pa<kage?>cv2>data

的擔(dān)大小

_PyCaChe_2021/1/2321:49文4較

B_in?t_.py2O2I/1/?3?I49IetBtaimPyChann...1KB

?haaκastadeeyeJtml2021/1/232Γ49XML334KB

,hMi<awade_eye_tree.eyegla$se^xml2021/1/2321:49XMl文檔588KB

/haarcascadefrontaketfMexml2021/1/2321:49XML文檔402KB

?haartawadefιontakatfa<eextendedj<ml2021/1/2321:49XML文檔374KB

"haarc?uadefrontatfacealtxml2021/1/2321:49XML女秘661KB

?h?wrca?ade_hontalfate_altUcejcml2021/1/2321:49XML-2627KB

"h<Mrc<κc<!defιontdlf<κcdlt2aml2021/1/232149XML文檔S28KB

?hadrcascadeJiontdlfdtedefaultj(ml2021/1/232149XMl3Q?909KB

?haarcascddefulltχχiyjcml2021/1/2321:49XML466KB

"haartawade∣cfteye2split?xml2021/1/2321:49XMt文檔191KB

?haar<a$tdde_icence_plate_nj$_16sta<}e?j<ml2021/1/2321:49XMl文檔47KB

?haarcA?cadeIowetbodyjcml2021/1/2321:49XMLg387KB

?hβar<astadepιofiIefacexml2021/1/2321:49XMl文襠810KB

"hwrt?scaderighteye_2$pits.xml2021/1/2321:49XMl文襠192KB

?haarcawadejussianplatenumbcf.xml2021/1/2321:49XMI鴻74KB

Shaaκastddesmilej<ml2021/1/2321:49XML文檔185KB

?haar<iKCade_UPPefbOdyxml2021∕!∕2321:49XMl文檔768KB

2)Haar特征分為三類:邊緣特征、線性特征、中心特征和對角線特征,一起組合成

特征模板。Haar特征分類器的基本工作原理是:用一個子窗口在待檢測的圖片窗口中不斷

的移位滑動,子窗口每到一個位置,就會計算出該區(qū)域的Haar特征,然后用我們訓(xùn)練好的

級聯(lián)分類器對該特征進(jìn)行篩選,一旦該特征通過了所有強(qiáng)分類器的篩選,則判定該區(qū)域為人

臉。

三、幫幫我

1.人臉關(guān)鍵點提取是人臉識別的基礎(chǔ),請基于百度智能云開放接口編程實現(xiàn)人臉關(guān)鍵點

提取并可視化效果,如下圖8.24所示。

圖8.24人臉原圖(左圖)及人臉關(guān)鍵點可視化(右圖)

提示:

1)將請求的圖片經(jīng)Base64編碼處理形成字符串。

2)在百度智能云上創(chuàng)建人臉識別應(yīng)用,基于應(yīng)用的APlKey和SeCretKey這兩個值來

獲取訪問令牌access」Oken。

3)將圖片數(shù)據(jù)、圖片類型、面域等請求參數(shù)發(fā)送給人臉關(guān)鍵點服務(wù)URL,返回識別結(jié)

果。

4)解析識別結(jié)果,并將關(guān)鍵點坐標(biāo)以圓點的形式標(biāo)記在人臉的相應(yīng)位置。具體實現(xiàn)方

法可參考百度智能云官方說明文檔:https://cloud.baidu.eom/doc/FACE/s/yk37du4to

參考答案:

importrequests

importcv2

importbase64

#獲取訪問令牌access_token

ClientJd士你的AK'

Client.secret=,你的SK'

#ClientJd為你在官網(wǎng)獲取的AK,client.secret為你在官網(wǎng)獲取的SK

host='https:〃/OaUth/2.0/token?granUyPe=CIient_credentials&client_id='\

+client_id+*&client_secret-+client_secret

response=requests.get(host)

ifresponse:

,

access-token=response.json()[access-token'J

#圖片base64轉(zhuǎn)換

image_path=,face.jpg,

withopen(image_path,,rb,)asf:

image=f.read()

image_base64=str(base64.b64encode(image),encoding=,utf-8,)

#獲取人臉關(guān)鍵點

request_url=πhttps√∕∕rest∕2.0∕face∕v3∕detectπ

imageb64=image_base64

params=

”{\"image\":\"“+imageb64+“\",\"image」ype\":\"BASE64\",\"face_field\":\"facesIwpe,landmark\"}

access_token

,24.71d47eb914d09efc8c73i37ecl9cflld.2592000.l626017955.282335-2436006Γ

request_url=request_url+ZaccessJoken="+access_token

headers={,content-type':'applicatioMSOn'}

response=requests.post(request_url,data=params,headers=headers)

print('response:*,response)

ifresponse:

result=response.json()

print(,result:',result)

Iandmarks=result[,result,][,facejist,][θ][,landmark72,]

#在原始圖片上標(biāo)記關(guān)鍵點

img=cv2,imread(image_path)

foriinrange(0,72):

x=int(landmarks[i][,x,])

y=int(landmarks[i][,y,])

cv2.circle(img=img,center=(x,y),radius=2,color=(0,255,0),thickness=-1)

cv2.imshow(,landmarkFace,,img)

cv2.waitKey(0)

cv2.destroyAHWindows()

UIandmarkFace—□×

2.設(shè)計一個人臉驗證系統(tǒng),與現(xiàn)有的人臉庫進(jìn)行比對,來驗證攝像頭前的人是否為合法

用戶。

參考答案:

#步驟1、人臉檢測

#打開攝像頭,監(jiān)測人臉

importcv2ascv

defface_detect(frame):

#圖片轉(zhuǎn)灰度

img_gray=cv.cvtColor(frame,cv.COLOR_BGR2GRAY)

#加載人臉分類識別器,這里的文件路徑是筆者個人路徑,讀者需要相應(yīng)替換

face_detector=

,

cv.CascadeClassifier(D√anaconda3∕Lib∕site-packages∕cv2∕data∕haarcascade-frontaiface-default.x

mΓ)

faces=face_detector.detectMultiScale(img_gray)

forx,y,w,hinfaces:

cv.rectangle(frame,(x,y),(x+w,y+h),color=(0,255,0),thickness=1)

cv.imshow("detectingM,frame)

if_name_=='_main_,:

#讀取攝像頭中的圖像,獲取圖像grabbed為true

cap=cv.VideoCapture(O)

whileTrue:

grabbed,img=cap.read()

ifgrabbed:

print(πframe:",img.shape)

else:

break

face_detect(img)

iford('q,)==cv.waitKey(10):

break

cv.destroyAΠWindows()

cap.release()

■'detecting

#步驟2、人臉采集

importcv2ascv

defface_collect(face_id,username):

print('?n正在初始化臉部識別,請保持在攝像頭前面...,)

count=0

filename=,π'

#讀取內(nèi)置攝像頭中的圖像,獲取圖像grabbed為true

cap=cv.VideoCapture(O)

#加載人臉分類識別器這里的文件路徑是筆者個人路徑,讀者需要相應(yīng)替換

face_detector=

,

cv.CascadeClassifier(D√anaconda3∕Lib∕site-packages∕cv2∕data∕haarcascade-frontalface-defaull.x

ml,)

whileTrue:

grabbed,img=cap.read()

ifgrabbed:

print(πframe:",img.shape)

else:

break

#圖片轉(zhuǎn)灰度

img_gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)

faces=face_detector.detectMultiScale(img_gray)

forx,y,w,hinfaces:

cv.rectangle(img,(x,y),(x+w,y+h),color=(0,255,0),thickness=1)

count+=1

#保存圖像的路徑,讀者可根據(jù)需要修改

filename="D:/face_data/r,+username+,'.π÷str(face_id)+,.'+str(count)+

,?jpg,

print(filename)

cv.imwrite(filename,img_gray[y:y+h,x:x+WD

cv.imshow("detecting",img)

iford('q,)==cv.waitKey(20):

break

elifcount>100:

break

cv.destroyAlIWindows()

cap.release()

if_name_=='_main_,:

userjd=input('?n輸入用戶ID,從0開始遞增:')

user_name=input('?n輸入用戶英文名

face_collect(user_id,user_name)

采集過程和圖像保存結(jié)果如下:

輸入用戶1D,從0開始遞增:0

輸入用戶英文名:Shaoshizhi

正在初始化臉部識別,請保持在攝像頭前面...

frame:(480,640,3)

D:,face_data/shaoshizhi.0.1.jpg

D:∕face-data∕shaoshizhi.0.2.jpg

frame:^480,640,3)

D:face_data/shaoshizhi.0.3.jpg

frame:(480,640,3)

D:/face_data'shaoshizhi.0.4.jpg

D:face_datashaoshizhi.0.5.jpg

frame:(480,640,3)

D:∕face.data∕shaoshizhi.0.6.jpg

frame:?480,640,3)

D:∕face-data∕shaoshizhi.0.7.jpg

t<κr.<te<4

th?o<hUhL02jt?*>?H∕hlX).JjUwxhirhiA41?h?Mhi∕MQ5J*tMKMhMv.06.jUMOtMt?iO.7JUMMhiZhLoAI

P9P9pgpgpgpαpg

JPQgagJpgjPgjPg

#3、人臉訓(xùn)練

importnumpyasnp

fromPILimportImage

importos

importcv2ascv

defface_training():

Print(”人臉訓(xùn)練,請耐心等待?.J)

#人臉圖片路徑,同步驟2保存的人臉圖片的路徑

face_path='D:/face_data/'

#opencv-contrib-python包中的函數(shù)

recognizer=cv.face.LBPHFaceRecognizer_create()

#載入人臉分類器這里的文件路徑是筆者個人路徑,讀者需要相應(yīng)替換

face_detector=

cv.CascadeClassifier(MD:/anaconda3/Lib/site-packages/cv2/data/haarcascade_frontalface_default.x

ml”)

image_paths=[os.path.join(face_path,f)forfinos.listdir(face_path)]

face_samples=[]

ids=[]

forimagePathinimage_paths:

img_gray=Image.open(imagePath).convert(,L,)

img_numpy=np.array(img_gray,,uint8,)

#圖片的命名方式xx.id.num.ext(xx為任意英文標(biāo)識,id是標(biāo)簽,同類人臉

id相同,num一般為該類圖片的計數(shù),ext為圖片后綴)

#文件名中關(guān)鍵就是id,作為有監(jiān)督學(xué)習(xí),id就是用于分類

user_id=int(os.path.split(imagePath)[-1].sρlit(',.',)[1])

print(user_id,,'",imagePath)

faces=face_detector.detectMultiScale(img_numpy)

forx,y,w,hinfaces:

face_samples.append(img_numpy[y:y+h,x:x+w])

ids.append(user_id)

recognizer.train(face_samples,np.array(ids))

#保存訓(xùn)練信息,路徑讀者可根據(jù)需要修改

,

recognizer.write(D√face-trainer∕trainer.ymΓ)

print("{0}facestrained.ExitingProgramπ.format(len(np.unique(ids))))

if—name—==,—main—':

face_training()

人臉訓(xùn)練,請耐心等待...

0D:/face__data/shaoshizhi.0.1.jpg

0D:/face_data/shaoshizhi.0.10.jpg

0D:/face_data/shaoshizhi.0.11.jpg

0D:/face_data/shaoshizhi.0.12.jpg

0D:/face-data/shaoshizhi.0.13.jpg

0D:/face_data/shaoshizhi.0.14.jpg

0D:/face_data/shaoshizhi.0.15.jpg

0D:/face_data/shaoshizhi.0.16.jpg

0D:/face_data/shaoshizhi.0.17.jpg

0D:/face_data/shaoshizhi.0.18.jpg

1D:/face_data/zhanghongqin.1.31.jpg

1D:/face_data/zhanghongqin.1.32.jpg

1D:/face-,data/Zhanghongqin.1.4.jpg

1D:∕face-data∕zhanghongqin.1.5.jpg

1D:/face-data∕zhanghongqin.1.6.jpg

1D:∕face-data/zhanghongqin.1.7.jpg

1D:/face_data/zhanghongqin.1.8.jpg

1D:/face_data/zhanghongqin.1.9.jpg

2facestrained.ExitingProgram

#步驟4、人臉識別

#從視頻中識別人臉

importcv2ascv

defface_recognition():

recognizer=cv.face.LBPHFaceRecognizer_create()

#讀取訓(xùn)練數(shù)據(jù),路徑同步驟3訓(xùn)練文件的保存路徑

recognizer.read('D√face-trainer∕trainer.ymΓ)

#載入人臉分類器這里的文件路徑是筆者個人路徑,讀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論