陳佳佳 邱曉榮 熊宇昊 段莉華
關(guān)鍵詞:人臉識(shí)別; 百度AI開(kāi)放平臺(tái); 圖像處理; Python
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)08-0034-03
0 引言
當(dāng)今社會(huì)人工智能技術(shù)突飛猛進(jìn),機(jī)器人產(chǎn)業(yè)的經(jīng)濟(jì)發(fā)展蒸蒸日上,服務(wù)型機(jī)器人擁有明顯的應(yīng)用特性,服務(wù)型機(jī)器人不僅可以結(jié)合行業(yè)的需求,而且結(jié)合人工智能與人類和環(huán)境協(xié)同,不斷為人們提供智能化高科技的服務(wù)體驗(yàn)。在機(jī)器智能化中,語(yǔ)音與視覺(jué)交互極大地增強(qiáng)了人與機(jī)器人間的聯(lián)系[1]。當(dāng)前,語(yǔ)音交互早已是人們生活中使用最廣泛的交互方式,語(yǔ)音交互對(duì)于硬件的要求不高,使用揚(yáng)聲器和麥克風(fēng)就可以實(shí)現(xiàn),不用操作控制器,僅僅通過(guò)對(duì)話就可命令機(jī)器實(shí)現(xiàn)下達(dá)的命令。隨著人工智能科技不斷迅猛發(fā)展,更多服務(wù)型機(jī)器人已擁有語(yǔ)音及人臉識(shí)別技術(shù)的功能,給人們的生活帶來(lái)了提升,這類機(jī)器已經(jīng)用于學(xué)校以及一些小區(qū)的門禁方面,運(yùn)用人臉識(shí)別技術(shù)判斷是否可以進(jìn)入,圖書(shū)館、銀行以及商場(chǎng)也擁有這類機(jī)器,這類機(jī)器可以吸引人們完成人臉識(shí)別并且驗(yàn)證用戶信息或者用于人臉掃碼支付商品,機(jī)器與用戶面對(duì)面交互實(shí)現(xiàn)高效運(yùn)作。
1 國(guó)內(nèi)外人臉識(shí)別研究現(xiàn)狀
國(guó)內(nèi)對(duì)于人臉識(shí)別發(fā)展的態(tài)度總體是好大于壞,人臉識(shí)別技術(shù)首先在我國(guó)上海得到應(yīng)用,人臉識(shí)別規(guī)模逐步增大;而在國(guó)外,在政府端和商業(yè)端,人臉識(shí)別涉嫌種族歧視與人權(quán)侵犯,所以阻礙了人臉識(shí)別技術(shù)的開(kāi)發(fā)與應(yīng)用。
1.1 研究目的
本文的研究目的有以下兩個(gè)方面:
(1) 語(yǔ)音識(shí)別與數(shù)據(jù)挖掘相聯(lián)系,將服務(wù)機(jī)器人與用戶之間實(shí)現(xiàn)語(yǔ)音交互。
(2) 使用圖像識(shí)別和深度學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)模型,實(shí)現(xiàn)服務(wù)機(jī)器人的人臉識(shí)別。服務(wù)型機(jī)器人一般放置于公共場(chǎng)合,通過(guò)機(jī)器人的攝像頭拍攝的視頻識(shí)別中除了當(dāng)前用戶的人臉,還有很多無(wú)關(guān)信息干擾人臉識(shí)別,因此在人臉識(shí)別與檢測(cè)的過(guò)程中要求過(guò)濾干擾人臉的因素,同時(shí)對(duì)用戶人臉進(jìn)行跟蹤,鎖定用戶人臉進(jìn)行識(shí)別,保證識(shí)別的準(zhǔn)確性[2]。
1.2 研究方案
實(shí)現(xiàn)人臉識(shí)別分為4個(gè)步驟:
(1) 百度云控制臺(tái),找到人工智能人臉識(shí)別。
(2) 創(chuàng)建應(yīng)用,獲取密鑰,Access Token[3]。
(3) 調(diào)用人臉識(shí)別SDK轉(zhuǎn)換為可視化文本。
(4) 人臉識(shí)別檢測(cè)圖片中的人臉并標(biāo)記出位置信息。
2 相關(guān)算法及技術(shù)
自然語(yǔ)言處理算法、人臉檢測(cè)、人臉識(shí)別、百度離線調(diào)用SDK服務(wù)、API服務(wù)。
2.1 人臉檢測(cè)
人臉檢測(cè)技術(shù)難點(diǎn)在于人臉內(nèi)部容易變化、外部容易受光線干擾。人臉圖像處理的重要組成是人臉檢測(cè)技術(shù),由于采集到的人臉圖像存在一定角度偏轉(zhuǎn)等問(wèn)題, 所以對(duì)于旋轉(zhuǎn)人臉檢測(cè)的問(wèn)題顯得格外重要[4]。
當(dāng)檢測(cè)到人臉關(guān)鍵點(diǎn)后,就可以對(duì)人臉做一個(gè)空間歸一化,這個(gè)空間歸一化的操作就叫人臉對(duì)齊(facealignment).這個(gè)操作可以使后續(xù)模型提取與五官的位置無(wú)關(guān),只有五官的形狀紋理相關(guān)的特征,可以極大地提升人臉識(shí)別、人臉屬性分析、表情分類等算法的性能和穩(wěn)定性。
在進(jìn)行人臉檢測(cè)時(shí),已得到人臉的關(guān)鍵點(diǎn)land?mark,用landmark對(duì)人臉進(jìn)行對(duì)齊,對(duì)齊的方式是通過(guò)圖像變換,將人臉上的眼睛、鼻子、嘴巴對(duì)準(zhǔn)到一個(gè)預(yù)設(shè)的固定位置上。
# 每個(gè)epoch都有一個(gè)訓(xùn)練和驗(yàn)證階段
for phase in ['train', 'val']:
if phase == 'train':
# 調(diào)用step函數(shù)進(jìn)行參數(shù)更新
scheduler.step()
# Set model to training mode model.train()
else:
# Set model to evaluate mode model.eval()
(1) 實(shí)現(xiàn)基于百度平臺(tái)的人臉檢測(cè):①API調(diào)用②
SDK調(diào)用。
(2) 實(shí)現(xiàn)人臉圖像采集。定位人臉關(guān)鍵點(diǎn)進(jìn)行人臉識(shí)別檢測(cè)。
(3) 系統(tǒng)方案設(shè)計(jì)與實(shí)現(xiàn)。
2.2 人臉識(shí)別的特征
由于人臉識(shí)別中人臉特征依據(jù)每個(gè)區(qū)域的不同和每個(gè)分層不同的種類,例如整體的特征或者是一點(diǎn)的特征,所要提取的方法也會(huì)有許多不同的種類,在當(dāng)前大部分機(jī)器中得到廣泛使用的一種方法,它能夠?qū)λ獧z測(cè)目標(biāo)的信息轉(zhuǎn)化并且對(duì)其細(xì)分,使其與卷積神經(jīng)網(wǎng)絡(luò)相結(jié)合,能夠進(jìn)一步提高人臉檢測(cè)的效率以及精準(zhǔn)度。
人臉識(shí)別中最重要的一部分是特征分類環(huán)節(jié),其中特征分類環(huán)節(jié)中較為常見(jiàn)的就是支持向量機(jī),向量機(jī)有著較高的識(shí)別檢測(cè)精準(zhǔn)度,但是向量機(jī)不能進(jìn)行實(shí)時(shí)檢測(cè),還有一種為目前人們常使用的人臉識(shí)別的方法就是卷積神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)可以減少設(shè)置卷積層的參數(shù),從而讓網(wǎng)絡(luò)更加簡(jiǎn)單,隨著機(jī)器處理數(shù)據(jù)各種類型的改變,它的層數(shù)同樣也在發(fā)生改變,可以解決更加復(fù)雜的分類等問(wèn)題,在便于訓(xùn)練同時(shí),也擁有更好的普適性圖像識(shí)別,筆者選取的特征不僅能描述圖像,還要能夠很好地區(qū)分不同類別的圖像[5]。
2.3 人臉識(shí)別的方法
人臉識(shí)別的方法主要是以子空間的人臉識(shí)別、幾何特征的人臉識(shí)別、局部特征[6]描述符、支持向量機(jī)的人臉識(shí)別、稀疏表示以及深度學(xué)習(xí)的方法為基礎(chǔ)。臉是由嘴巴、鼻子、眼睛等器官組成,眾所周知,每個(gè)人臉的五官有著各種差異,進(jìn)而使世界上每個(gè)人的臉與眾不同,所以把人臉上五官的幾何描寫作為人臉檢測(cè)重要的特征。但是,只從眼睛、嘴巴、鼻子之間的距離思考,人臉之間的相似之處很難區(qū)分,所以在幾何結(jié)構(gòu)方法的基礎(chǔ)之上,提出以彈性模板為基礎(chǔ)的方法,用在檢測(cè)不一樣大小,以及有著偏轉(zhuǎn)角度的人臉。但在進(jìn)行人臉檢測(cè)之前,要依據(jù)準(zhǔn)備檢測(cè)人臉的形狀,設(shè)計(jì)檢測(cè)彈性模板的輪廓,不然就會(huì)影響收斂的效果。
#主程序入口
if __name__ == "__main__":
# 運(yùn)行前清空上次運(yùn)行識(shí)別結(jié)果緩存
if data == 'ok':
# 原圖進(jìn)行ROI裁剪
img_roi = image_roi()
# 將裁剪后的圖像進(jìn)行預(yù)處理
src_roi = image_pre(img_roi)
# 將預(yù)處理后的圖像進(jìn)行模型推理
label, pred_class = modelpre(src_roi)
目前分析和研究的方法就是基于人臉識(shí)別技術(shù),因?yàn)橐粡埰胀ǖ娜四槇D像就有100萬(wàn)左右的像素,其中每一個(gè)像素與之相對(duì)應(yīng)的都是一個(gè)維度,一副人臉的圖像有著100萬(wàn)左右的維數(shù),這樣的數(shù)據(jù)處理對(duì)人臉識(shí)別來(lái)說(shuō)是十分困難的?;谧涌臻g的方法和其中的核心就是降低所要檢測(cè)的維度,把之前高維的人臉圖像,通過(guò)一些轉(zhuǎn)換,把他變到一個(gè)低維度的子空間之中,這樣一來(lái),在子空間中可以讓數(shù)據(jù)處理和分析進(jìn)一步簡(jiǎn)化。
在日常生活中,人臉會(huì)因?yàn)楦鞣N其他的外在因素而發(fā)生不同的改變,例如人們的表情,所在地方的光照以及人的年齡改變等,同時(shí)也有些局部特征變化很小,例如臉部的下三角區(qū)域或者人的虹膜之類,人臉的局部特征描述符方法被提出的前提就是存在局部特征的概念。局部特征描述符方法的優(yōu)勢(shì)就是把整體轉(zhuǎn)化為部分,如把一整幅人臉圖像分成許多局部特征來(lái)進(jìn)行分析處理,同時(shí)也保存了圖像整體特征的結(jié)構(gòu),它也不受其他外界因素干擾的性質(zhì)。
2.4 Python 人臉識(shí)別開(kāi)發(fā)
如圖3所示,OpenCV2中人臉檢測(cè)使用的是de?tectMultiScale函數(shù)[7]。1) 人臉數(shù)據(jù);2) 算法;3) 建立模型;4) 訓(xùn)練模型;5) 測(cè)試模型;6) 上線使用。Python中有調(diào)用攝像頭的模塊,以及將手機(jī)的攝像頭轉(zhuǎn)換地址的模塊,可以在代碼中加入,調(diào)用攝像頭并控制拍攝照片,這樣就可以結(jié)合起來(lái),實(shí)現(xiàn)動(dòng)態(tài)人臉識(shí)別。
搭建Python編譯環(huán)境,并預(yù)導(dǎo)入OpenCV庫(kù)。
3 數(shù)據(jù)與圖像處理
3.1 圖像處理
二值化數(shù)據(jù)相對(duì)比較簡(jiǎn)單,通過(guò)二值圖像,能更好地分析物體的輪廓與形狀[8]。閉運(yùn)算能夠填平缺陷,還能保持形狀與總位置不變,通過(guò)填充圖像的凹角來(lái)濾波圖像[9]。
# 圖像處理:形態(tài)學(xué)開(kāi)運(yùn)算
kernel = np.ones((3,3),np.uint8)
opening=cv2. morphologyEx(dst_2, cv2. MORPH_
OPEN, kernel)
# 圖像處理:包絡(luò)輪廓
#binary,contours,hierarchy=cv2.findContours(open?ing, cv2. RETR_EXTERNAL, cv2. CHAIN_APPROX_SIMPLE)
contours, binary=cv2. findContours(opening, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
# 如果找不到輪廓,則返回原圖,防止空載報(bào)錯(cuò)
src_roi = image_source
3.2 數(shù)據(jù)處理
由于獲取的數(shù)據(jù)(比如圖片分辨率),大多不一致,為了更好地訓(xùn)練模型,常常需要對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單轉(zhuǎn)換。
# 數(shù)據(jù)類型轉(zhuǎn)換
box = np.int64(box)
# 根據(jù)最小外接矩形的中心坐標(biāo)與角度,構(gòu)建一個(gè)旋轉(zhuǎn)矩陣rot_img
# 輸入目標(biāo)輪廓矩形中心點(diǎn)坐標(biāo)
center = rect[0],矩形角度angle = rect[2]
rot_img=cv2. getRotationMatrix2D(rect[0], rect[2], 1.0)
# 使用前面獲得的四個(gè)矩形頂點(diǎn)坐標(biāo)數(shù)組[box],在原圖層繪制輪廓
cv2. drawContours(image_source, [box], 0, (0, 255,0), 1)
# 利用旋轉(zhuǎn)矩陣rot_img,原圖層img實(shí)現(xiàn)中心仿射變換,變換后的圖層尺寸保持不變
# height = image_source. shape[0],width = im?age_source.shape[1]
3.3 方法驗(yàn)證
人臉比對(duì)是對(duì)一個(gè)場(chǎng)景中的靜態(tài)圖像或動(dòng)態(tài)視頻中的人臉與存儲(chǔ)的人臉圖像庫(kù)作比對(duì),用來(lái)查找視頻或者圖像中人的真實(shí)身份過(guò)程[10]。人臉比對(duì)的核心步驟就是提取特征,比對(duì)特征的相似度。通過(guò)測(cè)試結(jié)果比較可看出,多次人臉識(shí)別的結(jié)果基本保持穩(wěn)定,根據(jù)不同的使用場(chǎng)景,對(duì)人臉識(shí)別精確度的要求不同,能夠滿足的需求也不同。具體的測(cè)試效果如表1所示[10]:
通過(guò)多次識(shí)別,來(lái)提高實(shí)驗(yàn)的準(zhǔn)確率。預(yù)設(shè)人臉信息庫(kù)中,共注冊(cè)了100個(gè)用戶信息及人臉圖像,選擇3張圖作為測(cè)試對(duì)象,測(cè)試次數(shù)不同,命中率不同,為了提升人臉識(shí)別精確度,筆者多次對(duì)圖片中的人臉大小、位置、多張人臉以及視頻中的人臉截取等進(jìn)行識(shí)別。
4 結(jié)束語(yǔ)
隨著生活的改善,人們網(wǎng)上購(gòu)物越來(lái)越頻繁,使得快遞物流行業(yè)發(fā)展迅速,這也讓人臉識(shí)別在物流行業(yè)之中的使用更加迅猛發(fā)展,人們?cè)谌】爝f時(shí)越來(lái)越注重快遞簽收時(shí)的安全與準(zhǔn)確性,這也是人臉識(shí)別技術(shù)應(yīng)用受到各大快遞公司青睞的原因,例如各個(gè)小區(qū)及一些特定的地點(diǎn)有著存放快遞的專柜,這些專柜使用掃描二維碼或者人臉識(shí)別的方式讓快遞的購(gòu)買者來(lái)取快遞,快遞專柜在人臉識(shí)別技術(shù)的基礎(chǔ)之上,還增加了紅外雙目活體檢測(cè),這一舉動(dòng)極大提高了用戶取件的效率,減少了快遞領(lǐng)取錯(cuò)誤或者快遞被冒名領(lǐng)取等現(xiàn)象,更加保障了快遞的安全性。除此之外部分地方已經(jīng)有刷臉取快遞的簽收系統(tǒng),這種系統(tǒng)可以在短時(shí)間內(nèi)讓用戶完成快遞的簽收,人臉識(shí)別的深度學(xué)習(xí)應(yīng)用在如今的快遞物流行業(yè)之中也已經(jīng)具有普遍性,把人臉識(shí)別技術(shù)應(yīng)用于快遞簽收中,有效地保障顧客快遞的安全性,同樣也進(jìn)一步提高了用戶的體驗(yàn)感。