喻明毫,高建瓴
(貴州大學大數(shù)據(jù)與信息工程學院,貴州 貴陽 550025)
海洋富含各類自然資源可供人類使用。為了提高海洋資源開采的便利性,水下目標檢測算法被用來輔助人類或機器人開展水下開采作業(yè)。在實際中,水下目標檢測能對海洋捕撈事業(yè)、海洋軍事及海洋環(huán)保事業(yè)提供更好的便利。但是,海底環(huán)境的復雜性加大了檢測難度,限制了檢測效果。針對海底環(huán)境的復雜性,F(xiàn)abic等人[1]提出的基于形狀分類的傳統(tǒng)水下檢測算法利用斑點計數(shù)和形狀分析來對水下魚類進行分類;Oliver等人[2]使用Harris角點檢測器結合黑森高檢測器對水下目標進行檢測。由于針對性較強,難以適用于其他目標,且算法受環(huán)境影響較強,所以傳統(tǒng)的檢測算法不具有適用性,在實際場景中算法性能會急劇衰減。
在圖像處理領域,卷積神經(jīng)網(wǎng)絡CNN(Convolution Neural Network)在圖像分類、圖像分割及目標檢測等任務中均已證明了其高效性。CNN通過端到端的方式從大量數(shù)據(jù)中學習得到一個檢測模型,且能夠應用于大量目標的檢測。自2014年Girshick等人[3]提出基于卷積神經(jīng)網(wǎng)絡的R-CNN(Region-CNN)目標檢測器以來,物體識別精度不斷提高,但R-CNN系列網(wǎng)絡檢測速度過于緩慢,難以做到實時檢測。Liu等人[4]提出的SSD(Single Shot multibox Detector)雖然提高了檢測效率,在模型體積上的考慮還存在不足。YOLO[5,6]在保證一定的識別精度的同時還保持了高效的檢測效率。但是,不論是雙階段的R-CNN系列還是單階段的檢測器,其參數(shù)量以及浮點運算FLOPs(FLoating OPerations)量都過于龐大,移動端設備需求逐漸增加時,這些網(wǎng)絡難以在有限的計算資源下達到較好的效果。
為了在有限的計算資源下達到更好的檢測效果,本文設計了一種輕量級的網(wǎng)絡,相比大型網(wǎng)絡,能夠在相同檢測效果下消耗更少的資源。目前網(wǎng)絡模型輕量級的方向主要是MobileNet網(wǎng)絡[7]中提出的的深度可分離卷積以及ShuffleNet系列[8,9]使用的通道混洗操作。深度可分離卷積操作是將普通深度卷積轉換為逐通道卷積與1×1點卷積,前者卷積核數(shù)與通道數(shù)相同以壓縮參數(shù),后者使用點卷積來混合通道信息,將每一個輸入特征圖信息在輸出上有所體現(xiàn);又針對內(nèi)存訪問成本問題說明輸入輸出通道一致的時候內(nèi)存訪問成本最小,指出了4條輕量級的設計思想,在此基礎上設計了ShuffleNet V2結構[9]?;贗andola等人[10]提出的SqueezeNet模塊化思想,本文網(wǎng)絡通過模塊疊加構成。
目前在輕量級設計中還是大量使用點卷積來壓縮參數(shù)量,然而過度使用卷積帶來的后果就是FLOPs暴增,這已經(jīng)成為輕量型網(wǎng)絡設計的計算瓶頸。在如何去除卷積的同時不增加參數(shù)量和FLOPs的研究方面,Prabhu等人[11]結合快速傅里葉變換FFT(Fast Fourier Transform)中的蝶形運算與卷積操作提出了Butterfly Transform,來無限逼近卷積并應用于卷積神經(jīng)網(wǎng)絡中,以降低計算復雜度。Li等人[12]則繼續(xù)在分解卷積的維度上開展研究,將卷積核矩陣分解為2組自適應卷積。Han等人[13]在研究CNN提取的特征圖中發(fā)現(xiàn)大量特征圖存在冗余,于是利用一部分特征圖通過線性變換來生成大量的特征圖,并提出了GhostModel。
本文針對DenseNet[14]中的稠密連接進行改進,提出一種兩路稠密連接結構;對PeleeNet[15]中的Stem Block進行改進,提出了高效的卷積池化層來獲取初始特征。為了避免大量使用點卷積,本文使用GhostModel代替部分點卷積。網(wǎng)絡下采樣模塊Transition Layer遵循ShuffleNet V2中的設計規(guī)則,保持輸入輸出通道不變。
已經(jīng)訓練好的卷積神經(jīng)網(wǎng)絡其實含有大量的特征映射冗余。圖1是AlexNet由輸入圖像生成的特征圖,從圖1可以看到,有很多特征圖非常相似。因此,Han等人[13]利用少量的原始特征圖通過一系列簡單的線性映射來生成更多的特征圖。
Figure 1 Visualization of feature maps圖1 特征圖可視化
映射方式如式(1)所示:
yij=Φi,j(y′i),?i=1,…,m;j=1,…,n
(1)
其中,y′i是第i個原始特征圖,Φi,j(·)是生成第i個幻影圖yij的第j個線性運算。一個原始圖可以有一個或多個幻影圖,如圖2所示,其中圖2b中的k=i×j。
Figure 2 Original convolution and GhostModel圖2 原始卷積與幻影模塊
現(xiàn)有的輕量級神經(jīng)網(wǎng)絡通過使用深度可分離卷積和通道混洗來減少參數(shù)量與計算量,但同時大量點卷積的使用已經(jīng)成為輕量級網(wǎng)絡設計的計算瓶頸。本文構建一種新的網(wǎng)絡結構,使用Ghost- Model來代替點卷積,同時結合DenseNet網(wǎng)絡連接方式來構造用于水下目標檢測的網(wǎng)絡。
特征提取是網(wǎng)絡構建最重要的部分,為了獲得更好的特征表達,開始的特征提取模塊使用卷積與池化2種方式來提取特征,最后再通過通道維度相加來合并特征。第1個特征提取模塊如圖3所示。這樣的結構能夠極大地提高網(wǎng)絡的特征表達能力。PeleeNet中使用點卷積來壓縮通道,于是在圖3的結構中使用了GhostModel來代替點卷積,在提高特征表達能力的同時減少一定的參數(shù)量和FLOPs。圖3中stride表示步長,kernel_size表示卷積核尺寸。
Figure 3 ConvPool layer圖3 卷積池化層
因為在設計輕量級網(wǎng)絡時需要考慮計算資源的限制,所以不能構建深度網(wǎng)絡來提取特征,且網(wǎng)絡層數(shù)過深會導致梯度消失,導致網(wǎng)絡難以收斂。使用DenseNet稠密連接結構可以較好地解決梯度消失和難以訓練的問題,同時可以高效地利用特征圖來減少參數(shù),通過將每層的特征圖連接起來又可以獲得更多特征表達。DenseNet中已證明了模塊輸入尺寸和輸出尺寸相同時網(wǎng)絡性能表現(xiàn)更佳,為使kernel_size=5的連接中特征圖尺寸不變,在卷積過程中使填充寬度padding=2。增大卷積核尺寸的同時可以增加網(wǎng)絡感受野,對目標檢測任務更有優(yōu)勢。同時增加一路連接會增加參數(shù),但是增加的連接會通過GhostModel來抵消一部分參數(shù)量和計算量。于是構造了如圖4b所示的基于GhostModel的兩路稠密連接結構,增加了一路連接以獲取不同特征。
Figure 4 Dense connection圖4 稠密連接
表1中對比了圖3的卷積池化層使用點卷積和GhostModel的參數(shù)對比,使用GhostModel和1×1卷積在參數(shù)量、累計乘加計算次數(shù)MAdd及FLOPs上大致都下降了12%;同時對比了圖4中的原始稠密結構與兩路稠密連接結構參數(shù)、MAdd及FLOPs,相比之下本文兩路稠密結構在參數(shù)等方面高出原始稠密結構15%左右,但是獲得了更好的特征表達。
Table 1 Comparison of structure parameters
稠密連接結構特征圖的輸入輸出尺寸不變,以便輸出特征圖和輸入特征圖在通道維度相連。DenseNet中使用卷積和池化的Transition Layer減小特征圖尺寸,同時使用壓縮因子壓縮特征通道,減小特征圖尺寸。但是,根據(jù)ShuffleNet V2中的規(guī)則以及實驗表明,通道壓縮因子會降低網(wǎng)絡性能,所以本文在Transition Layer中保持輸入通道數(shù)和輸出通道數(shù)不變,Transition Layer由GhostModel和平均池化組成。普通卷積部分使用Conv-BN-ReLU的激活模式??拷敵龅腉hostModel不使用ReLU。網(wǎng)絡整體結構如表2所示,一共有4個階段:第1階段由卷積池化層構成,初步提取特征;后面3個階段由兩路稠密連接模塊重復組成;最后連接Transition Layer。
Table 2 Overall network structure
Figure 5 Channel attention inechanism圖5 通道注意力機制
Figure 6 Architecture of LUDet圖6 LUDet整體結構
水下輕量級目標檢測器的主干網(wǎng)絡構建完畢。本文所使用的檢測框架是基于Faster R-CNN的兩階段檢測器,但由于檢測部分網(wǎng)絡過于龐大,會造成頭重腳輕的后果,檢測效果會大打折扣,因此在檢測部分也要使網(wǎng)絡趨于輕量化。ThunderNet使用了一種輕量級的檢測頭,在其基礎上,本文將替換檢測部分的上下文信息增強模塊;替換后的新模塊使用多階段特征經(jīng)過通道注意力模塊,再通過特征融合的方式將每個階段特征圖相加,以增強每個階段輸出特征圖的特征表達。本文提出的通道注意力機制如圖5所示,通過不同池化方式獲取特征權重,構造注意力特征圖,圖5中R為壓縮率,C、H和W分別為卷積核數(shù)(即通道數(shù))、卷積核高和卷積核寬。原始特征圖分別經(jīng)過全局最大池化和全局平均池化產(chǎn)生2個C×1×1特征圖。得到的特征圖經(jīng)過卷積濾波壓縮通道生成新的2個C/R×1×1的特征圖。新的特征圖恢復通道數(shù)并在維度(特征圖寬、高)相加,最后與原特征圖相乘得到注意力特征圖。
網(wǎng)絡的整體模型如圖6所示。原ThunderNet網(wǎng)絡中主干網(wǎng)絡與檢測網(wǎng)絡的連接部分是一個上下文信息增強模塊CEM(Context Enhance Model)。CEM類似于特征金字塔網(wǎng)絡的結構,本文將LUNet(Lightweight Underwater Net)的stage2、stage3及全局平均池化后所得到的特征圖經(jīng)過圖5中的通道注意力機制進行特征融合,形成通道注意力模塊CAM(Channel Attention Model),以此提高網(wǎng)絡的特征表達能力??梢?,本文以改進的兩路稠密連接結構結合GhostModel構造LUNet,并基于Faster R-CNN檢測框架提出了一種新穎的輕量級水下目標檢測器LUDet(Lightweight Underwater object Detector)。
本文為水下目標檢測搜集了2個數(shù)據(jù)集。一個是水下生物數(shù)據(jù)集,來自大連理工大學-獐子島聯(lián)合實驗室采集的水下地形、地貌和生物等圖像數(shù)據(jù)集RUIE,開源地址為https://github.com/dlut-dimt/RealworldUnderwater-Image-Enhancement-RUIE-Benchmark。該數(shù)據(jù)集中含有海膽(echinus)、海參(holothurian)、海星(starfish)和扇貝(scallop)4類海底生物,收集的原始數(shù)據(jù)集包含4 756幅圖像,但有一些圖像并未標記,處理后數(shù)據(jù)集中含有4 540幅圖像。將數(shù)據(jù)集制作成Pascal VOC數(shù)據(jù)集的格式以便訓練,其中測試集455幅圖像,驗證集613幅圖像,訓練集3 472幅圖像。
另一個是水下垃圾檢測數(shù)據(jù)集[16]。該數(shù)據(jù)集中含有3類垃圾:全部塑料垃圾Plastic、人為放置在水下環(huán)境中的物體ROV和所有的天然生物材料,包括魚類、植物和一些生物碎屑Bio(Biological detritus),一共8 821幅圖像。同樣制作成Pascal VOC數(shù)據(jù)集格式,其中測試集、驗證集和訓練集分別有883,1 191和6 747幅圖像。評價指標與Pascal VOC數(shù)據(jù)集的相同。
同時本文對LUNet使用開源數(shù)據(jù)集CAFIR10和CAFIR100進行分類性能驗證。CAFIR10和CAFIR100由Alex Krizhevsky收集(http://www.cs.toronto.edu/~kriz/index.html)。
本文實驗操作系統(tǒng)為Ubuntu18.04,處理器為Intel Xeon Silver 4210。使用PyTorch框架對模型進行訓練、測試和可視化分析。分類實驗初始學習率設置為0.1,檢測實驗初始學習率設置為1e-6,都隨訓練迭代次數(shù)的增加而減小。
評價指標使用AP與mAP,AP表示各個類別的PR曲線下的面積,mAP表示各個類別的AP平均值。
為了驗證輕量級骨干網(wǎng)LUNet的性能,在CAFIR10和CAFIR100數(shù)據(jù)集上進行分類實驗,先基于CAFIR10數(shù)據(jù)集驗證網(wǎng)絡的有效性,然后基于CAFIR100數(shù)據(jù)集與現(xiàn)有其它輕量級網(wǎng)絡進行對比。
圖7和圖8顯示了LUNet在CAFIR10數(shù)據(jù)集上的實驗結果。在訓練集和驗證集上的混淆矩陣(如圖8所示)說明了每個類的分類效果。LUNet在CAFIR10驗證集上的準確率為89.03%,在訓練集上的準確率為98.89%。從圖7可以看出,LUNet在CAFIR10驗證集上的損失在第96次epoch之后便不再下降,在驗證集上趨于擬合狀態(tài),同時準確率變化趨于穩(wěn)定。
Figure 7 Accuracy and loss curves of LUNet on training set and validation set圖7 LUNet在訓練集與驗證集上的準確率曲線與損失曲線
Figure 8 Confusion matrix圖8 混淆矩陣
另外,還在CAFIR100數(shù)據(jù)集上進行分類對比實驗。此數(shù)據(jù)集一共有100個類,每個類有600幅圖像,其中500幅組成訓練集,100幅組成驗證集。采用的評價指標是Top1錯誤率和Top5錯誤率。實驗結果如表3所示。表3中的參數(shù)量與表2中的不同,是因為最后全連接層輸出只有100維。
Table 3 Experimental results of networks on CAFIR100 data set
從表3可知,本文輕量級網(wǎng)絡在保持極低參數(shù)量和FLOPs的同時只損失了小幅度的準確率。通過在CAFIR10和CAFIR100數(shù)據(jù)集上的實驗表明了LUNet作為輕量級網(wǎng)絡的有效性與效率。在CAFIR100上的損失曲線如圖9所示。
Figure 9 Loss of LUNet training圖9 LUNet訓練損失
本文使用5種檢測器與本文提出的檢測器進行對比,其中YOLOv4、M2Det、SSD和PeleeNet屬于單階段檢測器,同時PeleeNet又是輕量級檢測器,ThunderNet(1、2、3)屬于輕量級雙階段檢測器,本文所提檢測器同樣是兩級檢測器。圖10表示LUDet在2個水下目標檢測數(shù)據(jù)集上訓練過程的損失曲線,隨著迭代過程損失逐漸趨于平緩,說明檢測器也逐漸趨于擬合狀態(tài)。
表4中對比了各個檢測器在水下垃圾檢測數(shù)據(jù)測試集上的測試效果。本文檢測器的mAP值在所有檢測器中排名第2,其中對于Bio本文檢測器LUDet的檢測效果最好。但是,根據(jù)表5中的對比模型結構,本文所構造的網(wǎng)絡大小僅1.1 MB,是檢測效果最好的SNet_535模型參數(shù)量的26.4%,F(xiàn)LOPs也下降71.6%左右;參數(shù)約與PeleeNet檢測器的相差不多,F(xiàn)LOPs對比PeleeNet下降了41.6%左右。
Table 4 Test results on underwater garbage dataset
Table 5 Comparison of parameters of the first three detectors
Figure 10 Training Loss curves of two datasets圖10 2個數(shù)據(jù)集訓練損失曲線
表6中是各個檢測器在水下生物數(shù)據(jù)集測試集上的檢測結果。LUDet對所有類別檢測的mAP為52.5%,比PeleeNet的高出7.1%,比ThunderNet3的高出6.3%,相比垃圾檢測數(shù)據(jù)集上的檢測結果,此數(shù)據(jù)集檢測效果更好,說明結合通道注意力的CAM模塊在尺度變換下網(wǎng)絡的穩(wěn)定性較好。表6中網(wǎng)絡的Backbone設置與表4中的相同。
Table 6 Test results on underwater biological dataset
為了測試基于LUNet的輕量級水下目標檢測器的檢測速度,使用水下垃圾數(shù)據(jù)集的測試集進行速度測試,使用表4中的檢測網(wǎng)絡進行測試的結果如圖11所示??梢钥吹剑疚牡妮p量級檢測器速度與AP之間達到了很好的平衡,本文檢測器的每秒傳輸幀數(shù)FPS(Frames Per Second)為37。
Figure 11 Results of speed test圖11 速度測試結果
本文檢測器在2個數(shù)據(jù)集上的圖像測試結果如圖12所示,在水下生物數(shù)據(jù)集中有大量的小目標,水下環(huán)境也復雜多樣,但檢測效果比較穩(wěn)定,且檢測中存在的冗余檢測框可以通過提高IoU閾值來解決,這是目標檢測領域中的一種常規(guī)做法。
Figure 12 Test results of images圖12 圖像測試結果
為了提高特征表達能力,本文在構造網(wǎng)絡時使用卷積和池化2條連接來獲取不同的特征映射,同時還將點卷積替換為GhostModel,以降低參數(shù)量和計算量。同樣基于獲取不同特征映射的考慮,在網(wǎng)絡下一階段使用兩路的稠密連接,稠密連接本身是將卷積后的特征圖與原特征圖連接,以獲得不同特征表達,在使用了兩路稠密連接之后,比原始連接獲得的特征表達更為豐富,以此提高網(wǎng)絡性能。在特征提取網(wǎng)絡部分和檢測網(wǎng)絡部分,沒用使用原框架中的CEM模塊,而是將后2個階段輸出的特征圖及最后階段輸出經(jīng)過全局池化后的特征圖通過通道注意力模塊進行特征融合,因為不同大小的特征圖對不同大小的目標檢測效果不一樣,小目標需要大特征圖,所以此模塊在檢測不同大小目標時效果更好。