黃珍偉,陳 偉,王文杰,路錦通
(江蘇科技大學(xué)自動化學(xué)院,江蘇 鎮(zhèn)江 212000)
水下機器人可以在極端情況下完成人工不能勝任的任務(wù)。水下目標(biāo)快速精準(zhǔn)檢測[1]是實現(xiàn)水下機器人高效作業(yè)的關(guān)鍵技術(shù)之一,廣泛應(yīng)用于漁業(yè)養(yǎng)殖[2]、海洋管道鋪設(shè)[3]等領(lǐng)域。
目前水下機器人目標(biāo)檢測算法大致分為2類:一類是基于回歸思想的單階段算法,以YOLO(You Only Look Once)系列算法[4]和RetinaNet算法[5]為主,具有較好的檢測精度和優(yōu)異的檢測速度;另一類是基于生成目標(biāo)候選框和標(biāo)簽的雙階段算法,以Fast R-CNN(Fast Region-based Convolutional Neural Network)算法[6]和Faster R-CNN算法[7]為主,其特點是檢測精度略高于單階段算法的但是檢測速度慢。上述算法都可以在水下復(fù)雜環(huán)境中對退化嚴(yán)重的低質(zhì)量圖像進行相應(yīng)的目標(biāo)檢測,且具備較好的檢測精度和檢測效果,但是其網(wǎng)絡(luò)模型參數(shù)量過大或者運算速度過慢,且均未使用到水下機器人進行實地檢測作業(yè)。水下機器人屬于嵌入式機器人,為了方便實地作業(yè),一般算力和內(nèi)存較小,難以滿足水下目標(biāo)檢測的硬件要求,故需要一種參數(shù)量少、模型結(jié)構(gòu)簡單且運算速度和精度都較好的目標(biāo)檢測算法。本文選取的RetinaNet算法屬于單階段算法,具備良好的檢測精度和檢測速度,算法結(jié)構(gòu)相對于雙階段算法結(jié)構(gòu)更加簡單,且對中小型目標(biāo)具有優(yōu)異的檢測效果。
現(xiàn)有的國內(nèi)外水下機器人目標(biāo)檢測算法更多專注于提升復(fù)雜環(huán)境中的檢測精度或者檢測速度。陳宇梁等人[8]提出快速空間金字塔池化模塊,解決了水下物體區(qū)分度低和特征損失嚴(yán)重的問題;提出了一種基于旋轉(zhuǎn)窗口的Swin-Transformer模塊,提高了小目標(biāo)的檢測能力。Wei等人[9]在YOLOv3模型中加入擠壓和激勵模塊,增大了檢測規(guī)模。強偉等人[10]用ResNet卷積神經(jīng)網(wǎng)絡(luò)代替SSD(Single Shot multibox Detector)的VGG(Visual Geometry Group)卷積神經(jīng)網(wǎng)絡(luò),再用深度分離可變形卷積替換原始卷積,以簡化網(wǎng)絡(luò)并提高其性能。上述衍生的改進算法具備較高的檢測效率和魯棒性,但是其復(fù)雜度過高,很難集成在水下機器人上。
綜上所述,為了實現(xiàn)輕量型模型在真實水下環(huán)境中對目標(biāo)快速、精確的識別,本文提出了改進DenseNet121-Deform-CBAM算法,在原有單階段的RetinaNet算法基礎(chǔ)上,利用深度分離可變形卷積的特點代替原始卷積,參考DenseNet121[11]的網(wǎng)絡(luò)結(jié)構(gòu),替換ResNet50;此外還引入了注意力機制模塊[12]提高對水下模糊目標(biāo)的提取性能,使得復(fù)雜水下環(huán)境中目標(biāo)檢測在保證檢測速度和準(zhǔn)確性的情況下,降低模型復(fù)雜度,減輕模型運行負(fù)擔(dān),從而進一步推動水下機器人的實用化進程。
原始RetinaNet的卷積會沿著卷積核的固定路線進行平移來確定檢測區(qū)間,并且池化層的池化比例固定不變。但是,當(dāng)檢測到形變較大的圖像時,仍然沿著固定軌跡機械地進行卷積運算會導(dǎo)致整體運算效率大大下降。
本文利用可變形卷積能夠減少網(wǎng)絡(luò)內(nèi)部計算量的優(yōu)點,替換原始卷積。改變每個卷積核的權(quán)重,增加卷積核的偏移量,以此改變卷積核的原始軌跡。如圖1所示,可變形卷積在采樣過程中,可對檢測區(qū)域的目標(biāo)位置進行適應(yīng)性改變,使得卷積核集中于有效感受域。
Figure 1 Comparison of activation units of standard convolution and deformable convolution圖1 標(biāo)準(zhǔn)卷積和可變形卷積激活單元對比
圖2為可變形卷積的學(xué)習(xí)過程。其中,K表示卷積采樣區(qū)域大小,N表示通道緯度。首先,輸入特征圖,通過原始卷積核進行卷積操作。其次,把原始卷積核的輸出作為可變形卷積所需要的偏移量,根據(jù)反向傳播原理,同步更新卷積核和偏移量。可變形卷積雖然可以提高模型結(jié)構(gòu)的適應(yīng)性和泛化能力,但是相對于原始卷積來說增加了參數(shù)量,并且一定程度上影響了模型的運行速度。
Figure 2 Learning process of deformable convolutional圖2 可變形卷積學(xué)習(xí)過程
針對可變形卷積增加了參數(shù)量,進而影響模型的運行速度的問題,本文采用深度分離卷積來提取特征,以減少參數(shù)量和運行成本。深度分離卷積示意圖如圖3所示。
Figure 3 Schematic diagram of deep separation convolution圖3 深度分離卷積示意圖
首先,輸入5×5×3彩色圖像,通過3×3的卷積核,由于逐通道卷積是在二維平面上進行,所以卷積核的數(shù)量與上層通道數(shù)一一對應(yīng)。生成3個特征圖,尺寸與輸入層的相同,均為5×5。然后,進行逐點卷積,根據(jù)上層通道數(shù)(3),設(shè)置卷積核尺寸為1×1×3,卷積核數(shù)量為4。對比傳統(tǒng)卷積,在同樣參數(shù)的情況下,傳統(tǒng)卷積需要3×3×3×4=108個參數(shù),而深度分離卷積僅需要3×3×3×1=27(逐通道參數(shù))加上1×1×3×4=12(逐點卷積)共計39個參數(shù)。
將深度分離卷積和可變形卷積結(jié)合構(gòu)成深度分離可變形卷積,大幅度減少了模型參數(shù),且同時增加了特征圖的維度,顯著提高了模型運行速度,增強了模型對于復(fù)雜環(huán)境的適應(yīng)能力。
原始ResNet的傳輸原理是建立前后層之間的連接。在ResNet傳輸過程中,前一層的結(jié)果作為后一層的輸入進行運算。但是,隨著網(wǎng)絡(luò)層數(shù)的增加,計算誤差逐漸增大,最后會產(chǎn)生梯度爆炸的問題。
DenseNet通過建立前后層的密切連接來促進訓(xùn)練過程中的梯度反向傳播,從而使得網(wǎng)絡(luò)的訓(xùn)練深度增加。在參數(shù)量和計算量更小的情況下,DenseNet具備比RetinaNet更加優(yōu)秀的性能。DenseNet模型結(jié)構(gòu)如圖4所示 。
Figure 4 Structure of DenseNet model圖4 DenseNet模型結(jié)構(gòu)
若干個Dense layer和Transition layer層組成DenseNet。DenseNet區(qū)別于RetinaNet之處是DenseNet每個層將前面所有層的信息整合后作為下一層的輸入,實現(xiàn)了特征重用。第i層DenseNet和ResNet的輸入和輸出之間的表達式分別如式(1)和式(2)所示:
ResNet:
xi=Hi(xi-1)+xi-1
(1)
DenseNet:
xi=Hi(x0,x1,…,xi-1)
(2)
其中,xi表示第i層的輸出;xi-1表示第i-1層的輸出;Hi(·)表示非線性變換,包含歸一化、激活函數(shù)和卷積3種操作。式(2)中的(x0,x1,…,xi-1)指的是將第i-1層的輸出與之前所有層的輸出進行連接。
注意力機制是一種聚焦于局部信息的機制。本文采用由通道注意力模塊CAM(Channel Attention Module)和空間注意力模塊SAM(Spatial Attention Module)串行形成的CBAM( Convolutional Block Attention Module)輕量級注意力模塊。通過多次更改CBAM模塊在模型中的位置,比較各項參數(shù),最后將CBAM模塊放在第1個卷積后。輸入圖像首先經(jīng)過DenseNet特征提取模塊進行圖像特征提取,之后將具有不同分辨率的特征信息傳入到CBAM模塊,先在CAM模塊中將輸出的特征信息(4×4×256)進行最大池化和平均池化操作,得到2個1×1×256的通道特征提取后的圖像特征信息,然后將這2個特征圖分別輸入多層感知器MLP(MultiLayer Perceptron),得到2個1×1×256特征向量,最后通過Sigmoid激活函數(shù)獲得通道注意力權(quán)重Mc。而SAM模塊的輸入則需要先乘以Mc,然后依次進行最大池化和平均池化操作,通過池化層操作后輸出特征信息,再通過3×3卷積核進行拼接,最后通過Sigmoid激活函數(shù)獲得空間注意力權(quán)重Ms。經(jīng)過CAM模塊輸出的特征信息再乘以Ms即得到經(jīng)過聚焦于關(guān)鍵目標(biāo)信息后的增強特征。
本文實驗環(huán)境如下:Windows 11操作系統(tǒng),NVIDIA?GeForce?RTXTM3090 Ti顯卡,開發(fā)工具為PyCharm,編程語言為Python,環(huán)境配置為Python 3.9、CUDA11.6和PyTorch框架?;A(chǔ)參數(shù)設(shè)定如表1所示。
Table 1 Basic parameters setting
由于圖像是在真實的海洋環(huán)境中拍攝,受到水質(zhì)、光線等多方面因素的影響,所以圖像存在對比度低、失真和模糊等明顯的質(zhì)量退化問題,并且水下環(huán)境復(fù)雜,還包含很多干擾目標(biāo)(珊瑚、其余魚類等),故本文采用水下圖像融合來對水下圖像進行恢復(fù)和增強。
本文的圖像融合算法結(jié)合了自適應(yīng)直方圖均衡化和多尺度融合算法。先對原圖進行灰度世界和白平衡處理,由于水下圖像光線質(zhì)量差,圖像中存在亮暗不均的問題,所以對處理好的圖像的亮通道進行自適應(yīng)直方圖均衡化操作。其次,為了得出質(zhì)量最佳的水下圖像,本文均衡化圖像后再進行基于幾種權(quán)重的多尺度融合處理。幾種權(quán)重介紹如下。
(1)拉普拉斯對比度權(quán)重▽2f(x,y):該權(quán)重用于擴展景深,對圖像邊緣和紋理賦予較大權(quán)重值,詳細(xì)公式如式(3)所示:
(3)
拉普拉斯對比度權(quán)重通過計算亮度通道的拉普拉斯濾波絕對值來估算全局對比度。
(2)顯著性權(quán)重Ws:本文利用顯著性估計器估計圖像中水下生物的顯著性水平,加強明暗區(qū)域的對比度。計算公式如式(4)所示:
Ws=Iμ-Iω
(4)
其中,Iμ表示Lab色彩通道的平均值,Iω表示Lab通道在進入高斯濾波后的結(jié)果。
(3)飽和度權(quán)重Wsat:該權(quán)重用于增強融合算法適應(yīng)彩色圖像中高飽和度信息的能力。詳細(xì)公式如式(5)所示:
(5)
其中,Rk、Gk和Bk分別表示RGB通道中在第k個像素點的亮度值,Lk表示第k個像素點的亮度標(biāo)準(zhǔn)值。
(4)曝光權(quán)重WE:該權(quán)重用于反映圖像中像素的曝光程度,此權(quán)重與平均歸一化范圍值(0.5)的距離成反比。距離中間值越近,權(quán)重值越大,反之則越小。具體公式如式(6)所示:
(6)
其中,Ik(x,y)表示圖像中當(dāng)前點的像素值;σ表示標(biāo)準(zhǔn)差,本文設(shè)為0.25。權(quán)重值過大,說明圖像出現(xiàn)了過曝或曝光不足的問題。
最后本文通過多尺度融合算法進行圖像融合。R(x,y)是對每個像素點(x,y)的4種權(quán)重進行融合,具體公式如式(7)所示:
(7)
圖像增強效果如圖5所示。
Figure 5 Image contrast with and without enhancement圖5 增強前后圖像對比
本文實驗采用URPC(Underwater Robot Professional Contest)數(shù)據(jù)集,并在網(wǎng)絡(luò)上收集海膽、海星、海參和扇貝4類圖像作為擴充數(shù)據(jù)集,共計6 000余幅。4種類別的圖像呈現(xiàn)不均勻分布。20%為測試集,80%為訓(xùn)練集,再將訓(xùn)練集以8∶2劃分為訓(xùn)練子集和驗證子集。
本文采用平均精度AP(Average Precision)、全類平均精度mAP(mean Average Precision)以及幀率FPS(Frame Per Second)綜合評價目標(biāo)檢測算法的性能。
(1)AP指標(biāo)用來評價單個類型的檢測精度,計算公式如式(8)~式(10)所示:
(8)
(9)
(10)
其中,R(Recall)表示召回率,表示正樣本中成功被檢測出來的樣本占比;P(Precision)表示檢測精度,用于表示預(yù)測為正的樣本數(shù)在真實正樣本數(shù)中的占比;TP表示檢測為正、實際為正的正樣本數(shù)量,FN表示檢測為負(fù)、實際為正的正樣本數(shù)量。
(2)mAP指標(biāo)用來綜合評價算法的檢測精度,計算公式如式(11)所示:
(11)
mAP指標(biāo)是對每個類別的AP指標(biāo)進行求和取平均,式中C表示數(shù)據(jù)集類別總數(shù),c表示其中的某一類別。
(3)FPS指標(biāo)表示每秒傳輸幀數(shù),用來評價算法的檢測速度。
為了評價本文改進算法,對改進算法與原始RetinaNet算法的檢測精度和檢測速度等方面進行比較。實驗結(jié)果如表2、表3和圖6所示。
Table 2 Comparison of AP values of the improved algorithm and the original RetinaNet algorithm
Table 3 Comparison of other parameters between the improved algorithm and the original RetinaNet algorithm
Figure 6 Comparison of detection results of algorithms with and without improvement圖6 改進前后算法檢測結(jié)果對比
從表2和表3可以看出,本文改進算法對于4種類別的水下目標(biāo)檢測效果都明顯優(yōu)于原始RetinaNet算法的,對海膽、海參、海星和扇貝的AP分別提升了9.8%,15.9%,9.9%和11.1%,mAP提升了11.1%。一方面水下環(huán)境復(fù)雜,干擾多,另一方面水下檢測目標(biāo)存在遮擋和粘連等現(xiàn)象,原始RetinaNet算法對于這類目標(biāo)檢測能力有限,而改進算法經(jīng)過一定的優(yōu)化,對于模糊和存在遮擋的目標(biāo)具備更強的檢測能力。
從圖6來看,原始RetinaNet算法并不能很好地處理水中模糊或者特征類似的物體,對于小目標(biāo)存在一定的漏檢和誤檢問題。改進算法則解決了上述問題。
為了驗證本文提出的融合改進RetinaNet和注意力機制的水下目標(biāo)檢測算法DenseNet121-Deform-CBAM的性能,在保持其他條件不變的情況下,分別對RetinaNet、Fast R-CNN和YOLOv4 3種主流算法進行對比實驗。實驗結(jié)果如表4所示。
Table 4 Comparison of experimental results among mainstream algorithms
從表4可以看出,改進算法的mAP可達81.9%,相對于其他3種主流算法的提升明顯,說明改進算法對于水下目標(biāo)檢測具有一定的優(yōu)勢,可以提升檢測精度。
圖7是不同算法對于相同復(fù)雜水下圖像的處理結(jié)果。從圖7可以看出,原始RetinaNet算法對于粘連目標(biāo)和小目標(biāo)存在一定的漏檢情況,并且置信度較低。相對于Fast R-CNN 和YOLOv4算法,本文改進算法的檢測效果也有所提高,利用深度分離可變形卷積大幅降低了算法復(fù)雜度,減少參數(shù)量,使得運算速度加快,在保證準(zhǔn)確率和低誤檢率的同時,更快地檢測出了更多的目標(biāo)。而本文引入CBAM模塊和改進模型結(jié)構(gòu)則有效地解決了漏檢的問題,提高了對目標(biāo)物體的專注度。除此以外,從參數(shù)量來看,改進算法的參數(shù)量(Parameters)小于其他3種算法的,其原因是采用的深度分離可變形卷積代替原始卷積極大地減少了計算量和參數(shù)量,說明DenseNet121-Deform-CBAM是一種相對輕量型的模型。推理速度方面也有一定的提升,相較于大部分對比算法而言提升幅度不大,總結(jié)原因是算法復(fù)雜度雖然比對比算法有所降低,但是算法模型仍具備一定程度的參數(shù)量。
Figure 7 Detection results of different algorithms圖7 不同算法的檢測結(jié)果
為了更加準(zhǔn)確地驗證改進算法的性能,本節(jié)對改進后的算法通過疊加不同的模塊進行消融實驗。從模型大小Modelsize、參數(shù)量Parameters、全類平均檢測精度mAP和檢測速度FPS等性能指標(biāo)進行對比分析,實驗結(jié)果如表5所示。第2組實驗在第1組實驗基礎(chǔ)上用DenseNet121網(wǎng)絡(luò)替換了ResNet50網(wǎng)絡(luò),保持其他條件不變。這時算法模型大小和參數(shù)量分別為154.8 MB和45.9 MB,mAP提高了5.5%,檢測速度提高了0.8 f/s,FPS的明顯下降。這是因為DenseNet121要比ResNet50的復(fù)雜度低很多,有效地減少了計算量和參數(shù)量,且DenseNet121提高了特征的傳播和利用效率,減輕了梯度消失現(xiàn)象。第3組實驗和第2組實驗結(jié)果對比,第3組實驗用深度分離可變形卷積代替原始卷積層。這時模型大小和參數(shù)量分別為155.9 MB和34.5 MB,mAP為79.6%,檢測速度提高了1.2 f/s。值得一提的是,使用深度分離可變形卷積后,最明顯的特點是參數(shù)量大幅下降,算法模型變得更加輕量化,即使具備更少的訓(xùn)練參數(shù),速度也有一定程度的提高。第4組在第3組的基礎(chǔ)上增加了CBAM模塊,這時模型大小和參數(shù)量分別為170.2 MB和56.8 MB,檢測速度小幅上升了1.8 f/s,但是平均檢測精度增加了2.3%,說明添加了CBAM模塊之后增加了算法復(fù)雜度,對運行速度也存在一定的影響,但CBAM模塊串行了空間注意力和通道注意力,抑制了無效信息,增強了有效信息,從而加強了網(wǎng)絡(luò)的魯棒性,提升了多尺度目標(biāo)的檢測能力,所以mAP值上升明顯。
Table 5 Results of ablation experiments
圖8為實驗過程中損失值函數(shù)曲線的變化趨勢。從圖8可以看出,由于加入了不同作用的模塊,損失值函數(shù)曲線也發(fā)生了相應(yīng)的變化,在前50輪左右的損耗相差不大,但是改進后的網(wǎng)絡(luò)模型參數(shù)量較小,較為容易訓(xùn)練,損失函數(shù)值收斂速度加快。
Figure 8 Loss values of different combination modules in ablation experiments圖8 消融實驗中不同組合模塊的損失值
本節(jié)在實驗室水池環(huán)境中進行水下機器人目標(biāo)檢測和海參抓取實驗。水下機器人實物圖如圖9 所示。
Figure 9 Picture of underwater robot圖9 水下機器人實物圖
機器人裝載三自由度機械手、網(wǎng)絡(luò)攝像機和推進器等硬件設(shè)備。實驗場地為人工水池。抓取實驗中,水下機器人先對網(wǎng)絡(luò)攝像機采集的水下目標(biāo)圖像進行圖像優(yōu)化,然后根據(jù)本文改進RetinaNet算法精準(zhǔn)識別圖像中仿真海參位置。通過計算出機械臂在空間坐標(biāo)系位置,利用視覺伺服控制算法移動機械臂至海參模型位置,完成海參抓取任務(wù)。
圖10為水下機器人進行水下抓取實驗的實驗流程,實驗對象為水下仿真海參,總共進行300次抓取實驗,抓取成功的次數(shù)為276次,抓取準(zhǔn)確率為92%,平均抓取時間為7.2 s,水下目標(biāo)檢測與抓取效果較好。
Figure 10 Grasping experiment of underwater robot圖10 水下機器人抓取實驗
此外,為了驗證本文改進算法在真實環(huán)境中對比其他3種算法的優(yōu)勢,其他3種算法也進行人工水池中的抓取實驗。實驗條件中僅改變水下機器人加載的檢測算法,不改變其余條件,實驗結(jié)果如表6所示。
Table 6 Experimental results of different algorithms for grasping in artificial water tank
從表6可以看出,在檢測速度方面,大部分算法的檢測速度小幅低于改進算法的;在抓取準(zhǔn)確率方面,改進算法抓取準(zhǔn)確率精度高達92%,明顯高于其余對比算法的。
在自然水域中,水質(zhì)較差,且相對于人工水池來說背景更復(fù)雜,目標(biāo)與環(huán)境對比差別較小,識別目標(biāo)與水底泥沙顏色相近。采集的圖像質(zhì)量較差,顏色整體偏藍綠色。為驗證自然水域中水下機器人目標(biāo)識別效果及本文所提算法的有效性,本節(jié)在同一自然水域下的不同地點進行目標(biāo)識別檢測實驗。首先放置部分目標(biāo)假體,岸邊控制水下機器人進行水下巡游,部分實驗圖像和檢測結(jié)果如圖11所示。
Figure 11 Underwater target detection experimental results in natural environment圖11 自然水域目標(biāo)檢測實驗結(jié)果
實驗過程中,水下機器人運轉(zhuǎn)正常,通信穩(wěn)定,運行幀率保持在15~20 f/s。檢測準(zhǔn)確率為86.3%,平均檢測時間為10.6 s。幾種類別的目標(biāo)均可以被檢測到,但是部分性能指標(biāo)存在小幅下降的情況,原因可能為除水體質(zhì)量影響了水下機器人識別以外,部分檢測過程中泥沙揚起或者是水草遮擋影響了機器人目標(biāo)識別??傮w而言,本文提出的算法仍具備較高的可行性,可以滿足自然水域中高效作業(yè)的需求。
針對水下圖像質(zhì)量差導(dǎo)致目標(biāo)特征信息提取困難和目標(biāo)漏檢等問題,本文提出了一種融合改進RetinaNet算法和注意力機制的水下目標(biāo)檢測算法DenseNet121-Deform-CBAM。在原有單階段的RetinaNet算法基礎(chǔ)上,利用深度分離可變形卷積代替原始卷積,降低了算法復(fù)雜度,減少了模型計算量;用DenseNet替換ResNet,增加模型的訓(xùn)練深度,解決梯度爆炸問題;最后,引入CBAM模塊,集中網(wǎng)絡(luò)注意力,關(guān)注有效信息,增強算法對水下模糊目標(biāo)的提取性能,提升算法對水下多尺度目標(biāo)的檢測能力。實驗結(jié)果表明,本文所提出的算法對于復(fù)雜環(huán)境中的水下目標(biāo)檢測具備優(yōu)異的檢測能力。