侯向寧,劉華春
(成都理工大學 工程技術學院,四川 樂山 614007)
隨著國內機動車輛規模的不斷擴大,機動車流量呈爆發式增長,城市交通面臨巨大的挑戰。車牌識別系統在進行交通管理、處理交通事故、追查被盜車輛以及肇事取證等方面起著非常重要的作用。傳統的基于終端的車牌識別系統因受硬件的限制,易導致出現錯識、漏識、升級困難,以及一些當前最新的識別算法難以應用等問題。此外,實時性較差、極端環境下的識別率也很不理想。Hadoop云計算平臺具有強大的海量數據分發、存儲以及對大數據進行并行運算的能力,是大數據處理領域的首選。文中提出的車牌識別系統基于Hadoop云計算平臺,充分利用Hadoop云計算平臺的各種優勢,在實時性、準確性和高效性方面進一步提高車牌識別的效率。
Hadoop是對大數據進行分布式處理的軟件框架,具有高效分發數據,可靠存儲PB級數據,便于部署在低成本的普通機群,快速并行處理數據等諸多特點。這些優點使得Hadoop在高效性、可靠性以及經濟性上都無與倫比。HDFS和MapReduce是Hadoop框架的核心,其中,HDFS負責對海量數據的存儲和管理,MapReduce負責對海量數據進行相關運算。
HDFS(Hadoop distributed file system)是用Java開發的能夠運行在通用機器上的具有高容錯性、高吞吐量的分布式文件系統。HDFS基于M/S模式,其體系結構由一個NameNode節點和若干DataNode節點構成。NameNode即主控服務器,其職責是維護HDFS命名空間,協調客戶端對文件的訪問及操作,記錄文件數據在每個DataNode節點上的位置和副本信息[1-3]。DataNode是數據存儲節點,在NameNode的調度下,負責客戶端的讀寫請求以及本節點的存儲管理[4-5]。
MapReduce是處理海量數據的分布式編程模型和并行計算框架[6]。編程模型便于開發人員高效地開發應用程序,并行計算框架為應用程序在上千通用機器組成的集群上并行處理TB級的海量數據提供了有效保障。
MapReduce分布式計算模型的核心是Map和Reduce函數,依據分治法思想,Map將任務分割成多個子任務,將數據映射為
車牌定位在車牌識別系統中起著至關重要的作用,車牌定位的準確與否,直接會影響到后續的字符分割和字符識別的效率,從而影響整個系統的速度和識別率。從廣義的角度,車牌定位可以分為基于灰度圖像的邊緣檢測和基于彩色圖像的色彩分割兩類[7]:基于灰度圖像的邊緣檢測的優點在于計算量小、速度快、實時性好;缺點是在復雜背景下定位的效果不理想?;陬伾指疃ㄎ坏膬烖c是在復雜背景下車牌定位的效果很好;缺點是計算量較大、速度不夠快,當光照不均,車牌與車身顏色相近時效果不理想。
在眾多邊緣檢測算法中,Sobel算子較為常用,原因在于Sobel算子計算量小,抗噪性較好,邊緣檢測效果好。與RGB空間相比,HSV顏色空間較符合對顏色的主觀體驗[8]。因此,文中采用基于HSV空間模型的顏色分割與Sobel算子相結合的定位算法,使得車牌定位的準確性和實時性都得到了較大提升。算法具體流程如圖1所示。

圖1 基于HSV空間模型的顏色分割與Sobel算子相結合的車牌定位流程
字符分割的流程是首先對已定位的車牌進行顏色判斷,然后對藍、黃車牌分別用不同的閾值進行二值化。為了取得良好的車牌字符分割效果,對二值化后的車牌去除邊框及鉚釘。然后取字符輪廓求其外接矩形,將外接矩形所在的單個字符區域提取出來,最后對單個字符區域進行歸一化,以便送入識別模型進行識別。
在眾多字符識別方法中,基于神經網絡的識別算法自適應和自學習能力突出,其并行分布處理使得算法實時性較好,即使對模糊、扭曲的字符也能識別,具有很好的容錯性[9-10]。
收集3 000個歸一化字符區域作為樣本,首先對這些樣本進行手工分類,貼好標簽后,用其中2 100個作為訓練樣本,將其輸入人工神經網絡(ANN)的MLP模型中進行訓練,反復迭代直至模型收斂。訓練完成后,將剩余900個樣本輸入模型進行測試,進而對參數進一步調優?;谏窠浘W絡的字符識別的具體流程如圖2所示。

