丁晴
(上海公安學(xué)院,上海 200137)
當(dāng)前,隨著平安城市、智慧城市建設(shè)的快速發(fā)展,以及視頻監(jiān)控設(shè)備的普及安裝,城市公共安全的技術(shù)應(yīng)用日新月異,大數(shù)據(jù)、人工智能等前沿技術(shù)的應(yīng)用更為視頻監(jiān)控提供了重要助力。人臉識(shí)別技術(shù),通常也被稱為人像識(shí)別或面部識(shí)別技術(shù),是一種根據(jù)人類面部特征的信息進(jìn)行人員身份識(shí)別的生物識(shí)別技術(shù)。[1]人臉識(shí)別技術(shù)能夠在靜態(tài)圖像、動(dòng)態(tài)視頻或攝像機(jī)實(shí)時(shí)拍攝的視頻流中檢測(cè)和跟蹤人臉,并可對(duì)人員身份進(jìn)行識(shí)別。在公共安全領(lǐng)域的應(yīng)用軟件開發(fā)中,有大量的人臉識(shí)別業(yè)務(wù)需求。Python語言具有功能強(qiáng)大、運(yùn)行高效的優(yōu)點(diǎn),現(xiàn)已成為人臉識(shí)別技術(shù)應(yīng)用開發(fā)的主流技術(shù)。
與指紋識(shí)別、虹膜認(rèn)證等技術(shù)相比較,人臉識(shí)別技術(shù)作為一種新興的生物特征識(shí)別技術(shù),可以在被識(shí)別對(duì)象無感知的情況下對(duì)其進(jìn)行遠(yuǎn)程身份識(shí)別,具有其他生物識(shí)別技術(shù)不可替代的優(yōu)勢(shì)。人臉識(shí)別技術(shù)具有幾何特征、模型特征、統(tǒng)計(jì)特征和智能特征。
人臉識(shí)別技術(shù)的識(shí)別對(duì)象是人類的面部特征,例如:面型、眉型、眼型、鼻型、口型、酒窩、眼袋、鼻孔等[2]。這些面部特征都是可以進(jìn)行量化表示的幾何數(shù)據(jù),人臉識(shí)別提取面部圖像中點(diǎn)與點(diǎn)之間的距離、線段的長度、線段之間的角度等數(shù)據(jù),然后把這些點(diǎn)線之間的距離和相關(guān)比率轉(zhuǎn)換為幾何特征,從而實(shí)現(xiàn)對(duì)人臉的快速識(shí)別。
人類的面部既相似,又不同。面部相似在于人臉的五官都具有相同的拓?fù)渑帕薪Y(jié)構(gòu),幾乎所有人的眼睛、眉毛、鼻子、嘴巴和耳朵的五官布局方向一致;面部不同在于五官部位的內(nèi)部細(xì)節(jié)數(shù)據(jù)各不相同,例如:眉毛的濃密、眼睛的大小、鼻子的長度、嘴唇的厚度等。因此,人類面部的一些信息對(duì)應(yīng)于一定的數(shù)據(jù),根據(jù)臉型結(jié)構(gòu)數(shù)據(jù)可以構(gòu)建模型,利用調(diào)節(jié)參數(shù)的方式可以調(diào)節(jié)面部模型特征[3]。
1991年,著名的“特征臉”(Eigenface)主成分分析和特征統(tǒng)計(jì)方法第一次被引入到人臉識(shí)別技術(shù),在實(shí)用效果上取得了明顯的進(jìn)步。2013年,微軟亞洲研究院的研究者首度嘗試采集了10 萬條公開人臉數(shù)據(jù)集,并進(jìn)行統(tǒng)計(jì)分析,獲得了人臉識(shí)別95.17%的精度。2014年3月,中國香港中文大學(xué)的湯曉鷗教授采集20萬條公開人臉數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,把人臉識(shí)別精度推高到99.55%以上[4]。
人臉識(shí)別利用大數(shù)據(jù)、深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等技術(shù),對(duì)人臉圖像特征進(jìn)行聯(lián)想存儲(chǔ)和記憶,并根據(jù)不同神經(jīng)單元狀態(tài)的概率實(shí)現(xiàn)對(duì)人臉圖像準(zhǔn)確識(shí)別[5]。在金融、通信、交通、教育和公共安全等領(lǐng)域,都能看到人臉識(shí)別應(yīng)用的智能特征身影。在不久的將來,還會(huì)出現(xiàn)智能的“機(jī)器人戰(zhàn)警”,車站、碼頭、機(jī)場(chǎng)、地鐵、出入境邊檢等公共場(chǎng)所,都將成為逃犯和恐怖分子不可逾越的關(guān)卡。
人臉識(shí)別集成了人工智能、機(jī)器學(xué)習(xí)、模型理論、專家系統(tǒng)、視頻圖像處理等多種技術(shù),同時(shí)也是生物特征識(shí)別技術(shù)的最新應(yīng)用,其流程可分為人臉檢測(cè)、特征提取和人臉比對(duì)三個(gè)步驟。
人臉檢測(cè)是指對(duì)于任意一幅給定的圖像,采用一定的策略對(duì)圖像進(jìn)行搜索,以確定其中含有多少張人臉;如果有,則返回每張臉的大小和位置[6]。對(duì)于人臉這樣復(fù)雜的圖像,并沒有一個(gè)簡(jiǎn)單的檢測(cè)指標(biāo)來判定是否為一張臉,而是需要使用機(jī)器學(xué)習(xí)算法在圖像中進(jìn)行成千上萬次匹配,當(dāng)每一次匹配成功后,才能認(rèn)定是一張人臉。當(dāng)然,人臉檢測(cè)允許存在一定的容錯(cuò)率。
人臉檢測(cè)技術(shù)難點(diǎn)在于人臉內(nèi)部易變化、外部易受光線干擾。人臉檢測(cè)是人臉圖像處理的關(guān)鍵一步,由于采集到的人臉圖像存在一定的角度偏轉(zhuǎn)等問題,所以對(duì)于旋轉(zhuǎn)人臉檢測(cè)的問題就顯得至關(guān)重要[7]。OpenCV是Intel公司于1999年建立的用C++語言編寫的跨平臺(tái)計(jì)算機(jī)視覺庫,可以運(yùn)行在Windows、Linux、Android和Mac OS操作系統(tǒng)上。OpenCV使用cascade算法把人臉檢測(cè)問題分解為若干區(qū)塊,可以迅速進(jìn)行成千上萬次檢測(cè),從而大大提高了人臉檢測(cè)的效率和準(zhǔn)確率。
每個(gè)人的人臉相對(duì)于其他人都有不同的特征,例如:眼睛大小、眉毛粗細(xì)、紋理分布等。紋理分布是人臉的關(guān)鍵特征之一,被廣泛用于人臉局部特征描述中;為了加強(qiáng)紋理分布特征提取并克服干擾因素對(duì)人臉圖像的影響,通常對(duì)人臉圖像進(jìn)行濾波或預(yù)處理來降低干擾實(shí)現(xiàn)圖像增強(qiáng)效果[8]。
人臉特征數(shù)據(jù)包括面型、眼睛、眉毛、鼻子、嘴巴等。眼睛特征數(shù)據(jù)有:左右眼睛的形狀、大小、瞳孔距離等;眉左右毛的特征數(shù)據(jù)有:眉寬、眉高、眉距等;鼻子的特征數(shù)據(jù)有:鼻寬、眉高、最左與最右邊緣距、鼻孔距等;嘴巴的特征數(shù)據(jù)有:嘴寬、嘴高、最左與最右邊緣距等。
人臉比對(duì)是對(duì)一個(gè)場(chǎng)景中靜態(tài)圖像或動(dòng)態(tài)視頻的人臉,與存儲(chǔ)若干已知身份的人臉圖像庫作比對(duì),以發(fā)現(xiàn)場(chǎng)景中的單個(gè)或多個(gè)人的真實(shí)身份的過程[9]。目前,基于人工智能的人臉比對(duì)技術(shù)有很多,例如:Dlib人臉識(shí)別工具包、百度人臉識(shí)別API、騰訊云AI人臉識(shí)別等,各大公司的人臉識(shí)別技術(shù)各有千秋,基本上都是免費(fèi)開放。
Dlib是一個(gè)包含機(jī)器學(xué)習(xí)算法的C++工具包,免費(fèi)開源且本地化,廣泛應(yīng)用于機(jī)器人、嵌入式設(shè)備、人臉識(shí)別等領(lǐng)域。face_recognition是一個(gè)基于dlib的深度學(xué)習(xí)人臉識(shí)別庫,它采用深度學(xué)習(xí)算法來獲得訓(xùn)練數(shù)據(jù),比對(duì)人臉圖像的68個(gè)特征點(diǎn),人臉識(shí)別準(zhǔn)確率高達(dá)99.38%[10]。
Python是一種計(jì)算機(jī)程序設(shè)計(jì)語言,是動(dòng)態(tài)的面向?qū)ο蟮哪_本語言。Python具有程序簡(jiǎn)潔、代碼易讀和模塊化擴(kuò)展等優(yōu)點(diǎn),擁有大量成熟的應(yīng)用模塊。用Python開發(fā)應(yīng)用軟件項(xiàng)目,不僅開發(fā)效率高,而且運(yùn)行速度快。以下是在Windows 10環(huán)境下構(gòu)建Python軟件開發(fā)平臺(tái)的步驟。
Python3是對(duì)Python2的重大版本升級(jí)。Python3版本升級(jí)后,統(tǒng)一了代碼編寫規(guī)范,使程序代碼簡(jiǎn)潔優(yōu)美、快速運(yùn)行。在互聯(lián)網(wǎng)進(jìn)入網(wǎng)址https://www.python.org/downloads/windows,可免費(fèi)下載最新版的Python3.9.2安裝軟件包python-3.9.2-amd64.exe。下載完成后安裝該文件,注意需要勾選Add Python3.9 to PATH(把Python3.9路徑加入Windows環(huán)境變量),然后選Customize installation方式自定義安裝,其余選項(xiàng)大多保持默認(rèn),安裝目錄可設(shè)為C:Python39。
Python3.9內(nèi)置了os、sys、string、math等常用模塊,但一些不常用的模塊需要另行安裝。由于初安裝的Python自帶的在線安裝軟件pip版本較低,故需要先對(duì)pip進(jìn)行軟件升級(jí),方法是運(yùn)行Windows系統(tǒng)菜單“開始-Windows系統(tǒng)-命令提示符”或“Win+R”組合鍵輸入cmd回車,打開命令行小窗口;對(duì)pip升級(jí)的cmd命令語句為C:python39python-m pip install--upgrade pip。
在命令行小窗口中,安裝Flask輕量級(jí)Web框架模塊、Requests網(wǎng)絡(luò)訪問模塊、Pillow圖像處理模塊和OpenCV計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)庫模塊,其命令語句分別是:pip install Flask、pip install Requests、pip install Pillow、pip install opencv-python。
Windows自帶的記事本軟件可以用來編輯程序代碼,但功能較少。代碼編程工具可選用免費(fèi)的Notepad++7.5綠色單文件版。Notepad++軟件大小僅幾兆,體積小巧、運(yùn)行便捷,支持眾多編程語言。新建C:Python39app.py文件,程序?yàn)槿缦? 行代碼,以UTF-8 無BOM 的編碼格式保存。
在命令行窗口運(yùn)行python C:Python39app.py,開啟Web服務(wù);瀏覽器打開http://127.0.0.1,如果看到網(wǎng)頁顯示“Hello Python!”,則說明Python軟件開發(fā)平臺(tái)已安裝成功。
新建C:Python39WWW 文件夾,用于保存開發(fā)人臉識(shí)別小項(xiàng)目的相關(guān)程序和資源;然后在該文件夾中新建static和templates兩個(gè)子文件夾。其中,static子文件夾用于保存人臉模型文件和靜態(tài)圖像文件,templates子文件夾用于保存響應(yīng)用戶查看請(qǐng)求的Html 模板文件。
OpenCV運(yùn)用機(jī)器學(xué)習(xí)算法生成大量人臉模型,例如:正臉、笑臉、眼睛等,可免費(fèi)使用。Python自帶多種人臉模型文件,安裝時(shí)已自動(dòng)保存于C:Python39Libsitepackagescv2data文件夾中,無需從網(wǎng)絡(luò)上搜索和下載。其中,haarcascade_frontalface_default.xml 是正臉模型,可用于對(duì)靜態(tài)圖像進(jìn)行人臉檢測(cè)。另外,還需準(zhǔn)備一張含有人臉的照片faces.jpg,復(fù)制到C:Python39WWWstatic文件夾中,待Python程序檢測(cè)。
新建C:Python39WWW emplatesindex.html 模板文件,源代碼如下。
在命令行窗口運(yùn)行python C:Python39WWWapp.py,本地打開http://127.0.0.1或遠(yuǎn)程訪問http://(IP地址),可看到上述程序從照片中標(biāo)記出人臉的大小和位置,運(yùn)行效果如圖1所示。
圖1 人臉檢測(cè)程序運(yùn)行效果圖Fig.1 Running effect picture of face detection program
人臉識(shí)別技術(shù)應(yīng)用研究是一項(xiàng)極富挑戰(zhàn)性的課題。目前人臉識(shí)別技術(shù)對(duì)于正面人臉的圖像變化已有良好的檢測(cè)能力,但隨著環(huán)境變化和需求更新,人臉識(shí)別技術(shù)將會(huì)引來更多的挑戰(zhàn)。人臉識(shí)別技術(shù)將與大數(shù)據(jù)、物聯(lián)網(wǎng)等技術(shù)相互結(jié)合,實(shí)現(xiàn)對(duì)視頻文件和實(shí)時(shí)監(jiān)控進(jìn)行人臉識(shí)別檢索,以提高公共安全管理水平,并將迎來公共安全防范協(xié)作的新飛越。