版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年銷售經(jīng)理區(qū)域市場拓展聘用合同模板2篇
- 2025年項目工程中介協(xié)議書模板(含設(shè)計、施工、驗收)3篇
- 2025年私人房產(chǎn)買賣合同文本與合同解除條件3篇
- 民政局2025版離婚協(xié)議書婚姻糾紛調(diào)解服務(wù)協(xié)議2篇
- 二零二五版美容院美容院連鎖加盟管理合同4篇
- 墻面裝飾板施工方案
- 窮人續(xù)寫200字6篇
- 2024年中級經(jīng)濟(jì)師考試題庫(典型題)
- 2025年消防系統(tǒng)智能化改造與安全評估合同協(xié)議3篇
- 2024年園區(qū)綠化管理制度
- 二零二五年度無人駕駛車輛測試合同免責(zé)協(xié)議書
- 2025年湖北華中科技大學(xué)招聘實驗技術(shù)人員52名歷年高頻重點提升(共500題)附帶答案詳解
- 高三日語一輪復(fù)習(xí)助詞「と」的用法課件
- 毛渣采購合同范例
- 2023中華護(hù)理學(xué)會團(tuán)體標(biāo)準(zhǔn)-注射相關(guān)感染預(yù)防與控制
- 五年級上冊小數(shù)遞等式計算200道及答案
- 2024年廣東高考政治真題考點分布匯 總- 高考政治一輪復(fù)習(xí)
- 燃?xì)夤艿滥甓葯z驗報告
- GB/T 44052-2024液壓傳動過濾器性能特性的標(biāo)識
- FZ/T 81013-2016寵物狗服裝
- JB∕T 14089-2020 袋式除塵器 濾袋運(yùn)行維護(hù)技術(shù)規(guī)范
評論
0/150
提交評論