蔡啟烈 王 強
武漢理工大學交通與物流學院 武漢 430063
無人艇作為一種水上自主航行器,具有體積小、質量輕、靈活適應各種水上環境等特點,在港口碼頭巡邏、海上環境監測等領域有廣泛應用前景。無人艇的功能核心是能實時感知復雜多變的水上環境并進行自主導航,避開船只、暗礁等障礙物。水上障礙物檢測作為環境感知的關鍵能力,對無人艇避碰和自主導航都有重要影響,只有實時、精準的檢測到水上障礙物,無人艇才能對周圍環境及時做出反應,避免發生碰撞。
在現階段障礙物檢測方法中,基于視覺的圖像語義分割算法能對障礙物進行精準的像素級檢測,正得到愈加廣泛的研究,并逐步應用到水上障礙物檢測中。Cane T 等[1-4]首先研究了SegNet、ESPNet、ENet 等數種語義分割網絡在水上障礙物檢測中的表現;Kim H 等[5]設計了基于視覺的實時水上障礙物檢測算法,將語義分割網絡應用到水上障礙物檢測中,但是該算法并未采用大型數據集評價;為了評價經典的語義分割網絡在水上障礙物檢測的效果,Bovcon B 等[6-9]在Master1325 數據集上對經典網絡PSPnet、Unet、DeepLabv2 等進行訓練,之后在大型海洋數據集MODD2 上進行評價,結果顯示經典的語義分割網絡對動態水面的分辨力不夠,對水中小型障礙物的檢測能力有待提高,整體檢測精度不高;為了改進經典語義分割網絡在水上障礙物檢測上的不足,Bovcon B 等[10]針對水面特性提出了WaSR 網絡結構,該結構融入了IMU 傳感器信息,編碼部分采用Resnet50 作為主干特征提取網絡,檢測精度超過各類經典網絡,但是WaSR 網絡模型較大,推理速度較慢;Yao L 等[11]基于Unet 中規整的編碼-解碼架構設計了Shoreline-Net 網絡,該網絡采用輕量化的Bottleneck 結構進行下采樣,相比于WaSR 和大部分經典語義分割網絡,Shoreline-Net 模型推理速度更快,在水上障礙物檢測中實時性更高,但是網絡對于水上特征提取不足,檢測精度較低。
從上述情況可以知,現有針對水上障礙物檢測的語義分割算法難以同時滿足檢測實時性和精度的要求。因此,本文提出一種基于改進PSPnet 框架的水上障礙物檢測算法,該算法以PSPNet 中的金字塔池化架構作為整體框架,采用Mobilenetv2[12]中的輕量化結構Bottleneck 作為主干特征提取網絡,減少網絡參數,提高水上障礙物檢測速率。在精度上考慮到水上經常出現大霧和強光,導致障礙物變得難以檢測,同時也存在大量波紋、倒影干擾的特點,本文主要采取加強特征提取和提高分辨力的策略。本文在PSPnet 中引入ASPP(Atrous Spatial Pyramid Pooling)結構,該結構中的多尺度膨脹卷積能增大卷積核對特征圖的感受野,從而加強對圖像上下文特征信息提取,使得網絡在大霧、強光環境中提取到更多的圖像特征;改進 Focal Loss[13]損失函數,進一步增大圖像中難以檢測部分的損失值,提高網絡對波紋、倒影等干擾的分辨力。
本文引用改進PSPNet 框架進行活體人臉檢測的整體流程如圖1 改進PSPnet 框架檢測流程所示,輸入圖像大小為224×224,經過Bottleneck 層后,將特征圖數據提取為28×28×192 大小特征向量,傳入PSPnet 中的多金字塔池化結構和ASPP 結構并行提取圖像的多尺度特征,最后特征圖經過雙線性差值上采樣映射回原圖大小,完成水上障礙物的語義分割,輸出圖像被分割為天空、障礙物、水3 個類別,分別用掩碼0、1、2 表示。

