劉文清 陳小惠 姚程
【摘 要】隨著人工智能的發(fā)展,掌握深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)技術(shù)的優(yōu)勢(shì)不言而喻。本文以多層感知機(jī)的構(gòu)造為起點(diǎn),分析了深度學(xué)習(xí)的計(jì)算機(jī)視覺(jué)原理,利用當(dāng)前流行的深度學(xué)習(xí)技術(shù)框架搭建一個(gè)具有計(jì)算機(jī)視覺(jué)的人臉識(shí)別原型系統(tǒng),用于數(shù)據(jù)中心機(jī)房監(jiān)控管理,常規(guī)的信息系統(tǒng)被注入了人工智能的新元素,本文為同類(lèi)型的人工智能系統(tǒng)的研發(fā)提供了參考。
【關(guān)鍵詞】人工智能;人臉識(shí)別;深度學(xué)習(xí);機(jī)器視覺(jué)
在經(jīng)典的程序設(shè)計(jì)中,程序員只要在程序中嵌入足夠多的明確規(guī)則,人們輸入數(shù)據(jù),系統(tǒng)就能得出正確的答案。[1]事實(shí)上,這對(duì)于解決定義明確的邏輯問(wèn)題可能適用,但對(duì)于難以給出明確規(guī)則,如:圖像分類(lèi)、語(yǔ)音識(shí)別等更加模糊、復(fù)雜的問(wèn)題,實(shí)踐的效果卻不佳。直到2012年,隨著AlexNet人工神經(jīng)網(wǎng)絡(luò)誕生,一種新的方法——機(jī)器學(xué)習(xí)才在視覺(jué)、聽(tīng)覺(jué)等方面取得革命性的進(jìn)展。深度學(xué)習(xí)是一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)算法,在語(yǔ)音和圖像識(shí)別方面取得的效果,遠(yuǎn)遠(yuǎn)超過(guò)先前相關(guān)技術(shù),具有劃時(shí)代的意義。
(一)多層感知機(jī)
作為神經(jīng)網(wǎng)絡(luò)的起源,了解感知機(jī)的構(gòu)造是通向神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的一種途徑。感知機(jī)是由美國(guó)學(xué)者在1957年提出來(lái)的。感知機(jī)接收多個(gè)輸入信號(hào),輸出一個(gè)信號(hào)。使用單層感知機(jī)可以實(shí)現(xiàn)與門(mén),或門(mén),與非門(mén)三種邏輯電路,然而單層感知機(jī)卻做不了異或門(mén)。
單層感知機(jī)留有遺憾,做不了異或門(mén)。但通過(guò)兩層感知機(jī)組合疊加,卻可以輕松將異或門(mén)實(shí)現(xiàn)??梢?jiàn),通過(guò)增加層,雙層感知機(jī)可以表示單層感知機(jī)無(wú)法表示的東西;使用多層感知機(jī)可以實(shí)現(xiàn)更為復(fù)雜的電路,理論上,甚至可以實(shí)現(xiàn)計(jì)算機(jī)。這也為后來(lái)的“深度學(xué)習(xí)”帶來(lái)了一些啟發(fā)。
(二)人工神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)(ANN),是20世紀(jì)80年代以來(lái)人工智能領(lǐng)域的研究熱點(diǎn)。它與多層感知機(jī)有很多共同點(diǎn),都是由大量的節(jié)點(diǎn)相互聯(lián)接構(gòu)成。如果用圖來(lái)簡(jiǎn)要表示的話(huà),一般可分為三個(gè)層:輸入層、隱藏層、輸出層。
如圖1所示,用○表示神經(jīng)元,用箭頭表示它們之間的連接。箭頭上有“權(quán)重”,權(quán)重和對(duì)應(yīng)的神經(jīng)元的值分別相乘,其和作為下一個(gè)神經(jīng)元的輸入。為了充分?jǐn)M合輸出特性,通常會(huì)另外加上一個(gè)常數(shù)進(jìn)行修正,稱(chēng)作“偏置”。一個(gè)全連接神經(jīng)網(wǎng)絡(luò)模型即搭建完成。
為了使神經(jīng)網(wǎng)絡(luò)能進(jìn)行學(xué)習(xí),專(zhuān)家們引入了損失函數(shù)概念。[2][3][4]損失函數(shù)是衡量神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)結(jié)果好壞的基本標(biāo)志。它的基本思想是:計(jì)算預(yù)測(cè)值與實(shí)際標(biāo)志的差值,差值大則表示預(yù)測(cè)值與真實(shí)值的誤差大;差值小則會(huì)使損失漸進(jìn)至局部最小值,從而使預(yù)測(cè)值逼近于真實(shí)值。為了找到使損失值盡可能小的地方,需要對(duì)網(wǎng)絡(luò)參數(shù)求導(dǎo),然后以這個(gè)導(dǎo)數(shù)為指引,迭代更新參數(shù)的值,直到損失值降至最小。經(jīng)過(guò)專(zhuān)家們的研究設(shè)計(jì),對(duì)于分類(lèi)問(wèn)題,需要使用交叉熵?fù)p失函數(shù),對(duì)于回歸問(wèn)題,需要使用均方差損失函數(shù)。
(三)卷積神經(jīng)網(wǎng)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是人工神經(jīng)網(wǎng)絡(luò)向“深度”學(xué)習(xí)演進(jìn)的代表算法之一,現(xiàn)已被廣泛用于圖像識(shí)別等各種場(chǎng)合,有著無(wú)可比擬的獨(dú)特優(yōu)勢(shì)。以圖像識(shí)別為例:在數(shù)字圖像處理中有一種最為基本的處理方法,即線(xiàn)性濾波。卷積神經(jīng)網(wǎng)絡(luò)的原理與此類(lèi)似,它使用的濾波工具是另一個(gè)小型矩陣,專(zhuān)家們稱(chēng)之為卷積核。如果將待處理的圖像看作一個(gè)大型矩陣,圖像中的每個(gè)像素可以看作矩陣中的每個(gè)元素,使用卷積核對(duì)全圖進(jìn)行掃描,就好比使用某種局部特征圖來(lái)對(duì)全圖進(jìn)行檢測(cè)。
(四)計(jì)算機(jī)視覺(jué)
計(jì)算機(jī)視覺(jué)是一門(mén)研究如何使機(jī)器“看”的科學(xué),也就是指如何用攝影機(jī)和電腦代替人眼對(duì)目標(biāo)進(jìn)行識(shí)別、跟蹤和測(cè)量等的機(jī)器視覺(jué)。具體來(lái)說(shuō),就是模擬動(dòng)物神經(jīng)細(xì)胞的神經(jīng)元聚集起來(lái)形成網(wǎng)絡(luò),然后讓這個(gè)網(wǎng)絡(luò)去觀察大量的圖片,進(jìn)行“自學(xué)習(xí)”。神經(jīng)網(wǎng)絡(luò)運(yùn)用的數(shù)學(xué)理論其實(shí)非常簡(jiǎn)單,基本上是比較基礎(chǔ)的數(shù)學(xué)知識(shí)。特別是利用這種具有多層結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò),甚至可以從圖片和視頻中識(shí)別出數(shù)字、貓、狗、臉孔、指紋、文字等。如果能將其與常規(guī)的業(yè)務(wù)應(yīng)用系統(tǒng)集成,即可提供一些具有AI增值功能(如人臉識(shí)別、人臉比對(duì)等)的服務(wù)。
針對(duì)機(jī)器視覺(jué)的目標(biāo)檢測(cè),總體可以分為兩大類(lèi)。一類(lèi)是傳統(tǒng)的基于統(tǒng)計(jì)學(xué)習(xí)分類(lèi)器的方法,另一類(lèi)是基于深度學(xué)習(xí)的檢測(cè)方法。
Keras是一個(gè)由Python編寫(xiě)的開(kāi)源深度學(xué)習(xí)框架,可進(jìn)行深度學(xué)習(xí)模型的設(shè)計(jì)、開(kāi)發(fā)。AlexNet作為一種經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),利用Kears實(shí)現(xiàn)起來(lái)很方便。我們可以將網(wǎng)絡(luò)模型與損失函數(shù)法相結(jié)合,在經(jīng)過(guò)模型搭建和圖片預(yù)處理后,可以對(duì)模型進(jìn)行訓(xùn)練。訓(xùn)練的過(guò)程中,通過(guò)函數(shù)回調(diào)的方式來(lái)記錄每一個(gè)迭代訓(xùn)練好的模型。迭代的次數(shù)越多,優(yōu)選出的模型效果會(huì)更好?;谏疃葘W(xué)習(xí)的機(jī)器視覺(jué),可以實(shí)現(xiàn)圖像的分類(lèi)和人臉的識(shí)別,通過(guò)將訓(xùn)練好的模型發(fā)布成WEB服務(wù),生產(chǎn)活動(dòng)中其他應(yīng)用程序就可以進(jìn)行一些AI功能的WEB服務(wù)調(diào)用。
對(duì)于中小企業(yè)來(lái)說(shuō),完全依靠自己的力量搭建深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)平臺(tái)存在技術(shù)難度大、運(yùn)維困難等問(wèn)題。目前基于AI開(kāi)放平臺(tái)或私有化部署進(jìn)行計(jì)算機(jī)視覺(jué)增值開(kāi)發(fā)已變得越來(lái)越簡(jiǎn)單。市場(chǎng)上開(kāi)放的AI平臺(tái)已有很多,如:騰訊、阿里、百度、華為等,也均有相應(yīng)的私有化模塊發(fā)布。
筆者利用深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)技術(shù)原理、AI開(kāi)放平臺(tái)、人臉識(shí)別私有化部署、Java、MySql等技術(shù),開(kāi)發(fā)了一款提升機(jī)房監(jiān)控安全水平的輔助小程序,實(shí)現(xiàn)了系統(tǒng)人臉識(shí)別登錄、多人識(shí)別、用戶(hù)拍照截圖、人臉識(shí)別標(biāo)識(shí)并跟蹤、人員到訪記錄查詢(xún)等功能。該軟件可應(yīng)用于數(shù)據(jù)中心機(jī)房、變電站、通信站、數(shù)據(jù)倉(cāng)等對(duì)多人身份鑒別監(jiān)控的應(yīng)用場(chǎng)景。項(xiàng)目的實(shí)施,通過(guò)基于人臉識(shí)別技術(shù)進(jìn)行人員身份鑒別和安全事件追溯等功能的創(chuàng)新,極大地提高了數(shù)據(jù)中心機(jī)房監(jiān)控管理的效率,有效地改善了安全生產(chǎn)運(yùn)行環(huán)境,提升了安全管理水平。
現(xiàn)在基于深度學(xué)習(xí)的機(jī)器聽(tīng)覺(jué),也已取得了突破性的成果。接近人類(lèi)水平的語(yǔ)音識(shí)別,更好的文本到語(yǔ)音轉(zhuǎn)換,能夠回答用自然語(yǔ)言提出的問(wèn)題等,必將進(jìn)一步豐富我們的軟件開(kāi)發(fā)手段,提高應(yīng)用系統(tǒng)的智能化水平。
參考文獻(xiàn):
[1][日]齋藤康毅,陸宇杰譯.深度學(xué)習(xí)入門(mén)-基于Python的理論與實(shí)現(xiàn)[M].北京:人民郵電出版社,2018.
[2]王天慶.Python人臉識(shí)別從入門(mén)到工程實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2019.
[3][日]涌井良幸,涌井貞美著,楊瑞龍譯.深度學(xué)習(xí)的數(shù)學(xué)[M].北京:人民郵電出版社 2019.
[4][美]伊恩·古德費(fèi)洛,[加]約書(shū)亞·本吉奧 [加]亞倫·庫(kù)維爾著.深度學(xué)習(xí)[M].北京:人民郵電出版社,2019.