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