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