圖1 改進PSPnet 框架檢測流程
MobilenetV2 與傳統CNN 卷積網絡的區別之一就是該框架采用的是Depthwise Separable 卷積方式,替代了傳統的CNN 的卷積方式,用單通道卷積層進行卷積操作(DW 卷積),之后用1×1 大小的卷積核進行維度擴展(PW 卷積)。Depthwise Separable 卷積方式如圖2 所示。

圖2 Depthwise Separable 卷積方式
采用Depthwise Separable 卷積方式,導致卷積過程中特征圖維度較低,需要先用1×1 卷積核進行擴維,最后用1×1 卷積核進行降維操作,即倒殘差(Bottleneck)結構,如圖3 所示。

圖3 Bottleneck 結構
PSPnet 的主干特征提取網絡是Resnet50,Resnet50采用CNN 卷積方式,參數量大,本文將Resnet50 替換為Bottleneck 層,用來減小模型參數,使得整體框架更為輕量,Bottleneck 層整體如表1 所示。

表1 Bottleneck 層結構
表1 中Operator 表示卷積方式,t為Bottleneck 層中擴維的倍率因子,c為輸出特征圖的維度,n為當前層循環次數,s為步距,a 表示是否使用SE 模塊。
對于步距為2 的卷積層,為避免損失更多特征信息,需加入SE 模塊,根據SE 模塊生成的不同權重保留更多有效信息。
如圖4 所示,SE 模塊中的Global Pool 表示全局池化,FC1 和FC2 表示全連接層,Relu 表示使用Relu 激活函數。SE 模塊將輸入的特征圖數據經過全局池化,然后經過2 個全連接層生成每張特征圖的權重,最后對步距為2 的Bottleneck 層進行加權處理,以保留更多有效信息。FC2 層后的Hard-Sigmoid[14]激活函數有效擬合了Sigmoid 激活函數,但是減少了Sigmoid 激活函數帶來的復雜計算。Hard-Sigmoid 激活函數為

圖4 SE 模塊
在圖1 中,Bottleneck 層生成的特征圖大小為28×28×192,同時傳入PSPnet 中多金字塔池化結構和ASPP 進行多尺度的特征提取,多金字塔池化結構如圖5 所示。

圖5 多金字塔池化
由圖5 可知,多金字塔池化就是使用1×1、2×2、3×3、6×6 大小的池化核對輸入特征進行多尺度池化下采樣操作,最后對特征圖進行上采樣。相比于池化下采樣,多尺度池化可以最大程度減小因池化產生的信息丟失,在一定程度上增大網絡特征提取能力。
在水上障礙物檢測中,波紋和、水上倒影、強光和大霧天的干擾會給障礙物的分割造成很大影響,大霧和強光在水上障礙物檢測環境中時常遇到,尤其是大霧干擾,會讓周圍障礙物難以檢測,碰撞風險大幅增加,故增強網絡抗干擾性是提高網絡檢測準確率的關鍵。同時,在水上也存在很多諸如暗礁類的小型障礙物,難以檢測。無論是霧天中的障礙物還是小型障礙物,難以檢測都是因為提取不到足夠的上下文特征信息,網絡模型難以分辨霧天障礙物和小型障礙物,故在水上障礙物檢測過程中必須加強對圖像上下文特征信息的提取。
增大圖像感受是加強圖像特征信息提取的有效方式,感受野是特征圖像在原圖中的映射范圍,感受野越大,則特征圖在原圖像中的映射區域越大,也能獲取到更多的上下文特征信息。感受野計算為
式中:lj為第j層特征圖的感受野,lj-1為第j-1 層的感受野,fj為第j層卷積核的尺寸,si為第i層的步長。
若使用CNN 的卷積方式,在不進行下采樣的情況下要獲得224×224 圖像的全局感受野,在卷積核為3×3 大小的情況下,至少要進行100 多層CNN 卷積,使得計算量大幅增加。
為了不大幅增加計算量的情況下增大圖像感受野,本文決定引入ASPP 結構,既可以加強圖像特征提取,又能進一步減少因多金字塔池化結構中池化操作產生的信息丟失,ASPP 結構如圖6 所示。

