劉奧強,張 旭
(上海工程技術(shù)大學 機械與汽車工程學院,上海 201620)
機器視覺在惡劣的天氣條件,特別是在霧、雪和雨天,大大降低了能見度,從而常常影響了圖像和視頻的清晰度。迄今為止,對智能交通管理與天氣識別的關(guān)系的研究仍然比較少見,因此,惡劣天氣分類識別值得學界去研究并應(yīng)用。機器視覺有助于更好地了解天氣。
近年來,對自動駕駛的研究已經(jīng)逐步展開,但在惡劣天氣下仍然沒法安全駕駛。對惡劣天氣進行實時的檢測,并及時反饋給駕駛員,則可以進一步提高駕駛安全性。本研究旨在針對單幅圖像(如雨、霧、雪、雷)進行惡劣天氣識別,鑒于此擬將建立一個更好、更準確的模型。
分析可知,從單一的圖像中理解天氣的研究仍亟待完善。雖然文獻[2-3]提出了車輛的天氣識別,但卻依賴于車輛的特定先驗。場景理解方法依賴于結(jié)構(gòu)信息將場景分為不同的類別。結(jié)構(gòu)信息基于光照不變的特征,如SIFT或HOG。天氣線索更加復雜,而且不是特定場景的,使得傳統(tǒng)的天氣分類方法不適用。由于缺乏天氣預報,無監(jiān)督的視覺學習方法也不適合這項任務(wù)。近年來,有許多人關(guān)注與提取天氣特征的分類研究,如Roser等人基于灰度圖片提取了圖像特定區(qū)域的顏色及飽和度等表面特征來進行分類;Zhang等人利用相似的框架針對不同天氣下的特定區(qū)域來構(gòu)建天氣特征,例如天空、陰影、雨條紋和雪花區(qū)域等,來實現(xiàn)4類天氣分類;如Elhoseiny等人使用AlexNet解決晴天和多云分類問題;Zhu等人使用GoogleNet進行惡劣天氣識別。
在現(xiàn)如今的天氣分類中,大部分學者還是通過利用人工設(shè)計特征去識別天氣數(shù)據(jù)集。本次研究將在卷積神經(jīng)網(wǎng)絡(luò)中加入HDA分層深度聚合。HDA聚合了不同層級特征信息,不僅僅在軸方向上從淺到深聚合特征,還增加了軸方向的層級聚合。因此本文提出一種卷積神經(jīng)網(wǎng)絡(luò)模型,并在自建的惡劣天氣數(shù)據(jù)集上進行實驗研究。結(jié)果表明,本文提出的模型進一步提高了識別精度。
本文的研究工作是受到這些年來深度學習在圖像分類領(lǐng)域不斷成功的啟發(fā),采用了ResNet50來解決惡劣天氣分類識別任務(wù),如圖1所示。由圖1可知,模型中主要包括卷積層、池化層、全連接層。其中,輸入尺寸是224×224,輸出層是4個類別,包括雨天、霧天、雪天、雷電。
圖1 ResNet50天氣分類模型的基礎(chǔ)示意圖Fig.1 Schematic of the basis of the ResNet50 model for weather classification
本文的損失函數(shù)選用的是交叉熵(),這是從KL散度中引出,用于衡量2個分布之間差異的大小,其值總是大于等于0。2個分布越相似,其值越接近于0,與函數(shù)結(jié)合用于此天氣分類模型,此處需用到如下數(shù)學公式:
其中,[,,…,p]是一個概率分布,每個元素p表示樣本屬于第類的概率,而[,,…,y]是樣本標簽的one-hot表示,當樣本屬于第類別時y=1,否則y=0,是樣本標簽。
圖像分類的常用數(shù)據(jù)增強方法是人工設(shè)計的,然而最好的增強方法是根據(jù)任務(wù)數(shù)據(jù)集特定的。研究中常見的模型使用旋轉(zhuǎn)、縮放、平移、隨機裁剪、圖像鏡像和色彩漂移/白化,由于這些方法是手動設(shè)計的,因此需要專業(yè)知識和時間。本文中采取了數(shù)據(jù)自動增強方法,該方法創(chuàng)建一個數(shù)據(jù)增強策略的搜索空間,每一個策略都是為數(shù)據(jù)集中的單一圖像隨機選擇的,表示一些可能的增強運算選擇和順序。每個運算都是前文提到的圖像增強方法,還有使用該方法的概率。此后將利用搜索算法選取適合多類天氣數(shù)據(jù)集的最佳策略,使模型有很好的準確率,同時又使用了強化學習作為搜索策略。最后,文中還使用了正則化,這有助于提升訓練效果。
即使在卷積網(wǎng)絡(luò)中有深度的特征,一個孤立的層也是不夠的,分層深度聚合(Hierarchical Deep Aggregation,HDA)這些表示可以改進對內(nèi)容和位置的推斷。聚合,就像深度和寬度一樣,是架構(gòu)的一個關(guān)鍵維度。在該項工作中,本文研究了如何聚合層來更好地融合語義和空間信息以進行識別和定位。擴展當前方法的“淺層”跳過連接,文中得到的聚合體系結(jié)構(gòu)為分層深度聚合(HDA),如圖2所示。這些結(jié)構(gòu)通過獨立于主干框架表示,以與當前ResNet50網(wǎng)絡(luò)模型兼容。HDA組裝自己的樹結(jié)構(gòu)連接層次結(jié)構(gòu),這些樹結(jié)構(gòu)連接跨越和合并階段,以聚合不同級別的表示。
圖2 聚合體系結(jié)構(gòu)Fig.2 Aggregation architecture
分層深度聚合將塊和階段合并到樹中,用來保留和組合特征通道。通過HDA,可以將較淺和較深的層結(jié)合起來,以了解跨越更多特征層次,創(chuàng)建更豐富的組合。建立了HDA的總體結(jié)構(gòu)后,就可以提高其深度和效率。這將傳播所有先前塊的聚合,而不是僅傳播前一個塊,從而能更好地保留特征。深度為的分層深度聚合函數(shù)T表示如下:
其中,是聚合節(jié)點,和定義如下:
其中,表示卷積塊。
本文是在Windows 7(x64)操作系統(tǒng)下進行仿真實驗,仿真開發(fā)軟件平臺為Python 3.6.3,Pytorch 1.1.0,采取了一些訓練技巧,惡劣天氣數(shù)據(jù)集的特征學習較高,達到了不錯的準確率。
實驗的流程圖如圖3所示,本文天氣狀態(tài)數(shù)據(jù)采用自建的惡劣天氣數(shù)據(jù)集,按天氣狀態(tài)分類為霧天、雨天、雪天、雷電共4個種類,每類均為1 000張,天氣狀態(tài)分類如圖4所示。經(jīng)過圖像預處理后,文中提供10次隨機訓練/測試。在每次實驗中,將從每個天氣類別中隨機選擇80%的數(shù)據(jù)用于訓練,其余的用于測試,與此同時記錄了仿真得到的分類準確率和方差。
圖3 提出的天氣狀況分類系統(tǒng)的流程圖Fig.3 Flow chart of the proposed weather condition classification system
圖4 數(shù)據(jù)集中每類的例子Fig.4 Examples of each class in the dataset
4種天氣類型不同學習模型的實驗精度比較如圖5所示。各模型實驗平均準確度分類結(jié)果詳見表1。實驗中,主要與其他廣泛使用的分類方法AlexNet、VGG16、ResNet50進行比較。同時也注意到,基于ResNet的網(wǎng)絡(luò)模型在圖像分類上具有不錯的識別效果,本文的方法比原先的基礎(chǔ)網(wǎng)絡(luò)提高了識別結(jié)果,因為本文的方法利用了預先訓練好的神經(jīng)網(wǎng)絡(luò)模型的優(yōu)勢。
圖5 4種天氣類型不同學習模型的實驗精度比較Fig.5 Comparison of the experimental accuracies of different learning models for the four weather types
表1 各模型實驗平均準確度分類結(jié)果Tab.1 Classification results of average accuracy of each experimental model %
深度學習在解決各類圖像問題上都有不錯的表現(xiàn)。本文選用深度學習的方法,結(jié)合HDA分層深度聚合,對常見的4類天氣狀態(tài)進行分類識別。結(jié)果顯示:HDA分層深度聚合模型與調(diào)整的ResNet50結(jié)合具有較高的識別準確率,在本文的數(shù)據(jù)集中平均識別準確率達到95.1%,且該模型具有較好的泛化能力。通過實驗發(fā)現(xiàn),提出的深度學習模型在參數(shù)和架構(gòu)上仍然具有提升的空間,所以將來在提高識別準確率的圖像識別處理工作中,完善天氣狀態(tài)數(shù)據(jù)集、改善網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù),提高計算效率是下一個研究目標。