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

下載本文檔

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

文檔簡(jiǎn)介

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

課后習(xí)題答案

一、考考你

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

和人臉識(shí)別四個(gè)部分。

A.人臉?lè)诸惼鰾.人臉圖像預(yù)處理

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

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

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

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

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

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

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

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

A.CascadeClassifier()B.detectMultiScale()

C.predict()D.LBPHFaceRecognizejCreate()

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

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

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

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

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

二、亮一亮

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

參考答案:

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

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

高,安全性高。

2.簡(jiǎn)述如何使用OPenCV提供的人臉?lè)诸惼鱽?lái)檢測(cè)人臉。

參考答案:

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

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

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

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

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

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

>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特征分為三類:邊緣特征、線性特征、中心特征和對(duì)角線特征,一起組合成

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

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

級(jí)聯(lián)分類器對(duì)該特征進(jìn)行篩選,一旦該特征通過(guò)了所有強(qiáng)分類器的篩選,則判定該區(qū)域?yàn)槿?/p>

臉。

三、幫幫我

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

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

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

提示:

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

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

獲取訪問(wèn)令牌access」Oken。

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

果。

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

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

參考答案:

importrequests

importcv2

importbase64

#獲取訪問(wèn)令牌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)鍵點(diǎ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)鍵點(diǎ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è)計(jì)一個(gè)人臉驗(yàn)證系統(tǒng),與現(xiàn)有的人臉庫(kù)進(jìn)行比對(duì),來(lái)驗(yàn)證攝像頭前的人是否為合法

用戶。

參考答案:

#步驟1、人臉檢測(cè)

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

importcv2ascv

defface_detect(frame):

#圖片轉(zhuǎn)灰度

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

#加載人臉?lè)诸愖R(shí)別器,這里的文件路徑是筆者個(gè)人路徑,讀者需要相應(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正在初始化臉部識(shí)別,請(qǐng)保持在攝像頭前面...,)

count=0

filename=,π'

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

cap=cv.VideoCapture(O)

#加載人臉?lè)诸愖R(shí)別器這里的文件路徑是筆者個(gè)人路徑,讀者需要相應(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開(kāi)始遞增:')

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

face_collect(user_id,user_name)

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

輸入用戶1D,從0開(kāi)始遞增:0

輸入用戶英文名:Shaoshizhi

正在初始化臉部識(shí)別,請(qǐng)保持在攝像頭前面...

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)練,請(qǐng)耐心等待?.J)

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

face_path='D:/face_data/'

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

recognizer=cv.face.LBPHFaceRecognizer_create()

#載入人臉?lè)诸惼鬟@里的文件路徑是筆者個(gè)人路徑,讀者需要相應(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)識(shí),id是標(biāo)簽,同類人臉

id相同,num一般為該類圖片的計(jì)數(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)練,請(qǐng)耐心等待...

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、人臉識(shí)別

#從視頻中識(shí)別人臉

importcv2ascv

defface_recognition():

recognizer=cv.face.LBPHFaceRecognizer_create()

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

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

#載入人臉?lè)诸惼鬟@里的文件路徑是筆者個(gè)人路徑,讀

溫馨提示

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

評(píng)論

0/150

提交評(píng)論