葉榮榮 袁 泉 曹 雷
(中國藥科大學(xué)圖書與信息中心 南京 211198)
新一輪科技革命方興未艾,孕育了一批新興技術(shù),如人工智能等,新的科技革命正在重塑全球經(jīng)濟(jì)結(jié)構(gòu),為人類社會發(fā)展帶來了新機(jī)遇[1]。其中,人臉識別技術(shù)作為最具有代表性的一種新興的生物特征識別技術(shù),已被廣泛應(yīng)用于銀行、車站、道路監(jiān)控等社會領(lǐng)域。
1889年,Nature發(fā)表一篇名為Personal identification and description的文章。自那時起,人類就開始了計算機(jī)用于人臉識別的探索[2]。
二十世紀(jì)九十年代,人臉識別技術(shù)蓬勃發(fā)展,各種算法(如“Eigenface”算法、“Fisher”算法和“FERET”算法)雨后春筍般涌現(xiàn)。這一階段的人臉識別研究成果為下一階段的應(yīng)用提供了寶貴的理論和經(jīng)驗(yàn)指導(dǎo)[3]。
進(jìn)入新世紀(jì),人臉識別技術(shù)井噴式發(fā)展。從基于簡單算法的識別發(fā)展到深度的學(xué)習(xí),非常多的經(jīng)典算法(如“Guassian Face”算法、“Eaen Electron”算法)被提出。這一階段的人臉識別商用案例大規(guī)模落地,如:2017年北京西站開通人臉識別驗(yàn)票系統(tǒng),開啟了我國鐵路檢票新時代。
隨著人類生活與科學(xué)技術(shù)的結(jié)合越來越緊密,“智慧樓宇通行”、“智慧物流”等眾多新的研究領(lǐng)域不斷涌現(xiàn),“智慧圖書館”也應(yīng)運(yùn)而生。
從Markus Aittloa于2003年發(fā)表的Smart Library-Location Aware Mobile Library Service一文中首次提出“智慧圖書館”的概念始,時至今日,“智慧圖書館”的概念與定義仍然是百花爭鳴,不盡相同。
劉煒等人指出智慧圖書館一是能夠提供大量的“無人”或“自助”服務(wù),二是能夠通過對用戶需求的自動感知提供精準(zhǔn)、高質(zhì)量的服務(wù)[4]。袁紅軍指出圖書館智慧服務(wù)就是革新圖書館傳統(tǒng)服務(wù)思想、內(nèi)容、方式,形成一系列新方法、新思維,重塑圖書館智慧服務(wù)體系[5]。
智慧圖書館的定義相當(dāng)寬泛且很難用精細(xì)的語言去表述辨析,這也不是本文的研究重點(diǎn)。如果僅從技術(shù)和讀者服務(wù)的角度分析,智慧圖書館無非是通過人與物的互聯(lián)互通,為讀者提供最方便和最舒適的服務(wù)。
2017年,國內(nèi)眾多省市圖書館開始將人臉識別技術(shù)應(yīng)用于刷臉借書,代表有:廈門市圖書館、紹興市圖書館、蘇州工業(yè)園區(qū)圖書館[6]。而且,人臉識別技術(shù)不僅僅應(yīng)用于借書服務(wù),還應(yīng)用于館藏書目管理。南京大學(xué)圖書館智慧盤點(diǎn)機(jī)器人、浙江理工大學(xué)圖書館人臉識別圖書查詢機(jī)、上海交通大學(xué)圖書館人臉識別服務(wù)注冊終端紛紛上[7]。
此外,南京大學(xué)、中國農(nóng)業(yè)大學(xué)、武漢大學(xué)等多家圖書館已經(jīng)部署將計算機(jī)視覺、RFID感知和智能機(jī)器人技術(shù)相結(jié)合的“圖客”系統(tǒng),實(shí)現(xiàn)圖書盤點(diǎn)時速超過20 000冊/小時,漏讀率低于1%,并達(dá)到厘米級圖書定位。
借助在身份核驗(yàn)方面體現(xiàn)的優(yōu)勢,人臉識別技術(shù)在圖書館的應(yīng)用場景可以延伸到通行、文印、存包、座位預(yù)約和入館信息推送等智慧服務(wù),為圖書館創(chuàng)造更加互聯(lián)高效、便利與個性化的智能服務(wù)環(huán)境。
智慧圖書館服務(wù)系統(tǒng)主要有三部分組成:操作端、交互端和識別端。操作端是與讀者交互的連接于局域網(wǎng)的硬件設(shè)備,如借還書機(jī)、存包柜等;交互端主要包含攝像頭、門禁、電子屏幕等;識別端則是后臺服務(wù)器。圖1是整個系統(tǒng)的結(jié)構(gòu)圖。
圖1 基于人臉的智慧圖書館結(jié)構(gòu)圖
交互端的核心設(shè)備是攝像頭。我們需要通過第三方服務(wù)商提供的SDK,將視頻的每一幀圖像數(shù)據(jù)進(jìn)行人臉檢測以及人臉特征信息提取,同時將信息通過HTTP協(xié)議傳輸給后臺服務(wù)器[8]。
前端攝像頭與后端不同設(shè)備的連接,例如門禁、借還書機(jī)等,形成讀者與資源、讀者與館員、資源與館員的互聯(lián)互通、智能交互。攝像頭采集人臉信息,通過調(diào)用人臉識別API接口,實(shí)現(xiàn)讀者身份識別。這種將讀者圖像與圖書館數(shù)據(jù)庫中存儲的讀者圖像進(jìn)行對比判斷,實(shí)現(xiàn)讀者身份識別與證件綁定的方式可廣泛應(yīng)用于圖書館智慧服務(wù)系統(tǒng)[9]。
由于篇幅有限,我們選擇通行門禁進(jìn)行重點(diǎn)介紹,其余功能只是不同硬件在不同場景下的不同應(yīng)用,工作原理一樣。
我們的人臉識別方案采用F-M4面板機(jī)來實(shí)現(xiàn),該面板機(jī)具有體積小、輕前端、便于移動安裝等眾多優(yōu)點(diǎn)?;谏疃葘W(xué)習(xí)的人臉識別計算設(shè)立在服務(wù)器端,避免導(dǎo)致卡頓、識別過慢等問題,從而在實(shí)際應(yīng)用場合中具有可操作性與準(zhǔn)確性,這也是本文的研究意義所在。
本文以CNKI、Web of science數(shù)據(jù)庫為檢索源(檢索日期為2020年6月10日),在“信息科技”領(lǐng)域進(jìn)行檢索,以“人臉識別系統(tǒng)”為主題,得到期刊數(shù)據(jù)1 197條;以“人臉識別方法綜述”為主題得到期刊數(shù)據(jù)249條。在剔除不相關(guān)文獻(xiàn)后,結(jié)合具體內(nèi)容分析發(fā)現(xiàn),一個完整的人臉識別系統(tǒng)通常包含有如下幾個模塊:人臉圖像采集、人臉檢測識別、人臉特征對比以及結(jié)果輸出。圖2給出了人臉識別技術(shù)的一般設(shè)計思路。
圖2 人臉識別技術(shù)的一般設(shè)計思路
(1)人臉圖像采集
人臉圖像采集在人臉識別系統(tǒng)中屬于前期準(zhǔn)備工作,也是最重要的工作。采集的人臉圖像質(zhì)量直接影響人臉識別的準(zhǔn)確率和識別速度,我們推薦參照中華人民共和國第二代居民身份證數(shù)字相片技術(shù)標(biāo)準(zhǔn)(GA461-2004)。標(biāo)準(zhǔn)要求采集的人臉圖像為近期正面免冠照,純色背景,人臉層次豐富,神態(tài)自然,無明顯畸變和圖像處理痕跡,照片規(guī)格為358像素(寬)*441像素(高),分辨率350dpi,24位RGB真彩色顏色模式。
(2)人臉檢測識別
如何從待識別的視頻監(jiān)控圖像上獲取有效人臉信息是人臉識別算法的核心研究內(nèi)容之一,不僅需要在復(fù)雜環(huán)境、多變光照、故意遮擋和多姿態(tài)人臉中準(zhǔn)確捕獲人臉坐標(biāo)位置,而且需要判斷成像質(zhì)量、人臉數(shù)量等有價值的面部信息。
關(guān)于人臉關(guān)鍵點(diǎn)定位,海內(nèi)外學(xué)者對此做了大量研究工作。香港中文大學(xué)湯曉歐等人[10-11]提出了基于TCDCN的人臉特征點(diǎn)檢測算法,該算法將面部屬性(如:是否戴眼鏡、是否微笑)結(jié)合到人臉關(guān)鍵點(diǎn)檢測任務(wù)上,顯著提高了關(guān)鍵點(diǎn)檢測的效率;英國劍橋大學(xué)Paul Viola和Michael Jones等人[12-15]提出一種基于積分圖、級聯(lián)檢測器和AdaBoost學(xué)習(xí)算法的人臉檢測方法,該方法大幅度提高了人臉識別速度。此外,還有SphereFace算法、DeepID算法以及DeepFace算法等[16-20],這些不同算法的檢測方法框架大體是相同的,只是通過構(gòu)造不同網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),達(dá)到較好的人臉識別效果。
本研究選取基于Face++的目標(biāo)檢測算法對人臉位置、關(guān)鍵點(diǎn)和特征值進(jìn)行計算提取,各算法的原理對比、計算差異及其優(yōu)劣性不在本研究之中。
(3)人臉特征對比
人臉特征對比就是判斷待識別人臉為人臉庫中的哪一個人[21],大多為1:N比對,為此需要事先在人臉數(shù)據(jù)庫中存儲若干人臉特征值。一般而言,不同對比方法的主要創(chuàng)新點(diǎn)就在于怎樣提取代表性的特征[22]。
(4)識別結(jié)果輸出
檢測到的人臉特征與人臉數(shù)據(jù)庫中的人臉特征進(jìn)行比對,得到相似度最高的值,再將該值與相似度閾值進(jìn)行比較,若大于設(shè)定的閾值,則返回成功,反之則返回失敗。
人臉識別系統(tǒng)的整個工作流程為管理員預(yù)先將人臉和身份信息存儲到數(shù)據(jù)庫,當(dāng)前端攝像頭抓拍到人臉照片時,將其信息發(fā)送給后端服務(wù)器,服務(wù)器負(fù)責(zé)人臉特征值對比,并將對比結(jié)果返回給前端設(shè)備。前端設(shè)備若是門禁,則給控制電磁鎖單元門下發(fā)“打開”或者“閉合”的信號。
本系統(tǒng)開發(fā)采用Java語言。Java語言的優(yōu)勢是可移植性,面對不同的軟硬件平臺和操作系統(tǒng)是無需修改的,即可運(yùn)行。算法分三個部分:與Face++API的接口對接、數(shù)據(jù)庫設(shè)計和標(biāo)識碼對比。
(1)接口對接
首先將攝像頭抓拍到的人臉照片通過Base64算法進(jìn)行編碼,再通過post方法把http請求發(fā)送給服務(wù)器,在獲得Face++API函數(shù)的使用權(quán)限后,對抓拍的圖片進(jìn)行處理,得到JSON格式標(biāo)識碼[23]。
(2)數(shù)據(jù)庫設(shè)計
系統(tǒng)采用MySQL數(shù)據(jù)庫建立人臉特征數(shù)據(jù)庫。首先將收集的圖像上傳到Face++服務(wù)器,以JSON數(shù)據(jù)格式生成的唯一標(biāo)識碼并保存在數(shù)據(jù)庫中。
在數(shù)據(jù)庫中建立一個讀者信息表,并以學(xué)號為主鍵,用于存放學(xué)生的姓名、專業(yè)、院系、權(quán)限等信息,表格之間通過主鍵進(jìn)行映射。在數(shù)據(jù)庫交互方面,采用封裝函數(shù)的方法,每個表都是一個數(shù)據(jù)表類的子表,以操作數(shù)據(jù)庫連接及數(shù)據(jù)增刪改查。
(3)標(biāo)識碼對比
該模塊主要實(shí)現(xiàn)的功能是在得到的JSON碼中提取所需關(guān)鍵信息,即唯一標(biāo)識碼(facetoken)、人臉屬性、系統(tǒng)耗時和錯誤代碼等。將唯一標(biāo)識碼與人臉信息數(shù)據(jù)庫中的標(biāo)識碼進(jìn)行一一對比,若存在相似度最高的則可返回匹配成功,否則匹配失敗。
計算機(jī)識別人臉,首先要定位人臉在照片或視頻畫面中的位置,這需要依靠Landmark函數(shù)。Landmark為在臉上繪制的若干標(biāo)記點(diǎn),標(biāo)記點(diǎn)一般畫在邊、角、輪廓、交叉等關(guān)鍵位置,借助它們就可以描述人臉的眼睛、眉毛、嘴唇和鼻子輪廓。圖3為檢測示例,每個圓點(diǎn)為Landmark關(guān)鍵點(diǎn)。
圖3 Landmark關(guān)鍵點(diǎn)
Landmark中字段x表示橫坐標(biāo)位置,y表示縱坐標(biāo)位置。以下是請求成功返回示例:
(1)人臉識別模塊
人臉識別的過程封裝在Detect API類中。這個接口的功能十分強(qiáng)大,可以獲得人臉各類屬性信息,如年齡、性別、眼睛狀態(tài)、情緒等,但在這里我們只需要返回face-token。
人臉識別關(guān)鍵代碼如下:
File file=new File("照片路徑"); //存放欲識別的照片路徑
byte[] buff=getBytesFromFile(file); //將 該照片轉(zhuǎn)化為byte數(shù)組
String url="https://api-cn.faceplusplus.com/facepp/v3/detect"; //調(diào)用人臉識別api接口
HashMap<String,String>map=new HashMap<>(); //新建一個哈希表,用于存放數(shù)據(jù)
map.put("return-landmark","1"); //返 回人臉關(guān)鍵點(diǎn)坐標(biāo)數(shù)組
map.put("returnattributes","ATTRIBUTES"); //返回人臉屬性特征
(2)人臉對比模塊
調(diào)用完人臉識別模塊后,已經(jīng)將人臉圖像轉(zhuǎn)換為face-Token。如果需要做人臉的分析比對等操作,還必須將對應(yīng)的face-token添加到FaceSet中。FaceSet可以理解成一個存放所有人臉的容器或集合。
關(guān)鍵代碼如下:
String url = "https://api-cn.faceplusplus.com/facepp/v3/faceset/addface"; //調(diào)用人臉識別api接口
List<BasicNameValuePair> faceset= new ArrayList<>(); //新建一個數(shù)組,用于存放數(shù)據(jù)
faceset.add(new BasicNameValuePair("apikey", "apikey")); //輸入api key
faceset.add(new BasicNameValuePair("apisecret", "apisecret")); //輸入api secret
faceset.add(new BasicNameValuePair("outerid", "outid")); //創(chuàng)建faceset標(biāo)識,用來管理faceset對象
faceset.add(new BasicNameValuePair("facetokens", "e07e0d319e839aef0922a0c8669a4d1a")); //將face-tokens放到faceset中
post(faceset,url); //發(fā)送請求
在一個已有的FaceSet中找出與目標(biāo)人臉最相似的一張或多張人臉,我們稱之為人臉?biāo)阉骰蛉四槍Ρ?。值得注意的是,對同一張圖片進(jìn)行多次人臉檢測,同一個人臉得到的face-token是不同的。人臉檢測和人臉對比流程如圖4所示。
圖4 人臉檢測和人臉對比流程圖
為了測試本文的方法在實(shí)現(xiàn)智慧圖書館通行中的身份認(rèn)證和人臉識別性能,我們在中國藥科大學(xué)圖書館2樓進(jìn)行了真實(shí)測試,測試時間是2020年3月-6月。期間共采樣師生人臉信息16 465張,同時對采集的人臉照片進(jìn)行特征信息庫構(gòu)造。智慧通行系統(tǒng)的測試場景如圖 5所示。
圖5 圖書館人臉識別通行測試場景
在圖書館智慧通行中,人臉識別的身份對比測評指標(biāo)有四個:通過率、漏識率、誤識率和拒絕率。
通過率=正樣本通過人數(shù)/正樣本總數(shù);
漏識率=正樣本未通過人數(shù)/正樣本總數(shù);
誤識率=負(fù)樣本通過人數(shù)/負(fù)樣本總數(shù);
拒絕率=負(fù)樣本未通過人數(shù)/負(fù)樣本總數(shù)。
通過率+誤識率=100%;誤識率+拒絕率=100%。正負(fù)樣本及身份測評指標(biāo)如圖 6所示。
圖6 正負(fù)樣本及身份測評指標(biāo)
通過率是衡量人臉特征庫中的正樣本通過的比例,可直觀理解為順利通過人臉識別系統(tǒng)的概率。誤識率是不在人臉特征庫中的負(fù)樣本通過的比例,可直觀理解為非本單位人員通過人臉識別系統(tǒng)的概率。通過率越高越好,代表人臉識別系統(tǒng)的可實(shí)用性,誤識率越低越好,如果高了就代表存在一定的安全隱患。
不過識別率不等于通過率。還是以智慧通行為例,1張人臉去特征庫中比對N個數(shù)據(jù),無論如何都得到N個分?jǐn)?shù),其中有一個最高分。我們要確認(rèn)的是該最高分是不是“足夠高”,足夠高就視為準(zhǔn)入,不夠高就不準(zhǔn)入,這個“足夠高”的值稱之為“閾值”。閾值是用于判斷對一個人臉識別比對的結(jié)果是否放行。
圖 7中○代表正樣本的識別分布,△表示負(fù)樣本的識別分布,虛線表示閾值,閾值以上的表示通過,閾值以下的表示不通過。
圖7 身份對比中的閾值設(shè)置
閾值為0,所有正負(fù)樣本都通過,正樣本均通過率100%。也就是說,不管任何人都能通過,但是負(fù)樣本誤識率也是100%;閾值向上浮動,開始吞噬負(fù)樣本。閾值上移的過程就是不在特征庫中的人陸續(xù)被拒絕通過的過程,當(dāng)上移到一定的高度就開始吞噬正樣本,如果到達(dá)100閾值,那么所有人都視為拒絕通過。因此,閾值的設(shè)定是關(guān)鍵。我們的目標(biāo)是讓盡可能多的○停在閾值之上,同時讓盡可能多的△停在閾值以下。FacePass SDK建議在80左右。
人臉識別閘機(jī)通行系統(tǒng)的識別時間測試分為四個部分:人臉檢測時間、人臉抓拍時間、人臉特征提取時間和數(shù)據(jù)庫檢索對比時間。系統(tǒng)前端采用F-M4面板機(jī),配有300萬高清攝像頭。要想抓拍到清晰有效的人臉圖像,攝像頭頻率設(shè)置不宜過高,本系統(tǒng)設(shè)置為15幀/S,圖像獲取時間為60ms左右。系統(tǒng)使用的人臉數(shù)據(jù)庫圖片為800*600像素。
在進(jìn)行人臉檢測時,設(shè)置“最小人臉”數(shù)值≥100,“光照標(biāo)準(zhǔn)”數(shù)值≥80,“清晰度”數(shù)值≥0.2,檢測時只檢測該范圍之內(nèi)的人臉圖像,其他較小、陰陽臉、模糊等人臉圖像忽略不計。我們排除惡劣光照條件和天氣影響,通過大量統(tǒng)計,得到人臉檢測平均所需時間為141ms。本測試歷時4個月,抓拍人臉照片總計8 330張,得到有效正確人臉圖像共計8 188張,采集的圖像如圖 8所示,人臉檢測率為98.3%。
圖8 圖書館測試采集到的人臉圖像
人臉特征提取平均預(yù)處理時間為120ms。人臉特征對比及檢索時間與訓(xùn)練正樣本數(shù)、數(shù)據(jù)庫索引條數(shù)有關(guān)系。訓(xùn)練正樣本個數(shù)越多,識別時間越短;索引條數(shù)越多,識別時間越長。以測試的正樣本數(shù)2 386為例,平均一張圖片的比對時間是0.6ms。
在統(tǒng)計人臉識別智慧通行系統(tǒng)的通過率、漏識率、誤識率和拒絕率時,我們采用觀察法。控制正負(fù)樣本的參數(shù),觀察這四個參數(shù)。具體方法為:選中采集的人臉圖片先放在正樣本中,重復(fù)試驗(yàn),調(diào)整閾值參數(shù),統(tǒng)計通過率和漏識率;再將這張圖片中的人放在負(fù)樣本中,重復(fù)試驗(yàn),調(diào)整閾值參數(shù),統(tǒng)計誤識率和拒絕率。測得結(jié)果如表1所示。
表1 閾值設(shè)置與通行測試結(jié)果
從表中可以看出,不管是正樣本還是負(fù)樣本,閾值越低,人員越容易通過;閾值越高,人員越不容易通過;對應(yīng)的,閾值越低,通過率越高,誤識率越高;閾值越高,通過率越低、誤識率也越低,兩者一個正樣本一個負(fù)樣本,同升同降。
由于實(shí)測環(huán)境下通過攝像頭采集的照片在復(fù)雜光照、行走姿態(tài)、有遮擋等情況下照片質(zhì)量變差,造成實(shí)際測試通過率有所下降,但是從實(shí)測效果看該方案基本滿足需求具有一定實(shí)用性。
人臉識別技術(shù)經(jīng)過十來年的發(fā)展,在公共安全、電子商務(wù)等領(lǐng)域取得了巨大的應(yīng)用價值。尤其是在應(yīng)對突然爆發(fā)的新冠肺炎疫情防控期間,在隔離人員管理、流動人口要素管控、隱患排查、服務(wù)群眾等各個方面發(fā)揮了更精細(xì)化、高效化的作用。
然而智能服務(wù)并不等同于智慧服務(wù),以人臉識別系統(tǒng)構(gòu)成的自助借還、文印存包、座位預(yù)約等自動化系統(tǒng)仍屬于智慧圖書館的初級階段,與人工智能密切相關(guān)的圖書館智慧服務(wù)尚需長期實(shí)踐探索。