圖6 ASPP 結構
ASPP 結構中采用多尺度膨脹卷積,膨脹卷積又稱為空洞卷積,能在卷積核內填充空洞元素,使得卷積核擴張,從而具有更大的感受野,膨脹卷積中膨脹率的選取十分重要,膨脹率過大,在進行卷積過程中,會丟失掉重要的特征信息,過小又會使得圖像推理速度變慢,本文中為了加強特征提取能力,將膨脹率分別設置為2、4、6。
在深度學習中,交叉熵損失函數因為計算簡單,能夠讓模型有較好的學習效果,在各種障礙物檢測網絡中被廣泛使用,交叉熵損失函數為
式中:p為預測樣本為1 的概率;y為真值標簽,在此標簽類別只有0 或1,可以通過獨熱碼將水上障礙物的標簽類別都轉換為0 或1 的形式;CE(p,y)為求出的損失值,因p∈[0,1),故損失值CE(p,y)≥0,且根據對數函數的特性,p越小損失值越大、p越大損失值越小,這就使得在分類正確的情況下,損失值較小,而分類錯誤就會具有較大的損失值。
交叉熵損失函數雖然計算簡單,模型優化效果較好,但在實際障礙物檢測過程中,仍然存在不能對正負樣本加權使得正負樣本均衡化、對難以檢測的樣本區分度不明顯的缺點。
在水上障礙物檢測過程中,正樣本就是水上障礙物,負樣本是水面環境。因在水上環境中障礙物占少數,而水面占多數,同時也占了Loss 中的大部分,使用交叉熵損失函數求解時,大部分像素的損失值都是水面環境的損失值,而障礙物像素所占的損失值較少。這會使得模型的優化方向并沒有完全關注到障礙物檢測的精度方向。同時,在水上障礙物檢測過程中,會出現大量倒影的干擾,使得倒影和真實障礙物難以分別,而交叉熵損失函數并不能對難以檢測的部分增加關注程度,導致交叉熵損失函數在水上障礙物檢測過程中效果并不理想。因此,本文決定采用對交叉熵損失函數加權處理后的Focal Loss(即FL)作為損失函數,即有
式中:α用于控制正負樣本權重,在水上障礙物檢測時,負樣本出現的頻次多,α用來降低負樣本的權重,考慮到本文選用的訓練集中正樣本在總體樣本數中占比較小,本文將α設置為0.25;(1-pt)γ稱為調制系數,主要用于控制難以檢測樣本和檢測難度較易樣本的權重,其中γ是一個常數。
在水上障礙物檢測過程中,考慮到水中會出現大量倒影,存在大量難以檢測的樣本,本文決定改進FL,使得針對難以檢測樣本的損失值進一步增大,改進的FL可表示為
在FL中,(1-pt)的指數γ是個常數,并不能隨著正樣本預測概率pt的變化而變化。因此,針對不同場景的適應性較差,本文將γ改為-log(1-pt)曲線,該函數在p∈[0,1)區間的圖像如圖7 所示。

圖7 -log(1-pt)曲線
圖7 中,y=-log(1-pt)在[0,1)區間內單調遞增,因為(1-pt)<1,隨著pt趨于1,(1-pt)-log(1-pt)是不斷減小的,導致整個函數值也不斷減小。FL與改進后的FL在區間pt∈[0,1)的函數如圖8 所示。

