邢家源,張 軍,薛晨興,雷雨婷,孫 彥
(天津職業技術師范大學電子工程學院,天津 300222)
公安部交通管理局2018 年發布我國機動車保有量達3.22 億輛[1],尤其在城市當中停車位與汽車保有量差距過大,早期的研究方法是將感應線圈放置在道路下方并通過自傳感器的反饋信息來實現車輛檢測。這種采用地磁線圈或無線地磁的方法在汽車信息采集領域已經成為我國的主要交通檢測技術,并且研究與應用廣泛[2-5],但存在硬件鋪設與維修成本較高、經濟效益較低等問題。計算機視覺圖像處理技術解決了上述經濟問題,基于尺度不變特征變換(scale invariant feature transform,SIFT)[6]與方向梯度直方圖(histogram of oriented gradients,HOG)[7]等傳統算法做特征提取器,再結合支持向量機(support vector machine,SVM)[8]機器學習算法進行圖像識別的方法,因其模型穩健性較低,受雨雪霧霾天氣影響較大,惡劣天氣對視頻和圖像處理能力的要求較高,所以使得這項技術在應用場所上受到限制。隨著深度學習的快速發展,停車場領域內采用FasterR-CNN(convolutional neural network)技術與ResNet 技術相融合的方法識別停車場中的汽車與空位[9],但存在實時性較弱的問題;也有使用圖像增強技術結合遷移學習識別夜晚環境下的車輛[10]的方案,但存在訓練數據量要求過大的問題;還有利用間接蒙特卡羅思想構造出空車位概率判別模型,實現對車位空缺狀況的準確判斷方案[11],但存在檢測步驟復雜的問題。本研究針對露天定點停車場場景下如何準確可靠地識別出空閑停車位的問題,在提升實時性能、減小數據采集量、簡化系統檢測步驟方面研究了圖像預處理技術融合深度學習特定模型的方案。先對圖像進行必要的過濾背景色、邊緣檢測以及直線繪制等操作,再采集圖像中的停車位準備相應的數據集傳輸到VGG(visual geometry group)[12]預訓練模型中迭代訓練,最后使用模型在不同天氣環境下,實時在停車場高空監控視頻上測試,并得到實驗結果。
露天停車場空閑車位識別的總體結構主要由圖像預處理、數據集準備、模型訓練和真實場景預測4部分組成。在圖像預處理部分,通過對攝像頭拍攝的原始圖像進行背景色過濾、邊緣檢測、區域檢測(region of interest,ROI)和霍夫檢測直線等操作,采集每一個停車位的位置坐標并保存在字典中供后續使用;截取所有停車位的圖片制作數據集;將數據集傳入到含有“ImageNet”參數的VGG 模型中,修改預訓練模型的softmax 輸出層,改為二分類問題,使用數據增強迭代訓練得到模型;最終使用此模型對實時視頻預測,標記空閑車位位置并計算空閑車位的總數。停車位置實時檢測結構如圖1 所示。
在露天停車場高空架設一臺攝像頭,將所拍攝到的視頻回傳到帶有相關配置的終端,終端對視頻進行分析并實時輸出此停車場所有可用停車位的視頻。構建此停車位檢測模型主要有2 個步驟:①圖像預處理階段檢測此停車場所有停車位的位置。②使用停車場車位數據集訓練卷積神經網絡模型確定每一個停車位是否空置或者被占用。
2.1.1 拍攝原圖和掩模運算
實驗與測試所用的停車位的分割線均是水平線,原圖像素大小為1 280×720;使用掩模方法過濾掉地面背景、樹木顏色的干擾,保留白色車位線與白色機動車。
2.1.2 邊緣提取和圖片裁剪
圖像濾波一般是對單通道的處理,需要把三通道彩色圖像轉換成單通道灰度圖像。使用Canny 邊緣檢測方法提取白色車位線。高斯濾波器對于高頻細節的白色車位線保護效果較差,會出現模糊邊緣現象,這里使用非線性雙邊濾波(bilateral filter)代替線性高斯濾波,其能綜合考慮空間距離和像素亮度相似度,實現保護邊緣的同時平滑圖像,濾除噪聲;圖像下方存在密集、繁多和重疊的黃色車道線,對白色車位線的檢測產生影響,采用ROI 區域裁剪屏蔽干擾區域。
2.1.3 車位線檢測和停車道確定
對灰度圖像使用霍夫變換從中檢測直線或線段。再為霍夫變換得到的線段增加篩選條件:垂直方向的寬度|y2-y1|<1 且水平方向的長度|x2-x1|值處于像素(25,70)距離之間的線段予以保留,其余舍棄。得到符合篩選條件的線段后,以其起點和終點為坐標繪制線寬為2 的紅色線段;霍夫線可以識別大多數停車線,但輸出噪聲較多,有的停車線被檢測到多次,而有些則被遺漏。利用停車位間隔大小相同這一特性,在確定車道后,人為等距離劃分停車位代替霍夫檢測出的停車線。確定停車車道數目與位置,通過判別2個點的x1 坐標的差值絕對值是否小于10,小于10則聚類到同一列數上,再利用每一列停車道線段中的左上點與右下點畫出矩形框圖,共找到12 個停車道。
2.1.4 停車位標記和坐標信息保存
對每一列停車道按照停車位的間距進行等距離劃分,此停車場停車位間隔在1 280×720 圖像分辨率下反映為24.5 個像素距離,在點(x1,y)和(x2,y)之間畫1 條紅線以標記每個停車位;去掉車道線將位置信息存于字典之中。部分字典示意:({70,43,122,67.5):1,(70,67,122,91.5):2,…(1117,587,1179,611.5):288,(1117,612,1179,636.5):289},鍵是每個停車位的坐標信息,值是其ID,一共存有289 個停車位。圖像預處理如圖2 所示。

