楊肖,劉淼
(201620 上海市 上海工程技術大學 機械與汽車工程學院)
每年由于霧氣和道路積雪引發的交通安全事故不勝枚舉,駕駛員通過道路廣播獲取天氣信息,如遇惡劣天氣可提前做出反應,但在一些沒有道路廣播的地方則會比較被動。本文提出了一種基于樹莓派平臺的實時霧氣和路面積雪檢測系統,并基于卷積神經網絡(CNN)[1]的圖像識別技術進行了檢測,即使在低功耗、低規格的情況,系統仍可以進行實時檢測。本文比較并分析了4 個卷積神經網絡模型(MobileNetV1[2],MobileNetV2[3],ResNet50[4],Inception V3[5])在工作站和樹莓派平臺上的檢測準確性以及工作速度,表明MobileNet深度學習算法在樹莓派平臺上的工作速度要比ResNet50 和Inception V3 快,更適用于樹莓派。
(1)樹莓派4B 開發板
樹莓派開發板是一款基于ARM 的微型電腦主板[6],外觀如圖1 所示。以SD/MicroSD 卡為內存硬盤,卡片主板周圍有1/2/4 個USB 接口和1 個以太網接口,可連接鍵盤、鼠標和網線,同時擁有視頻模擬信號的電視輸出接口和HDMI 高清視頻輸出接口。以上部件全部整合在僅比信用卡稍大的主板上,具備所有PC 的基本功能,只需接通電視機和鍵盤,就能執行如電子表格、文字處理、玩游戲、播放高清視頻等功能,也是嵌入式深度學習的理想平臺。本文在樹莓派4B 上編寫和執行代碼。

圖1 樹莓派開發板Fig.1 Raspberry Pi Development Boards
(2)TF 卡
樹莓派不自帶硬盤,所以應自配一個TF 卡作為樹莓派的硬盤,推薦使用16 G 以上容量的TF 卡。
(3)攝像頭
系統需要一個能夠采集路面信息的設備,如圖2 所示。此設備具有1 000 萬像素的分辨率,視頻清晰度較好,可通過USB 連接到樹莓派。

圖2 攝像頭Fig.2 Camera
軟件支持可分為樹莓派操作系統安裝和編程環境搭建。
1.2.1 樹莓派操作系統
TF 卡作為樹莓派的系統硬盤,樹莓派可選操作系統很多,本文選用的是樹莓派官方操作系統Raspberry Pi OS,其優點是安全可靠。
1.2.2 編程環境搭建
本文使用Python 作為編程語言[7],Python 普遍使用于深度學習領域,其優點是擁有非常完善的基礎代碼庫和大量的第三方庫,如TensorFlow,OpenCV 和Numpy 等,第三方庫可大大減少編程工作量。Python 的不足之處一是運行速度慢,二是代碼不能加密。
現有CNN 結構已從AlexNet[8]發展到InceptionNet,ResNet 等,并且結構越來越深,參數數量也越來越多,如深度殘差網絡(ResNet)的層數已經多達152 層。此類網絡適用于高性能服務器或工作站,但不適用于低端、低功耗的嵌入式和移動設備,于是就出現了MobileNet 這種更輕量級、更快速的CNN 網絡。
MobileNetV1 的核心思想是用深度級可分離卷積(Depthwise separable convolution)[9]來代替標準卷積核,Depthwise separable convolution 的基本結構如圖3 所示。

圖3 標準卷積和深度級可分離卷積結構圖Fig.3 Standard convolution and depthwise separable convolution structure diagram
深度級可分離卷積把標準卷積分解為一個深度卷積(Depthwise convolution)和一個 1×1 的點式卷積(Pointwise convolution),分別起濾波和線性組合的作用,同時減少參數量和計算量。
深度級可分離卷積在計算量上與標準卷積的差別可通過式(1)—式(8)推導出來。
為分析方便假設輸入特征圖寬度和長度相同,特征圖大小為

式中:Qin——輸入特征圖大小;Hin——輸入特征圖的高度;H'in——輸入特征圖的寬度,且與Hin大小相同;M——輸入特征圖通道數。
假設輸出特征圖寬度和高度相同,且與輸入特征圖的寬高相同,則輸出特征圖大小為

