陳林
(宿遷學院,江蘇宿遷,223800)
在上世紀六十年代,已經開始了人臉識別系統的研發設計工作,自九十年代末開始應用該技術以來,人臉識別系統發生了巨大變化。一方面,在核心算法方面,從初級的圖像識別,發展到了以人工智能技術為基礎的機器識別。另一方面,在該系統的應用過程中,形成了不同技術主導下的多元化運用局面,促進了各行業諸領域的智能化發展。由于公交車客流狀態的實時監測與公共安全、載客數量、公共資源配置等密切關聯,因此,在新時期十分有必要增強人臉識別系統在該領域的運用,促進公共交通事業向著智慧交通方向升級,為構建更高層次的平安中國提供技術支持。
在圖像分析技術中,人臉識別技術發展早、應用范圍相對較廣。而且,在一些成熟的平臺上可以直接對人臉識別系統進行二次開發,提高人臉識別技術的應用效率。以英特爾公司開發的OpenCV 程序為例,通過對C 函數、C++函數的運用,能夠實現在OpenCV 跨平臺計算機視覺庫基礎上,對人臉識別系統的二次開發,而且,在語言接口方面,設置有MATLAB、Ruby、Python 等,增強了該工具的適用性。從系統組成與開發環境方面看,需要在Windows 操作系統(本次研究中以Windows 10 為準,其中安裝了OpenCV 2.4.9 軟件工具包、Eclipse,以及Visual Studio 2015 編譯器)下,完成圖像數據采集、數據處理、人臉識別、通過檢測、上傳客戶端。
從配置方面看:(1)圖像數據采集:由相機攝相頭實現,本次研究中選取Microsoft Lifecam Studio 相機。(2)圖像數據處理:以OpenCV 圖像處理庫為準,結合與之匹配的函數完成。(3)人臉識別:基于圖像數據的人臉識別,需要先使用OpenCV 庫中的Haar 分類器,再利用分類器對已經處理過的圖像數據實時人臉識別。(4)上傳客戶端:在該環節,主要是將人臉識別檢測中生成的結果,以模型(Socket)通道,上傳到與系統連接的PC 端設備或移動設備中,從而使客戶端可以實時的完成圖像顯示等。在系統程序流程設置的五大步驟中,第一步要求先完成抓取圖像、臉部區域、圖像預處理,同時結合訓練圖像、訓練數據進入到第二步實現圖像識別。完成后進入第三步步驟,實施檢測計數。并配合定時器的設置進入到第四步協議傳輸。最后完成向移動設備的圖像數據上傳。
圖像采集的載體是攝相頭,具體操作中,可以利用cvCaptureFromCAM()完成圖像數據采集。由于圖像由幀數構成,每一幀圖像,均可以通過cvQueryFrame()獲取。圖像采集代碼如下:

在圖像數據采集過程中,由于環境因素、設備因素、采集對象、采集位置等綜合因素影響,會產生一定的干擾。例如,在反光條件下、位置相對較偏、采集圖像的尺寸差異與設計值差異較大時,采集到的圖像,在人臉識別檢測過程中,會產生一定的偏差,造成識別不精準、無識識別、識別失真等情況。因此,為了化解該問題,需要先對圖像進行預處理。具體操作中,主要是先對每一幀圖像進行灰度轉化,再實施直方歸一化處理。在灰度圖像的轉化過程中,主要是應用cvCvtColor()實現,在直方圖歸一化處理過程中,主要按照cvEqualizeHist()實現。
臉部檢測中需要采用OpenCV 中的Haar 分類器。該分類器屬于一種技術方案,是對眾多人臉進行檢測的同一技術方案中的新版本。從該技術方案的發展看,首先,是由JONES Michael 與VIOLA Paul 兩人共同設計,先創造了Viola-Jones 檢測器。其次,以第一代檢測器為基礎,通過MAYDT Jochen 與 LIENHART Rainer 兩人的努力,借助對角特征的擴展,才實現了對原始技術方案的優化。由于在擴展過程中,突出了Haar 的小波特征,因此,該分類器才被命名為Haar 分類器。對Haar 分類器的使用過程中,要求進行大量的數據訓練,并將其存儲于該平臺自帶庫中,具體操作中以xml 文件形式進行保存。
檢測方法共由三個步驟組成:(1)加載變量:借助cvLoad()加載CvHaarClassifierCascade 變量。(2)進行檢測:以cvHaarDetectObjects()實施檢查;同時,要求以分類器(與函數級聯)為通道,確定目標物體區域并進入到該區域的一序列矩形框。實際上在該過程中,先要在已經獲取的圖像數據中確認目標物體所在的區域,明確其位置,再通過的返回的方式,進入到該區域。(3)保存變量:需要將臉部檢測獲得的實際結果存儲到cvRect 變量之內。
人臉識別后,需要與具體的個體特征進行“對號入座”。通過在cvRect 變量之內保存臉部檢測結果,實際上已經確定了目標物體所在區域,此時,僅需要通過對目標物的圈出即可實現對人數數據的獲取。具體操作中:(1)通過cvRound()圈出該目標。這樣,通過“循環累加”,實際上就可以得到每一幀圖像中確定的人數數據。(2)轉換字符數據、整型數據。(3)將轉換獲得的數據存入剪貼板。可以借助strcpy()實現。此時存儲的人數數據即為后續可以進行實時發送的數據。該流程的代碼見下圖1。
首先,本次研究中使用的網絡通信協議屬于Internet 最基本的協議,以TCP/IP(Transmission Control Protocol/Internet Protocol)為準,翻譯為漢語意思是傳輸控制協議/因物網互聯協議。由于該協議是一個整體上的協議族,所以,在協議應用中以層級結構為主,由最上層到最一層分別為:(1)應用層;(2)傳輸層;(3)網絡層;(4)網絡接口層。由于下一層為上一層提供網絡服務,所以,在TCP 協議的使用中,要通過三次連接才能真正完成連接。具體操作中,要求在完成連接后對其進行拆除處理。IP 協議是網絡層,通過該協議可以完成計算機之間的網絡通信連接,所以,在該協議下實際上可以實現各類設備之間的網絡互聯。
其次,在通信模型方面,該系統中主要以作為抽象層的Socket 為準。它的功能是通過建立連接滿足客戶端與服務端之間的數據發送與數據接收。可以通過C++編程完成。
第三,繼續以C++為例,服務端的Socket 對象建立過程中,需要圍繞套接字完成八個步驟完成:加載庫——創建套接字——綁定——監聽模式——客戶請求、接受連接、返回——客戶端通信——返回——關閉。
第四,與服務端相比,客戶端的Socket 對象建立步驟相對較少,只需要完成套接字庫的加載與套接字的創建,將連接請求發送至服務器。然后,在取得通信后關閉即可。在本次研究中,安裝的編譯器為Visual Studio 2015,所以,在實際的客戶端編程中,則按照安卓版本的實際要求,進行了Java語言編程。具體代碼見下圖2。
第五,完成以上系統設計開發之后,將該程序導入到Eclipse adt,JDK1.8.0_121 和 Android 5.1 版本進行試運行,結果顯示可以完成手機通信客戶端的試運行。
通過試運行分析可以看出,在公交車客流狀態實時監測方面,采用基于圖像分析的監測方案時,可以選擇能夠進行人臉識別系統二次開發的開發設計方案。一方面,通過對適用性平臺的選擇,有利于降低開發難度,節約成本。另一方面,對于該系統的開發僅需要公交管理部門的一般程序編寫人員即可以完成。所以具有多個方面的比較優勢。但是,在實際的使用中,仍然需要結合實際情況進行持續優化,才能保障其應用的有效性。
人臉識別系統已經廣泛應用于公共安全領域,尤其在城市地下軌道交通、地面交通樞紐站中的應用相對普遍。現階段,我國正處于智慧城市建設的新階段,為了保障智慧安全、提高智慧城市公共交通的資源配置效率。一方面,應該增強對公交車客流狀態實時監測技術的研究。另一方面,則應該利用當前已經十分成熟的圖像分析技術,合理的選擇人臉識別系統對客流狀態進行數據采集、數據獲取、數據分析,從而為智慧城市的數據化管理提供數據支持。通過以上初步分析,建議在當前階段,選擇技術成熟度高、投入成本相對較少、系統開發過程容易實現平臺,進而促進人臉識別系統在公交車客流狀態實時監測方面的快速應用。