圖8 損失函數對比
圖8 為損失函數對比,橙色曲線為FL,藍色曲線為改進后的FL(Imporved Focal Loss),從圖中可以看出,FL和IFL均隨著pt的增大而單調遞減,且對于難以檢測的樣本(pt<0.5),IFL明顯比FL具有更高的損失值,IFL對難以檢測的樣本比FL具有更高的關注度。
在深度學習中,為使得損失函數的值盡可能地小,最小化損失函數值的過程稱為最優化,實現最優化流程的方法稱為優化器。本文定采用SGD 優化器[15],動量參數選為0.9,使得模型在驗證集上能更快地收斂,采用SGD 的權重優化方式為:
設一個批次為b張數據,則每個批次的平均梯度損失值為
權重參數更新項v為
權重參數w更新為
式中:β為動量因子;α為學習率,根據批次大小,學習率設置為0.000 5。
為了研究本文設計算法對水上障礙物的檢測精度以及對岸線檢測精度,決定開展數據集評價實驗。選用目前標注最精準的海洋環境語義分割數據集Master1325作為訓練集進行訓練,選用數據集MODs 作為評價集進行數據集評價實驗,分析網絡模型在數據集上的表現。
本文訓練時采用的硬件平臺為x86 架構,GPU 采用NVIDIA Telsa K80,CPU 采 用Intel Xeon E5-2678 v3,主頻2.5 GHz,RAM 為8 Gb。軟件平臺為Linux操作系統,深度學習環境為Pytorch1.8.1,Cuda 版本。
Master1325 數據集是目前人工標注最為精準的海洋語義分割數據集,內含1 325 張海洋環境圖像,圖像尺寸為1 278×958×3;1 325 張標注的標簽圖像,圖像尺寸為1 278×958×1,因為標簽中將天空、障礙物、水分別表示為0、1、2,所以標簽中圖像深度為1,每一個像素值都代表對應的分割種類,如圖9 中Master1325圖像示例。

圖9 Master1 325 圖像示例
考慮到訓練集僅有1 325 張圖像,難以滿足訓練過程中對數據量的需求,本文決定對Master1325 數據集進行圖像增強,首先對圖像進行鏡像處理,之后再對圖像進行旋轉,將訓練集由1 325 張增強到了26 500 張,使得訓練集的泛化性大幅提高,可用于模型訓練。
MODs 是Boconvn 等制作的最具海洋環境代表性的水上障礙物檢測數據集[16],如圖10 中MODs 示例。圖像共有94 個序列,其中含有8 175 張被標注圖像,而且標簽也經過專家審核,是標注十分精確的海洋環境數據集。因其包含94 個海洋環境序列,故圖像檢測十分具有挑戰性。同時MODs 中對數據集中的環境進行了危險區域的劃分,用于評價無人艇航行時在危險區域內的障礙物檢測精度,可以進一步對語義分割網絡的性能進行更為細致的評價。

圖10 MODs 示例
MODs 是將攝像頭放在無人艇上,沿歐洲斯洛文尼亞海岸采集。在MODs 中,將圖像中距離無人艇15 m以內的區域劃為危險區域,MODs 認為,無人艇航行較慢,危險區域內的障礙物需要重點關注。在MODs 評價實驗中,本文不但分析了所設計算法在MODs 上的整體表現,同時分析了危險區域內的障礙物分割效果。
在水上障礙物檢測過程中,本文用F-measure衡量本文設計算法在評價集上的障礙物檢測精度,F-measure的計算公式為
式中:TP為預測正確的正樣本數量,FP為將負樣本預測成正樣本的數量,FN為預測錯誤的負樣本數量。
本文中正樣本是水上障礙物,負樣本是水面。F-measure越大,則預測正確的水上障礙物數量越多,模型檢測精度就越高。
為了驗證本文算法的實時性和精度,本文將僅采用Bottleneck 層進行主干特征提取的網絡設為Baseline,Baseline 采用FL損失函數,之后保持其他不變,依次添加ASPP 和改進FL損失函數,即改進PSPnet 算法,同時與PSPnet 網絡形成對照,如表2 所示。

表2 消融實驗對照表
首先在增強后的Master1325 數據集上對Baseline、Baseline+ASPP 已經完整的改進PSPnet 網絡訓練10 個Epoch,訓練完成后分別選取表現最好的模型在MODs上進行評價,整體精度F-measure評價結果如表3 所示。