式中:Qout——輸出特征圖大小;Hout——輸出特征圖高度;H'out——輸出特征圖寬度,且與Hout大小相同;N——輸出特征圖通道數。
那么,對于標準卷積核k×k,其計算量為

式中:W1——標準卷積核計算量。
對于深度卷積,其計算量為

式中:Wd——深層卷積計算量。
對于點式卷積,其計算量為

式中:Wp——點式卷積計算量。
故深度級可分離卷積總計算量為

式中:W2——深度級可分離卷積總計算量。
深度級可分離卷積和標準卷積計算量比值為

式中:V——深度級可分離卷積和標準卷積計算量比值。
式(7)可化簡為

用于檢測霧氣和路面積雪的算法結構如圖4所示。首先,使用攝像頭采集道路圖像,將圖像輸入樹莓派,然后對圖像進行預處理,再將預處理后的圖像分別作為霧氣和積雪數據訓練的CNN 結構的輸入。CNN 輸出最終通過二元分類器(Binary Classifier)對霧氣和積雪進行分類,該過程通過樹莓派平臺完成。最后將檢測結果發送到服務器。

圖4 算法結構圖Fig.4 Algorithm structure diagram
由于拍攝設備在采集圖像過程中受工作環境、電子元器件和電路結構等影響,會引入各種噪聲。在圖像信號傳輸過程中,由于傳輸介質和記錄設備等的不完善也會產生圖像噪聲。圖像噪聲會干擾圖片原本攜帶的信息,進而影響算法的準確性,通過圖像預處理來消除無關信息,改善圖像效果,突出圖像特征,便于計算機進行識別和分析。根據圖像處理所在空間的不同,可以分為基于空間域的增強方法和基于頻率域的增強方法。空間域即圖像本身,這種方法直接對圖像的像素進行處理;頻率域則是以修改圖像的傅里葉變換為基礎。針對空間域和頻率,有多種方法實現圖像預處理[10]。
基于空間域有均值濾波和中值濾波等方法,均值濾波包括鄰域平均法和加權平均法等。基于頻域有低通濾波和高通濾波,低通濾波包括梯形低通濾波、指數低通濾波和理想低通濾波等[11];高通濾波包括梯形高通濾波、指數高通濾波和理想高通濾波等。
在模型訓練和測試中,使用了40 000 張有霧氣圖像和正常圖像,以及40 000 張積雪圖像和正常圖像,其中36 000 張作為訓練集,4 000 張用來測試訓練模型。
用于訓練的所有4 個模型均使用原始模型進行了訓練,而沒有進行任何網絡修改。使用4 個NVIDIA GeForce GTX1080Ti 作為訓練環境,設置初始學習率為0.001。在訓練過程中,具有學習率降低和提前終止功能,如果在訓練過程中的5 個訓練輪數內驗證損失沒有改善,則學習率降低到1/5。測試訓練好的模型的性能,測試結果見表1。

表1 各個模型的準確率Tab.1 Accuracy of each model
測試使用上述4 000 張測試集圖片,在工作站上進行。從表1 中數據可知所有4 個模型的準確度均達到97%以上,說明各個模型性能較好,都可以較好地完成圖像識別工作。
將1 000 張道路圖像分別在工作站和樹莓派中進行道路檢測,得出每個模型處理1 000 張圖像所需時間,并計算出每秒處理圖像的平均張數,定義為FPS,數據見表2。

表2 各個模型在工作站和樹莓派上的運行速度Tab.2 Running speed of each model on workstation and Raspberry Pi
可知,在工作站上,與MobileNetV1 的最短時間74.43 s 和Inception V3 的最長時間82.75 s 相差為8.32 s,但樹莓派上的結果顯示出很大差異,Inception V3 使用了2 246.71 s,對于MobileNetV1和MobileNetV2,所需的時間分別為637.67 s 和739.93 s,而FPS 的結果為1.57、1.35。這說明在低規格樹莓派平臺中,像InceptionV3 這種復雜的網絡并不適用,而MobileNet 這種輕量模型較適用。
本文設計的基于卷積神經網路地道路霧氣和路面積雪的檢測系統,對霧氣和路面積雪的檢測準確率為97%以上。通過將MobileNetV1,MobileNetV2,ResNet50,Inception V3模型進行對比,包括圖像識別準確率對比和在工作站及樹莓派上的處理速度對比,證明MobileNet 這種輕量模型更適用于本系統。