圖2 圖像預處理
模型中,可變的是輸入圖像中動態變化的車流,不變的是停車位在圖像中的位置信息,采用CNN 確定每個停車位是否有車。
2.2.1 神經元組成
CNN 由大量具有可學習權重和偏差常數的神經元組成。每個神經元前端可以輸入圖像像素,執行點積計算,輸出相應的計算結果。單神經元結構如圖3所示。

圖3 單神經元結構
神經元z 輸出結果計算式為:

式中:xi為輸入值;wi為權重值;b 為偏移值;在激活函數后,添加非線性因子以獲得輸出。θi計算式為:

式中:θi為權值w 或者偏置b;α 為學習率;J(θ)為正向傳播輸出值。式(2)等號左邊的θi為權值或偏置的更新值,可以用等號右邊的θi所代表的權值或偏置的當前值與J(θ)關于對應θi的偏導數計算得出。使用BP算法[13],輸出值與標簽值做平方差運算得到損失函數,對其求導找到梯度下降最快的方向,從而使變量w 與b沿著這個梯度方向調整數值,使優化損失函數逐漸減小。
2.2.2 VGG16通用物體檢測模型
CNN 中核心的卷積層是指使用多個卷積核對圖像進行卷積操作實現特征提取,因圖像像素之間的高關聯性,故可輔以池化層降低信息量。卷積層與池化層的多次累加使用,實現了從點線面等淺層特征到汽車、樹木等結構性特征的提取。輸出層則是根據不同分類任務設置具體個數的輸出節點,使用softmax 算法為每個輸入計算相應的歸屬類別概率。VGGNet 率先探索了卷積神經網絡的深度與其性能之間的關系,多次利用小型卷積核與最大池化操作,構建了16 層(僅卷積層與全連接層)的卷積神經網絡,并證明這2個改進對網絡的最終分類識別效果有很大的作用。VGG16 模型如圖4 所示。所有卷積內核均為3×3 像素大小,卷積內核個數隨網絡層數的增加而增加,如第1 個卷積層有64 個卷積內核,而第3 層有128個。第2 層卷積復制第1 層卷積操作,這種完全相同的卷積層堆疊的意義在于:2 個3×3 的卷積串聯相當于1 個5×5 卷積,二者具有相同大小的感受野,即特征圖中的一個像素信息濃縮著原圖片中5×5 大小像素的所有信息,且前者僅是后者參數量的72%,減小了參數量規模;而網絡還多進行了一次激活函數的工作,提升了特征的學習能力,可以擬合高度非線性、高度復雜的模型。
2.2.3 遷移學習
遷移學習[14]是指利用龐大豐富的開源數據集訓練模型得到的卷積內核權重,經過保留、重新訓練輸出層等技巧遷移到目標任務上。遷移學習使用場景如圖5 所示。停車位識別問題符合第2 個場景:停車位相關數據集過小且與訓練VGG16 模型的原始數據(含日常1 000 種分類的ImageNet 數據集)相似度較小。對于停車場識別車位這一特定問題并沒有足夠大的、有針對性的數據集可供模型使用,但因有車與無車的區分特征明顯,所以,可以使用較小的自建數據集搭配具有強大學習能力的VGG16,預訓練通用物體檢測模型,完成車位檢測的任務。凍結預訓練模型中前幾層具有普遍適用性的權重,重新訓練后的網絡最后一層根據有車和無車進行分類種類的修改。采用的VGG16 預訓練模型由Keras 提供,選擇在TensorFlow后端使用。

