卞偉偉,邱旭陽,申 研
(北京機械設備研究所,北京,100854)
城市環(huán)境中“低慢小”無人機目標體積小,顏色與復雜的背景環(huán)境相接近,使得對其進行探測與識別已成為一個世界性難題[1],將計算機視覺與圖像處理技術(shù)相結(jié)合成為目標檢測與識別的必然選擇。神經(jīng)網(wǎng)絡深度學習方法[2]的成功很大程度上歸功于特征工程的自動化,即利用分層特征提取器以端到端的方式從數(shù)據(jù)而不是手動設計中學習,故深度學習的模型效果依賴于數(shù)據(jù),在以某一特定數(shù)據(jù)集進行訓練時,模型提取該類數(shù)據(jù)的特征,那么將該模型運用在該類數(shù)據(jù)集上將會獲得優(yōu)異的表現(xiàn)。在影像分類中運用深度學習模型,除了借助已經(jīng)存在的模型,也可以重新設計并訓練新的模型。隨著數(shù)據(jù)的復雜度不斷增加,在設計相應的神經(jīng)網(wǎng)絡時需要更多的知識,不同類型的數(shù)據(jù)需要不同的先驗知識,如果訓練的是大規(guī)模的網(wǎng)絡,將有百萬個參數(shù)需要設計與學習,從而帶來巨大的挑戰(zhàn);如果訓練小規(guī)模的網(wǎng)絡,獲得的神經(jīng)網(wǎng)絡只是面向當前影像數(shù)據(jù)集,難以在其他種類的影像數(shù)據(jù)集上獲得優(yōu)異的表現(xiàn)。除此以外,也不能保證得到的模型優(yōu)于自然圖像集訓練的模型以及根據(jù)自然圖像集模型微調(diào)的模型。神經(jīng)網(wǎng)絡的設計是一個長耗時過程,如何在較短的時間內(nèi)自動化設計一個高效的面向影像的神經(jīng)網(wǎng)絡成為了提升影像分類精度的關鍵,關系著目標識別概率的高低。
本文通過網(wǎng)絡收集與實際拍攝,以多旋翼無人機、固定翼無人機、城市飛鳥為目標,采用一種可微神經(jīng)結(jié)構(gòu)搜索的高效結(jié)構(gòu)搜索方法[3],對目標識別問題進行研究。
在目標識別分類任務中,需要使用大量帶有標簽的數(shù)據(jù)來訓練模型,但是在實際中,訓練影像的人工標記需要花費大量的人力和物力,同時需要大量的先驗知識,導致影像數(shù)據(jù)集規(guī)模較小,可用于模型訓練的數(shù)據(jù)較小,而為了讓影像分類取得優(yōu)異的效果,設計的深度學習模型包含的神經(jīng)網(wǎng)絡層數(shù)多,可能產(chǎn)生大量的參數(shù),在訓練時會出現(xiàn)過擬合現(xiàn)象,造成分類精度過低。模型遷移是將一個樣本數(shù)據(jù)集上學習到的模型通過特定的方式運用到另一個具有相同或者相似學習任務的樣本數(shù)據(jù)集上[4],這樣可以提高模型的實用性,增加深度學習模型的泛學習能力。但是由于當前獲取影像的方式眾多,不同的儀器采集的影像具有不同的特點,故影像數(shù)據(jù)的成像幾何形狀和內(nèi)容不同,同時隨著空間分辨率、光譜分辨率的增加,影像包含目標以及通道信息越來越豐富,因此當直接使用已存在的模型對其他種類的影像數(shù)據(jù)集進行訓練時,實際取得的分類果不佳,為了使該模型可以在其他數(shù)據(jù)集上取得優(yōu)異的結(jié)果,便需要對當前模型添加特定的任務知識,使其充分提取當前影像的特征,提高分類精度。
可微神經(jīng)結(jié)構(gòu)搜索方法將搜索空間放寬為連續(xù)的候選體系結(jié)構(gòu),以便通過梯度下降來優(yōu)化體系結(jié)構(gòu)的驗證集性能。與低效的黑盒搜索相比,基于梯度的優(yōu)化數(shù)據(jù)效率允許可微神經(jīng)結(jié)構(gòu)搜索使用數(shù)量級更少的計算資源來實現(xiàn)與現(xiàn)有技術(shù)的競爭性能。同時可微神經(jīng)結(jié)構(gòu)搜索方法相比許多現(xiàn)有方法更簡單,因為它不涉及任何控制器或性能預測器,并且可通用搜索卷積和循環(huán)體系結(jié)構(gòu)。另外,可微神經(jīng)結(jié)構(gòu)搜索方法能夠在豐富的搜索空間內(nèi)發(fā)現(xiàn)具有復雜圖形拓撲的高性能結(jié)構(gòu),而不限于任何特定的結(jié)構(gòu)系列,并且能夠發(fā)現(xiàn)卷積網(wǎng)絡和循環(huán)網(wǎng)絡。
對于搜索空間而言,以搜索計算單元作為最終結(jié)構(gòu)的構(gòu)建塊,學習的單元可以堆疊形成卷積網(wǎng)絡或者遞歸地連接以形成循環(huán)網(wǎng)絡[5]。每個單元是有向無環(huán)圖,由N個節(jié)點的有序序列組成。每個節(jié)點x(j)是潛在表示(例如卷積網(wǎng)絡中的特征映射),每個有向邊(i,j)都與每個節(jié)點的x(j)某些o(i,j)轉(zhuǎn)換操作相關聯(lián),假設每個單元有2個輸入節(jié)點和單個輸出節(jié)點。對于卷積單元,輸入節(jié)點在前2層中定義了單元輸出,通過對所有中間節(jié)點應用縮小操作(例如連接)來獲得單元的輸出。每個中間節(jié)點的計算都是基于它的所有前導節(jié)點計算的:
(1)
為了將離散的搜索空間轉(zhuǎn)為連續(xù)的,首先定義一組候選操作O,例如卷積、最大池化,表示應用于x(j)的一些函數(shù)o(·),為了使搜索空間連續(xù),將特定操作的分類選擇放寬為所有可能操作的輸出層的激勵函數(shù)(SoftMax):
(2)
式中:一對節(jié)點(i,j)的操作混合權(quán)重由維度|O|的向量α(i,j)參數(shù)化,在放寬操作后,結(jié)構(gòu)搜索任務就變?yōu)榱藢W習一組連續(xù)變量:
α={α(i,j)}
(3)
(4)
式中:α為(編碼)體系結(jié)構(gòu)。
放寬之后,目標就是在所有混合操作(例如卷積濾波器)的權(quán)重內(nèi)共同學習結(jié)構(gòu)α和權(quán)重ω,類似于使用強化學習或進化方法的結(jié)構(gòu)搜索將驗證集的性能作為獎勵,可微神經(jīng)結(jié)構(gòu)搜索的目標是優(yōu)化驗證損失,但是需要使用基于梯度下降的方法來計算。
分別用Ltrain和Lval表示訓練損失和驗證損失,這2種損失不僅由結(jié)構(gòu)α確定,而且由網(wǎng)絡中的權(quán)重ω確定,結(jié)構(gòu)搜索的目標是找到使驗證損失Lval(ω*,α*)最小化的α*,其中通過最小化訓練損失來獲得與結(jié)構(gòu)相關聯(lián)的權(quán)重ω*,即:
ω*=arg minωLtrain(ω,α*)
(5)
這意味著一個雙層優(yōu)化問題,α為上層變量,ω為下層變量:
(6)
s.t.ω*(α)=arg minωLtrain(ω,α)
(7)
嵌套公式也出現(xiàn)在基于梯度的超參數(shù)優(yōu)化中,盡管連續(xù)體系結(jié)構(gòu)α維數(shù)遠高于標量值超參數(shù)(如學習率),并且更難以優(yōu)化,但是在某種意義上,連續(xù)體系結(jié)構(gòu)α也可以被視為一種特殊類型的超參數(shù)。
完全解決雙層優(yōu)化是非常困難的,因為無論α發(fā)生任何變化,都需要通過求解式(7)來重新計算ω*(α)。因此,可以使用近似迭代優(yōu)化的方法,其中ω和α分別通過在權(quán)重和結(jié)構(gòu)空間中的梯度下降步驟之間交替優(yōu)化。在步驟k,給定當前結(jié)構(gòu)αk-1,通過在最小化訓練損失Ltrain(ωk-1,αk-1)的方向上移動ωk-1來獲得ωk,然后,在保持權(quán)重ωk不變的情況下對結(jié)構(gòu)進行更新,在權(quán)重梯度下降一步后最小化驗證損失:
Lval(ωk-ξωLtrain(ωk,αk-1),αk-1)
(8)
式中:ξ是該虛擬梯度步驟的學習率。
式(8)的目的是找到一個結(jié)構(gòu),當它的權(quán)重通過(單步)梯度下降優(yōu)化時具有低驗證損失,其進一步展開的權(quán)重用作ω*(α)的替代。值得注意的是,當前動態(tài)迭代算法定義了α的優(yōu)化器(領導者)和ω的優(yōu)化器(跟隨者)之間的斯塔克伯格(Stackelberg)博弈,這通常要求領導者預測跟隨者的下一步移動以達到平衡,雖然目前還沒有意識到優(yōu)化算法的收斂保證,但實際上它能夠選擇合適的ξ收斂。除此以外,當沖量被用于權(quán)重優(yōu)化時,一步前進學習目標(8)被相應地修改,并且上述分析仍然適用。
通過對式(8)中的α求微分來求出體系結(jié)構(gòu)梯度(為了簡便起見,省略步驟索引k):
(9)
其中,
ω′=ω-ξωLtrain(ω,α)
(10)
式(10)表示一步正演模型的權(quán)重,梯度(9)在其第2項中包含矩陣向量乘積,其計算成本高,使用有限差分近似可以大大降低復雜性。假設ε是一個很小的實數(shù)的平方,有:
(11)
和
(12)
則:
(13)
評估有限差分只需要2個向前傳遞的權(quán)重和2個向后傳遞的α,并且復雜性O(|α||ω|)降低到O(|α|+|ω|)。
在獲得連續(xù)的體系結(jié)構(gòu)編碼α后,離散結(jié)構(gòu)通過以下方式生成:
1)保留每個中間節(jié)點的k個最強的前導,其中邊緣的強度定義為:
(14)
為了生成的結(jié)構(gòu)與現(xiàn)有工作中的結(jié)果相當,對卷積網(wǎng)絡使用k=2。
2)通過采用函數(shù)argmax將每個混合操作替換為最可能的操作。
實驗采用由重復單元組成的神經(jīng)網(wǎng)絡結(jié)構(gòu),其中重復單元有正常單元和縮小單元,生成的神經(jīng)網(wǎng)絡的層數(shù)即為重復單元的個數(shù),完整的實驗包括2個階段:結(jié)構(gòu)搜索和結(jié)構(gòu)評估。在結(jié)構(gòu)搜索階段,使用可微神經(jīng)結(jié)構(gòu)搜索對多個結(jié)構(gòu)進行研究,并根據(jù)其驗證性能確定最佳單元;在結(jié)構(gòu)評估階段,使用這些單元構(gòu)建更大的結(jié)構(gòu),從頭開始訓練并在測試集上測試它們的性能。
實驗中,上文提及的一組候選操作O中包括以下操作:3×3和5×5可分離卷積、3×3和5×5擴張可分離卷積、3×3最大池化、3×3平均池化、Identity和Zero,所有操作的步長都是1(如果適用),并且填充卷積特征圖以保持其空間分辨率,使用ReLU-Conv-BN順序進行卷積運算,并且每個可分離卷積總是應用2次。
每個卷積單元由N=7個節(jié)點組成,其中輸出節(jié)點被定義為所有中間節(jié)點(排除的輸入節(jié)點)的深度級聯(lián)。其余的設置遵循Zoph等[6]、Liu等[7]和Real等[8],然后通過將多個單元堆疊在一起形成網(wǎng)絡。
卷積單元k的第1和第2節(jié)點分別設置為卷積單元k-2和卷積單元k-1的輸出,并且根據(jù)需要插入1×1個卷積。位于網(wǎng)絡總深度的1/3和2/3處的小區(qū)域是縮小單元,其中與輸入節(jié)點相鄰的所有操作步長都是2。因此,體系結(jié)構(gòu)編碼是(αnormal,αreduce),其中αnormal由所有正常單元共享,αreduce由所有縮小單元共享。
將訓練集中40%的數(shù)據(jù)作為驗證集,其余部分作為訓練集。共進行2次結(jié)構(gòu)搜索,第1次網(wǎng)絡層數(shù)為8,訓練周期50個,第2次網(wǎng)絡層數(shù)為12。由于GPU顯存有限,而數(shù)據(jù)集原始圖像分辨率為256×256,為了保證輸入圖片可以在GPU上進行運算,在加載數(shù)據(jù)集時,將數(shù)據(jù)分辨率壓縮至32×32。
其他超參數(shù)設置如下:每次訓練數(shù)據(jù)輸入批量大小為64(對于訓練集和驗證集),初始通道數(shù)為16,使用動量SGD來優(yōu)化權(quán)重ω,初始學習速率ηω=0.025(在余弦調(diào)度(cosine schedule)之后衰減到0)、動量大小為β=0.9和權(quán)重以ω=3×10-4的大小衰減,使用Adam作為結(jié)構(gòu)變量的優(yōu)化器(即正常和縮小單元中的α),初始學習率ηα=3×10-4,動量β=(0.5,0.999),權(quán)重以ω=3×10-3的大小衰減。
網(wǎng)絡層數(shù)為8的小網(wǎng)絡在單個GPU上進行結(jié)構(gòu)搜索花費了大約40 min,網(wǎng)絡層數(shù)為12的小網(wǎng)絡花費了1 h。
對一個有20層的大型網(wǎng)絡進行訓練,訓練時間為600個時期,批量數(shù)據(jù)輸入大小為96,圖片大小仍然為32×32,其他超參數(shù)與結(jié)構(gòu)搜索的超參數(shù)保持相同,增加其他增強功能包括圖片剪切、隨機失活概率為0.3和權(quán)重為0.4的輔助節(jié)點。由8層小網(wǎng)絡卷積單元組成的大網(wǎng)絡在單個GPU上進行結(jié)構(gòu)驗證花費了1 h 24 min,由12層小網(wǎng)絡卷積單元組成的大網(wǎng)絡花費了1 h 15 min。
訓練數(shù)據(jù)對基于深度學習的目標識別至關重要。針對城市中常見的飛行物類型,本文通過網(wǎng)絡收集與實際拍攝,收集了豐富的目標影像數(shù)據(jù),包括3類目標:固定翼無人機、多旋翼無人機與飛鳥,各1 000張。影像分辨率固定為256×256,以jpg格式保存。數(shù)據(jù)集實例見圖1。
圖1 數(shù)據(jù)集實例
“低慢小”目標數(shù)據(jù)集共進行了2次實驗,共得到4種基本單元,見圖2~5。在每個單元中c{k-1}和c{k-2}表示前2個單元的輸出作為本單元的輸入,c{k}表示本單元的輸出。從結(jié)果來看,不同層數(shù)的網(wǎng)絡,其基本的卷積單元不同,同時每個卷積單元每個節(jié)點處有多個輸入和輸出,構(gòu)建了一個復雜的網(wǎng)絡結(jié)構(gòu)。
圖2 網(wǎng)絡層數(shù)為8的正常單元
圖3 網(wǎng)絡層數(shù)為8的縮小單元
圖4 網(wǎng)絡層數(shù)為12的正常單元
圖5 網(wǎng)絡層數(shù)為12的縮小單元
通過對數(shù)據(jù)集進行實驗,得到了當前數(shù)據(jù)集的最優(yōu)神經(jīng)網(wǎng)絡結(jié)構(gòu),在找到結(jié)構(gòu)后,通過在驗證集上驗證,得到相應的測試結(jié)果,見表1。
表1 使用可微神經(jīng)結(jié)構(gòu)搜索的深度神經(jīng)網(wǎng)絡測試結(jié)果
從表1可以得知,城市飛行物數(shù)據(jù)集的2個實驗的分類精度分別為96.50%和97.25%,滿足不小于95%的精度要求。
最優(yōu)精度與人工設計的常用網(wǎng)絡對比見表2。顯然,本文方法具有更好的測試精度,在用于“低慢小”無人機類目標分類檢測方面具有更強的適用性。
表2 不同結(jié)構(gòu)神經(jīng)網(wǎng)絡在目標數(shù)據(jù)集上的測試結(jié)果
本文利用神經(jīng)結(jié)構(gòu)搜索可以在給定目標數(shù)據(jù)集上得到當前任務最優(yōu)的深度神經(jīng)網(wǎng)絡,且在“低慢小”目標識別上取得了良好的效果,但這一方法仍然需要一定量的有標簽數(shù)據(jù)。因此,在后續(xù)的目標識別方法研究過程中應結(jié)合當前在小樣本數(shù)據(jù)進行分類的研究,將其運用在神經(jīng)結(jié)構(gòu)搜索中,提升樣本數(shù)據(jù)量較小時的分類精度,防止過擬合現(xiàn)象的發(fā)生;同時,在面對無標簽影像時,考慮是否可以通過結(jié)合神經(jīng)結(jié)構(gòu)搜索獲取的高層語義特征與其他方法獲取的有關圖像的中、低層語義特征,從而提升分類精度。