圖2 基于神經網絡的字符識別流程
MapReduce數據流設計如圖3所示。

圖3 MapReduce數據流設計
Map/Reduce數據流設計是MapReduce流程設計的核心,要對車牌圖像數據進行存取、運算及處理,首先要對Map/Reduce相應的輸入、輸出key/value進行合理的設置[11]。MapReduce框架將存儲在HDFS上的車牌文件以
Hadoop云平臺的系統架構如圖4所示。為方便用戶使用Web瀏覽器對Hadoop云計算平臺進行操作,需要架設Tomcat作為應用服務器,因為Tomcat與Hadoop均由Apache基金會開發,且二者結合近乎完美。配置好Tomcat服務器之后,用戶就可以通過Web瀏覽器導入車牌文件,Tomcat服務器接收到車牌文件后調用車牌識別模塊并將需要識別的車牌圖像文件傳給Hadoop云計算平臺,通過HDFS將數據分片輸入MapReduce進行識別,最后由Tomcat服務器將識別結果反饋給用戶。

圖4 Hadoop云計算平臺系統架構
文中采用偽分布式搭建Hadoop云計算平臺,優點如下:第一,節省硬件資源,僅需一臺內存至少8 G的主機就可享受跟完全分布式一樣的環境;第二,操作系統安裝簡單,只需裝一臺虛擬機,后續只需復制虛擬機的鏡像;第三,節省了重復繁雜配置的無謂耗時,Slave1配置好之后,Slave2和Slave3的配置只需復制Slave1的鏡像就可以了;第四,由于三個Slave具有相同的軟硬件環境,屏蔽了完全分布式方式下軟硬件間的差異,便于最終實驗結果的對比和分析;最后,偽分布式便于開發人員進行調試和學習。偽分布式方式下各節點的配置如表1所示。
實驗的目的之一是要觀察單機及分布式環境下車牌識別數量與系統耗時之間的關系;另外,更重要的是觀察分布式環境中不同節點數量的識別速度。實驗設置了7組數據,各組需要識別的車牌圖像數分別為100,200,300,500,1 000,2 000和3 000。偽分布式環境下節點的個數依次為1,2,3。最終實驗結果如圖5所示。

表1 Hadoop集群節點配置

圖5 識別數量與耗時
實驗結果顯示,在識別數量較小的情況下,單機與單節點、雙節點和三節點的速度相差無幾,說明Hadoop云計算平臺的優勢還沒有發揮出來,這主要因為分布式環境下master與slaves之間要進行必要的通信以及數據交換,這無疑增大了系統開銷,尤其在識別數量較少的情況下,這種開銷不容忽視。隨著識別數量的增加,由于單機沒有額外的系統開銷,因而比單節點的耗時略??;然而單機與雙節點、三節點的耗時差異越來越大,這時Hadoop云計算平臺并行計算的優勢越來越突出,當識別數量達到3 000時,分布式下三節點的識別速度比單機將近快了3.6倍,這主要是因為在海量數據沖擊下分布式環境中各節點的負載較均衡,內存消耗比單機的要小很多,正是單機內存的消耗在一定程度上拖累了它的效率。實驗結果表明,Hadoop云計算平臺在識別海量車牌數據時,其效率和性能遠遠超越單機,具有很好的應用前景。
在分析車牌識別流程的基礎上,設計了基于HSV空間模型的顏色分割與Sobel算子相結合的車牌定位算法,以及基于神經網絡的字符識別算法。在研究Hadoop云計算平臺架構的基礎上,為了將車牌識別算法應用于Hadoop云計算平臺,對MapReduce數據流及Hadoop云計算平臺的系統架構進行了設計。通過搭建Hadoop云計算平臺環境,對基于Hadoop云計算平臺的車牌識別系統進行了相關測試。實驗結果表明,Hadoop云計算平臺在識別海量車牌數據時,其效率和性能遠遠超越單機,具有很好的應用前景。