圖4 VGG16 模型

圖5 遷移學習使用場景
在尺寸為1 280×720 的圖像中有近300 個停車位,每個停車位的尺寸約為56×30 像素。考慮到現實情況中天氣的變化因素,增加雨雪天氣對應的數據集,使得模型有較好的魯棒性,即使在惡劣天氣環境下也有較好表現。使用同車位尺寸大小一樣的矩形框進行摳圖將每個停車位的圖像保存在文件夾中并分類已占用(occupied)或未被占用(empty)。將70%數據存于訓練數據集train,30%數據存于測試數據集test,完成數據集的制作。不同天氣下的停車位如圖6 所示。在訓練之前,應用數據擴充(data augmentation)[15]圖像增廣技術擴充數據集,應對自建數據集數據過小問題。擴充的方法包括水平翻轉、放大或縮小、水平偏移、豎直偏移和按角度旋轉。晴天數據集數據擴充如圖7 所示。

圖6 不同天氣下的停車位

圖7 晴天數據集數據擴充
加載VGG16 預訓練模型并將前10 層的參數設置為無法控制。修改輸出層,分類設置為二分類(占用與空白),激活形式為softmax 類型。損失函數使用categorical_crossentropy(交叉熵損失函數),優化器使用隨機梯度下降法。學習率設置為0.000 1,批次大小設置為32,訓練周期為55。訓練結束后得到以“.h5”結尾的參數文件,便于測試時使用。訓練過程中模型的變化如圖8 所示。

圖8 訓練過程中模型的變化
使用Keras 將輸出的參數加載到模型中,使用圖像與視頻對預處理后的數據進行預測。未添加雨雪天數據集時,直接使用晴天模型對雨天停車場進行預測,效果很差,因可用車位受雨天環境對圖像疊加的噪聲影響,數字一直跳動。而增加了雨雪天數據集后,效果明顯改善,受噪聲影響的程度大幅下降,滿足真實天氣環境下精確度與效率的要求。多環境測試如圖9 所示。
動態視頻時長均截取為5 s,識別時間與硬件顯卡規格有關,本測試顯卡為GTX960-2 GB 顯存版,顯存過小導致視頻識別時間較長。不同環境下測試集識別率結果如表1 所示。

表1 測試集識別率結果

圖9 多環境測試
室外場景下使用傳統方法的停車位識別準確率可達0.962,室內場景下較低為0.941[16]。而使用VGG模型的方法,靜態圖像下準確率維持在0.98 附近,而視頻波動較大,最低0.93,最高0.98,平均值為0.955。造成這一結果的原因是靜態圖像無變化,模型對于空停車位一次性檢測完畢,而動態視頻受環境與攝像條件等因素干擾,每幀之間變化較大,容易出現誤判的現象,準確率波動較大。
定點停車位的實時檢測是城市交通高效發展的重要技術,本文針對停車位檢測中出現的問題,通過霍夫變換檢測直線、掩模運算、邊緣檢測、ROI 裁剪圖像預處理得到每一個停車位的具體位置坐標并保存在字典內,使用遷移學習對VGG16 再次進行有車與無車的二分類訓練,最后加載模型、測試圖片與視頻進行停車位的實時檢測研究。實驗分析發現:同傳統方案SIFT 特征提取再結合SVM 分類的方法相比,本方案準確率更高。需要指出的是系統使用的一切數據均來源于攝像頭,一旦遇到夜晚或者霧霾天氣,攝像頭無法正常獲取停車場視頻與圖像數據,導致檢測系統失靈。對于實時性,在下一步的研究中還需要進一步縮減模型的參數量,選擇性能更優異、綜合性能更強的預訓練模型。