表3 消融實驗F-measure 對比
表3 中Pr 為精確率,Re 為召回率,如式(11)、式(12)所示,即
TPr 和FPr 分別表示每100 張預測中TP和FP的平均數量,F-measure為檢測精度。表3 中PSPnet 和Baseline 僅是主干特征提取網絡不相同。可以看出,將主干特征提取網絡由Resnet50 改為Bottleneck 層后F-measure有所下降,可以看出Resnet50 特征提取能力比本文設計的Bottleneck 層要強,但是引入ASPP 結構后,F-measure得到了大幅度提升,證明通過增大感受野的方式加強特征提取是有效的,本文算法的F-measure最高,達到了86.8,TPr 和FPr 均得到改善,可以證明使用改進FL損失函數訓練的模型比FL訓練出的模型具有更強的水上障礙物分辨能力。
由消融實驗可以證明本文算法中通過ASPP 結構增大感受野和使用改進FL損失函數訓練模型的有效性,為了能更清楚的分析改進PSPnet 網絡在水上障礙物檢測精度和實時性上的優缺點,與目前世界上各個經典網絡進行對比,其結果如表4 所示。

表4 MODs 精度對比
MODs 數據集是用無人艇采集的,將距離無人艇15 m 以內的區域定義為危險區域,在實際航行過程中,危險區域內障礙物的分割精度更為重要,本文同時對各個網絡在危險區域內障礙物的檢測精度進行對比,如表5 所示。

表5 危險區域檢測精度對比
由表4、表5 可知,危險區域內障礙物檢測具有更大難度,大部分網絡在危險區域內的檢測精度較低。這是由于數據集拍攝過程中,危險區域內小型障礙物居多,而大型船只等都在較遠處,由此更能看出各網絡對于較小障礙物和難以檢測障礙物的分辨能力,表中PSPnet在MODs 上整體精度表現達到78.9,但是在危險區域內僅有37.9,證明PSPnet對于小型障礙物檢測精度較差,而本文算法在危險區域內障礙物檢測精度達到了81.1,僅次于WaSR,進一步證明了本文針對水上特性采取策略的有效性。
影響無人艇水上障礙物檢測能力的另一個重要因素就是實時性,無人艇承載能力有限,為了保證其靈活性,不能放入大型計算設備。因此,在有限的算力下具有更快的圖像推理速度,保障無人艇水上障礙物檢測實時性十分重要,本文選取算力平臺NVIDIA GTX 2080Ti,研究各個網絡的圖像推理速度,如表6 所示。

表6 圖像推理速度分析
在表6 中,PSPnet 采用Resnet50 作為主干特征提取網絡,模型大小為56 Mb,遠高于本文算法模型,推理速度較慢。WaSR 雖然水上障礙物檢測精度最高,但是在GPU 算力平臺GTX2080Ti 上的單張圖像推理時間達到了63.9 ms,是本文算法的4 倍,而且模型體積較大,達到了84.6 Mb,此外WaSR 采用了與IMU 進行多傳感器融合的方式檢測,檢測成本昂貴;而本文算法模型僅有15.1 Mb,占用內存較小,且單張圖像推理時間僅有16.4 ms,完全滿足無人艇對于實時性的要求。
由上述分析可知,本文算法不但檢測精度高,而且圖像推理速度快,即使是在成本較低廉的算力平臺2080Ti 上,單張圖像推理速度依然達到16.4 ms 每張,即61 fps,實時性較高。因此,即使與目前國內外最經典的分割網絡相比,本文算法在MODs 數據集上依然具有非常突出的表現,是針對水上障礙物檢測領域有效的語義分割網絡。
本文針對無人艇水上障礙物檢測提出了一種語義分割算法,該算法基于改進的PSPnet 框架,采用Bottleneck 結構進行主干特征提取。同時,針對水上經常出現大霧、強光和大量波紋,倒影的干擾,本文分別采取了增大感受野加強特征提取,和改進FL損失函數提高網絡分辨力的策略。最后實驗結果表明,本文所提出策略能有效提高水上障礙物檢測精度,本文算法在MODs 數據集上檢測精度F-measure達到了86.8,危險區域內F-measure為81.1,同時在2080Ti 平臺上圖像推理速度達到了61 fps,無論是在檢測精度還是實時性方面都有十分突出的表現。然而,本文與WaSR 網絡相比,檢測精度仍有所欠缺,可以證明本文算法的特征提取能力仍需增強,下一步研究中,將進一步增大圖像感受野,提高網絡的特征提取能力,提高對于水上障礙物的檢測精度。