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