張俊鑫,郭海京,3*,唐孝培,金詩程
(1.廣東省國土資源測繪院,廣東 廣州 510500;2.中山大學地理科學與規(guī)劃學院,廣東 廣州 510275;3.自然資源部華南熱帶亞熱帶自然資源監(jiān)測重點實驗室,廣東 廣州 510663)
深度學習是特殊的機器學習算法,其模型是深層的人工神經(jīng)網(wǎng)絡。深度學習最早由多倫多大學教授Hinton[1-2]提出,是指一種模擬人類大腦研究學習的人工神經(jīng)網(wǎng)絡算法。其主流算法包括受限波爾茲曼機(RBM)、深度信念網(wǎng)絡(DBN)、卷積神經(jīng)網(wǎng)絡(CNN)以及自動編碼器(AE)等,后3 種算法廣泛應用于遙感影像分類與識別中,以CNN 模型最為典型[3]。然而,影像數(shù)據(jù)局限于單一視角,主要關注于目標的空間布局特征,忽略了剖面和層次特征,無法實現(xiàn)更細致的分類[4]。因實景照片多視角、高分辨率等特點,研究者開始關注基于照片的分類方法,通過深度學習CNN對照片進行識別[5-6],實現(xiàn)更加精細化的分類。
本文提出一種輕量化的神經(jīng)網(wǎng)絡模型,基于三調照片實現(xiàn)地表覆蓋類型的精細化識別。實驗中,以廣東省部分縣區(qū)為對象,利用8 037 張三調照片樣本進行模型訓練與分類實驗研究,取得了較好的效果。研究結果表明,運用輕量化神經(jīng)網(wǎng)絡模型檢測三調實地照片,可以識別地表上的柚子、香蕉、菠蘿等作物,滿足國土空間的精細化管理需求,同時為廣東省地區(qū)的耕地恢復潛力分析提供數(shù)據(jù)支撐。
本文使用廣東省部分縣區(qū)的三調照片作為模型的驗證與分析數(shù)據(jù),對野外實地拍攝的照片進行人工標注,照片像素為1 920×1 080,共標記了8 037 張照片用于模型的訓練與驗證,其中菠蘿照片4 073 張、柚子照片1 798 張、香蕉照片538 張、其他照片1 628張(如表1所示),樣本照片如圖1所示。
表1 樣本類別及數(shù)量
圖1 樣本照片
卷積神經(jīng)網(wǎng)絡的參數(shù)量通常較多,在實際應用中受到計算能力的限制,為了使得本文的方法能夠得到大范圍推廣應用,本文的核心目的是提出一個輕量化的神經(jīng)網(wǎng)絡模型,減少模型的計算量與參數(shù)量,具體的網(wǎng)絡結構見圖2。基礎網(wǎng)絡結構的靈感來自于EfficientNet[7],主要包含CSPMBConv 和CSPMBConvBlock等基礎模塊,各模塊的詳細結構見圖3。同時考慮到三調數(shù)據(jù)的場景特征豐富,在網(wǎng)絡中加入了多尺度特征融合,有效獲取不同尺度的場景特征信息?;诖耍疚奶岢隽艘粋€高效多尺度場景卷積神經(jīng)網(wǎng)絡(efficient multi-scale context network,EMCNet)。
圖2 網(wǎng)絡結構圖
圖3 網(wǎng)絡模塊細節(jié)圖
神經(jīng)網(wǎng)絡通常是由許多卷積層構成,一個卷積網(wǎng)絡層i可以定義為一個函數(shù):Yi=Fi( )Xi,其中Fi是算子,Yi為輸出張量,Xi為輸入張量,張量形狀為Hi,Wi,Ci,其中Hi和Wi為輸入張量的空間分辨率大小,Ci為通道數(shù)量。卷積神經(jīng)網(wǎng)絡N可以由一系列卷積層來表示:
在實際應用中,卷積神經(jīng)網(wǎng)絡層通常被劃分為多個階段,每個階段的所有層都具有相同的結構,例如ResNet[8]有5個階段,除了第一層進行下采樣外,其余每個階段的卷積層都包含相同的卷積類型。因此,我們可以將卷積神經(jīng)網(wǎng)絡定義為:
式中,F(xiàn)Li i為卷積層Fi在第i階段重復了Li次;Hi,Wi,Ci為第i層的輸入張量X的大小。
與常規(guī)的卷積神經(jīng)網(wǎng)絡設計主要關注于尋找最佳的網(wǎng)絡層結構Fi不同,模型縮放試圖擴大網(wǎng)絡深度(Li)、寬度(Ci)以及分辨率(Hi,Wi),而不改變基礎網(wǎng)絡中預定義的Fi。通過修正Fi,模型縮放簡化了計算資源約束下的模型結構設計問題,但仍有很大的空間去探索網(wǎng)絡每一層中不同的Li,Ci,Hi,Wi組合。為此,谷歌大腦團隊提出了EffcientNet[7],可以將網(wǎng)絡縮放表述為一個優(yōu)化問題:
式中,w,d,r為網(wǎng)絡縮放的寬度、深度和分辨率的系數(shù);F^i,L^i,C^i,H^i,W^i為基礎網(wǎng)絡中預定義的參數(shù)。
網(wǎng)絡縮放的主要難點在于最優(yōu)的d,w,r存在相互依賴,且在不同的資源約束下取值也會發(fā)生變化。正是由于這個難點的存在,傳統(tǒng)方法一般只考慮其中一個參數(shù)的變化。
縮放網(wǎng)絡深度是許多卷積網(wǎng)絡最常用的方法[8,10-11]。理想情況下,更深層的卷積神經(jīng)網(wǎng)絡可以捕捉到更豐富、更復雜的特征信息,并且同時可以保持良好的泛化能力。然而,梯度消失問題會導致更深的網(wǎng)絡也更難以訓練[12]。盡管近年來提出的跳躍連接(skip connections)[8]和批歸一化(batch normalization)[13]緩解了訓練問題,但更深的網(wǎng)絡所帶來的精度增益逐漸減小。例如ResNet-1000 雖然有更多的層,但精度與ResNet-101相似。
縮放網(wǎng)絡寬度通常用于小尺寸模型[14-16]。在Zagoruyko[12]的研究中,更寬網(wǎng)絡模型往往能夠獲取更細粒度的特征,也更容易訓練。然而,極寬但較淺的網(wǎng)絡往往難以捕捉更高層次的特征。
使用更高分辨率的輸入圖像,卷積神經(jīng)網(wǎng)絡可以獲取更細粒度的特征。從早期VGG[21]、AlexNet[22]等網(wǎng)絡的224 輸入大小開始,現(xiàn)代卷積神經(jīng)網(wǎng)絡傾向于使用299×299[10]或331×331[17]的輸入大小來獲得更好的精度。Huang[18]等通過輸入480×480的大小實現(xiàn)了最優(yōu)的網(wǎng)絡分類精度,分辨率為480×480。而更高的分辨率,如600×600,也被廣泛應用于目標檢測網(wǎng)絡中[19-20]。
平衡網(wǎng)絡深度、寬度和分辨率3 個維度獲得更好的準確率和效率,EfficientNet 使用復合系數(shù)φ對3 個維度進行縮放,具體如下:
式中,α,β,γ為對應d,w,r運行維度的資源分配參數(shù);φ為資源控制系數(shù);在滿足約束條件的情況下,通過神經(jīng)架構搜索對各參數(shù)進行優(yōu)化調整;在參數(shù)量和運算量不增加的基礎上,EfficientNet 模型通過不斷調整網(wǎng)絡深度、網(wǎng)絡寬度和圖像分辨率的系數(shù)達到最優(yōu)的精度。
網(wǎng)絡縮放實現(xiàn)了最優(yōu)的輸入分辨率,網(wǎng)絡深度以及網(wǎng)絡寬度的組合,能夠在減少網(wǎng)絡參數(shù)量的同時保證網(wǎng)絡的分類精度。而有效的網(wǎng)絡結構也能夠減少網(wǎng)絡的參數(shù)量[23]。最近提出的跨階段局部網(wǎng)絡(CSPNet)[24]在減少計算量的同時可以實現(xiàn)更豐富的梯度組合。CSPNet 是通過將基礎層的特征圖劃分為兩部分,然后通過提出的跨階段層次結構將其合并來實現(xiàn)的。其主要思想是通過分割梯度流,使梯度流通過不同的網(wǎng)絡路徑傳播。現(xiàn)有的CNN 通過輕量化后,準確率大大下降,而CSPNet 能夠加強CNN 的學習能力,使其在輕量化的同時保持足夠的準確性。同時,過高的計算瓶頸會導致更多的循環(huán)來完成推理過程,或者一些算術單元會經(jīng)常閑置。而CSPNet能夠將計算量均勻的分布在CNN 的每一層,從而有效的提升每個計算單元的利用率,減少不必要的計算消耗。
本文所采用的實驗流程如圖4 所示,從三調數(shù)據(jù)篩選出部分樣例照片,并對照片進行人工標注,然后根據(jù)樣例照片制作數(shù)據(jù)集,將數(shù)據(jù)集按照7∶3的比例劃分訓練集與測試集。訓練過程中對數(shù)據(jù)進行隨機增強,包括水平翻轉、鏡像翻轉、上下翻轉、高斯噪聲模糊、0~15°的隨機旋轉,然后將數(shù)據(jù)采樣至512×512的大小并歸一化輸入進網(wǎng)絡進行訓練。訓練結束后對模型進行測試,獲取模型的測試精度,檢驗模型的魯棒性。
圖4 實驗流程圖
本文訓練所使用的框架為pytorch,訓練周期為100,優(yōu)化器選擇SGD,初始學習率為0.01,衰減系數(shù)為0.000 1,學習率采用WarmUp學習率調整策略,后續(xù)學習率每25 個周期衰減10 倍,訓練過程中采用NVIDIA GTX 2080 ti GPU進行加速。
由于訓練數(shù)據(jù)存在不均衡的現(xiàn)象,本文的損失函數(shù)并未使用普通的交叉熵損失函數(shù),而是對交叉熵損失函數(shù)進行了加權,加權的交叉熵損失函數(shù)公式如下:
在對網(wǎng)絡模型進行訓練后,加載模型的訓練權重,并利用預先劃分的測試集對模型進行測試,測試的結果如圖5 展示的混淆矩陣所示。可以看到各個類別的分類精度均達到了非常高的精度,整體誤分情況較少,測試集的F1-score達到了0.988 3,這說明本文提出的網(wǎng)絡模型能夠有效捕獲三調數(shù)據(jù)的場景特征,提升最終的分類精度。
圖5 測試集混淆矩陣
為驗證本文提出的模型的有效性,本文對比了Inceptionv3[11],ResNet101[7],DenseNet169[9],ResNeXt50[25]和WideResNet50[12]5 種模型,在實驗參數(shù)上保持一致,得到的結果如表2 所示。根據(jù)結果可以看出,本文的網(wǎng)絡模型在精度上均優(yōu)于其余模型,并且參數(shù)量較少,其余模型參數(shù)量均在千萬級別,本文的方法參數(shù)量在百萬級別。在計算量方面,以輸入512×512 大小為基準,統(tǒng)計了各個模型的計算量,其中WideResNet50的計算量最高,達到了119.4 BFLOPs,其余模型也均超過30 BFLOPs,可以看到主流網(wǎng)絡模型的計算量均較高,不適合大規(guī)模推理預測,耗費時間的同時也需要消耗大量的計算資源。而本文提出的模型計算量僅為15.3 BFLOPs,在減少計算量的同時并沒有降低模型的精度,由此可見,本文提出的模型無論在速度和精度方面均有所提高。
表2 EMCNet與主流網(wǎng)絡模型的對比結果
本文提出了一種輕量化的神經(jīng)網(wǎng)絡模型,該模型利用了最新的網(wǎng)絡縮放技巧,綜合精度與效率,并對特征進行跨階段融合,能夠對特征進行有效利用。與目前主流的神經(jīng)網(wǎng)絡模型進行對比,本文提出的模型不僅在速度上具有較大的優(yōu)勢,且在精度上也表現(xiàn)更優(yōu),在實際的場景應用中能夠達到較高的分類精度,可以實現(xiàn)利用該模型對三調數(shù)據(jù)進行自動篩選,有效提高篩選效率,減少人工參與,具有重要的推廣意義。