周薇娜, 丁豪文, 周 穎
(上海海事大學(xué) 信息工程學(xué)院,上海 201306)
在海事搜救、海上交通管理、無人船等海事重要應(yīng)用領(lǐng)域,弱小船舶目標(biāo)的實時檢測極為重要,其直接影響監(jiān)控系統(tǒng)的性能。但弱小船舶目標(biāo)由于目標(biāo)的面積小,可利用信息少,且易受海上復(fù)雜多變的天氣環(huán)境影響等噪聲干擾,使得常見的針對普通視覺目標(biāo)的檢測算法難以達到令人滿意的結(jié)果,可靠性和實用性均較差。
常用的目標(biāo)檢測算法根據(jù)傳感源的不同可以分為紅外目標(biāo)檢測和可見光目標(biāo)檢測。隨著可見光傳感器的分辨率越來越高,成本越來越低廉,在絕大多數(shù)情況下,可見光目標(biāo)檢測具備更多的優(yōu)勢??梢姽饽繕?biāo)檢測方法依據(jù)算法的出現(xiàn)時間又可分為傳統(tǒng)方法和基于深度學(xué)習(xí)的方法。傳統(tǒng)目標(biāo)檢測算法中閾值分割類算法[1]適合背景較為單一的圖像,在背景比較復(fù)雜的情況下效果并不理想。特征匹配類算法[2-8]通過滑動窗口進行特征提取,將提取到的特征用分類器分類,提取的特征包括SIFT、HOG和Haar等,常用的分類器有SVM、Adaboosting和RF等。但是這種滑動窗口的區(qū)域選擇策略沒有針對性,計算量特別大,手工設(shè)計的特征取樣器也沒有很好的魯棒性?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法近年來在計算機視覺任務(wù)方面取得了重大突破[9-11],其檢測精確度明顯優(yōu)于傳統(tǒng)檢測方法?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法大致可分為兩類。一類是先得到候選區(qū)域再對候選區(qū)域進行分類和邊框回歸,經(jīng)典的基于候選區(qū)域的目標(biāo)檢測算法有R-CNN、Fast R-CNN和Faster R-CNN等[12-14],該類算法計算量大,無法達到實時檢測目標(biāo)的要求;另一類是直接用回歸方法預(yù)測邊界框,只需要在輸入的圖像上產(chǎn)生確定數(shù)目的候選窗口,然后對這些候選窗口進行判別,比較典型的算法有YOLO(you only look once)[15]和SSD(single shot multibox detector)[16]。SSD算法雖然檢測精度較高,但是檢測速度對設(shè)備要求較高。文獻[17]的研究表明,YOLO算法能夠在保持與SSD同等級別檢測精度的前提下大幅度提高目標(biāo)檢測速度。YOLO算法從另一個思維角度解決了候選區(qū)域選擇的問題,使目標(biāo)檢測的精確度和速度進入一個新高度的研究層次。然而對于弱小目標(biāo)而言,由于小目標(biāo)的特征少,而深度學(xué)習(xí)計算量又較大,基于YOLO的檢測準(zhǔn)確性和實時性仍有不足。
基于以上分析,本文針對海上弱小目標(biāo)特點,綜合YOLO的優(yōu)缺點,在3個方面對YOLO算法進行了改進:① 適當(dāng)減少輸出特征圖數(shù)量,大幅削減權(quán)重文件大小,顯著提高檢測速率;② 針對性地減少網(wǎng)絡(luò)層數(shù),選擇性剔除部分殘差網(wǎng)絡(luò),并在淺層加入新的網(wǎng)絡(luò)結(jié)構(gòu),提高對小目標(biāo)檢測能力;③ 加入 SELU[18]激活函數(shù),使模型訓(xùn)練收斂速度更快,對噪聲更具魯棒性。
YOLO算法目前應(yīng)用較為廣泛的有3類,分別為YOLOv2[19]、YOLOv3[17]和YOLOv3-tiny[20]。但是研究發(fā)現(xiàn),YOLO算法框架對于小目標(biāo)的檢測能力有限。YOLOv2是一種基于全卷積網(wǎng)絡(luò)[21]的檢測框架,只利用卷積神經(jīng)網(wǎng)絡(luò)的最后一層檢測不同大小的目標(biāo),該特性限制了其對于弱小目標(biāo)的檢測能力。若要檢測弱小目標(biāo),需要一張足夠大的特征圖來提供更加精細(xì)的特征,進行更加密集的采樣,才能得到更加豐富的語義信息來區(qū)分背景和目標(biāo);YOLOv3算法雖然采用了多尺度檢測,但其使用的Darknet-53特征提取網(wǎng)絡(luò)深度過大,不僅容易失去對弱小目標(biāo)的細(xì)節(jié)信息,產(chǎn)生過擬合現(xiàn)象[22],還會使檢測速率嚴(yán)重下降。YOLO-tiny算法為YOLO的簡化版本,其檢測精確度也不容樂觀。
本文提出的基于改進YOLO算法的海上弱小運動船舶實時檢測網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖1所示。此結(jié)構(gòu)由8層卷積神經(jīng)網(wǎng)絡(luò)組成,前5層網(wǎng)絡(luò)主要用于提取目標(biāo)的有效特征;后3層為檢測層,采用的多尺度預(yù)測策略如圖2所示。每個檢測層又通過3種尺寸的候選框預(yù)測目標(biāo)的坐標(biāo)、目標(biāo)置信度值和類別概率。最后比較9種尺寸的檢測結(jié)果,使用非極大值抑制方法確定最終檢測結(jié)果。
圖1 本文提出的總體網(wǎng)絡(luò)結(jié)構(gòu)
圖2 多尺度預(yù)測目標(biāo)
本文從圖像模型尺寸、網(wǎng)絡(luò)的基本單元設(shè)計和整體結(jié)構(gòu)以及激活函數(shù)改進3個方面對本文所提算法的有效性進行全面分析。文中對算法性能的評判,主要以常用的mAP(mean average precision)、FPS(frame per second)作為主要的衡量指標(biāo)。其中:mAP反映了目標(biāo)的檢測精度;FPS為每秒的檢測幀數(shù),代表目標(biāo)檢測速度。計算公式為:
(1)
(2)
其中:A為單一類別目標(biāo)的檢測精度;R為數(shù)據(jù)集中某個類別所有目標(biāo)的數(shù)量;n為數(shù)據(jù)集中所有目標(biāo)的數(shù)量;j為目標(biāo)的序號,若與真實值相關(guān),Ij為1,否則Ij為0;Rj為前j個目標(biāo)中相關(guān)目標(biāo)的數(shù)量;q為某一類別;QR為總的類別數(shù)量;mAP值m介于0~1之間,值越大表示該算法的檢測精度越高。
輸入圖像的模型尺寸會影響算法計算量和檢測精確度,選擇合適尺寸的圖像模型,既能夠達到實時檢測的目的,又能保持較高的檢測精度。由圖1可知,前5層有5次下采樣,每次采樣步長取2,故網(wǎng)絡(luò)的最大步幅為32,因此可將輸入的圖像模型尺寸定為32的倍數(shù)。結(jié)合實際圖像模型尺寸出現(xiàn)的合理范圍以及一定取樣間隔,對5種尺寸的輸入圖像進行檢測性能的比較,見表1所列。比較時,訓(xùn)練和檢測使用的數(shù)據(jù)集和硬件設(shè)備、系統(tǒng)環(huán)境等都完全相同。這5種尺寸分別為32的10倍、13倍、16倍、19倍和22倍。
表1 不同圖像模型尺寸對檢測結(jié)果的影響
由表1可知,檢測速度與圖像模型尺寸大致成反比,圖像分辨率越高檢測速度越慢,而檢測率呈現(xiàn)雙峰狀態(tài)??紤]到實時性的要求,排除705×705的情況,在分辨率416×416及其附近的圖像模型更符合實時高效檢測的需求。因此在416×416附近,即取32的11倍、12倍、13倍、14倍和15倍大小的圖像,比較圖像模型尺寸對檢測性能的影響,見表2所列。
表2 416×416左右尺寸的輸入對檢測結(jié)果的影響
由表2可知,圖像尺寸為416×416時的mAP值仍是最優(yōu)的,且FPS也表現(xiàn)良好,能達到實時需求,故本文結(jié)構(gòu)中的輸入圖像模型尺寸統(tǒng)一為416×416像素。
網(wǎng)絡(luò)基本單元是組成龐大神經(jīng)網(wǎng)絡(luò)的基石,其結(jié)構(gòu)直接影響網(wǎng)絡(luò)的性能。根據(jù)弱小船舶目標(biāo)特點,本文采用了一種新的網(wǎng)絡(luò)基本單元,如圖3所示,由2個3×3和2個1×1卷積核組成,形成一個3-1-1-3結(jié)構(gòu)。此結(jié)構(gòu)的設(shè)計理由如下:① 3×3卷積層后連接一個1×1卷積層,這樣可以增加非線性而不改變卷積層的感受域[23],從而提升網(wǎng)絡(luò)的表達能力;② 1×1卷積層后再連接一個1×1的卷積層可以維護小目標(biāo)的細(xì)節(jié)信息。此外,1×1卷積核還有降維的作用,可大幅減少網(wǎng)絡(luò)參數(shù),從而提高模型的檢測速度。圖3中:32-d為上一層輸出的32張?zhí)卣鲌D;conv為卷積;3×3、1×1為該卷積中卷積核大小;數(shù)字64和32為輸出的特征圖個數(shù)。
圖3 本文網(wǎng)絡(luò)基本單元
海上弱小船舶目標(biāo)檢測的關(guān)鍵難點在于目標(biāo)面積占整幅圖像的比重非常小,目標(biāo)信息少。例如,相對于1 080×1 080像素的圖像,小目標(biāo)面積可能為80×40像素,僅占整幅圖像的3‰。而另一方面,對于常見網(wǎng)絡(luò)模型,如VGG-16[24]、GoogleNet[25]、ResNet和DarkNet等,前幾級網(wǎng)絡(luò)主要用于提取目標(biāo)特征,后幾級重在對特征的識別。針對小目標(biāo)的特點和深度學(xué)習(xí)網(wǎng)絡(luò)的特性,過深的網(wǎng)絡(luò)結(jié)構(gòu)容易使小目標(biāo)細(xì)節(jié)特征信息丟失,同時巨大的計算量和存儲空間,也會影響算法的整體檢測速度。因此,網(wǎng)絡(luò)的層級深度、網(wǎng)絡(luò)基本單元的位置,以及輸出特征圖個數(shù)均會對檢測結(jié)果有影響。
本文所提出的3-1-1-3網(wǎng)絡(luò)基本單元的作用是增強對弱小目標(biāo)特征信息的提取。由于第1層網(wǎng)絡(luò)輸出的特征圖噪聲較多,不適合進行弱小目標(biāo)有效信息提取操作,而第5層輸出的是13×13像素的特征圖,弱小目標(biāo)的有效信息已基本消失,故不單獨在第1層或第5層加入3-1-1-3結(jié)構(gòu)型網(wǎng)絡(luò)基本單元,而通過在第2、第3和第4層加入此網(wǎng)絡(luò)基本單元的方法來提高小目標(biāo)的檢測能力。經(jīng)檢測,此結(jié)構(gòu)的網(wǎng)絡(luò)mAP值可達93.5%,且FPS也可以達到45 幀/s-1,滿足實時要求。
激活函數(shù)可以為網(wǎng)絡(luò)加入非線性因素,將激活的神經(jīng)元特征通過函數(shù)保留可用的有效特征,去除數(shù)據(jù)中的一些冗余,并映射出來,增強卷積神經(jīng)網(wǎng)絡(luò)的表達能力,在整個網(wǎng)絡(luò)結(jié)構(gòu)中也起到了重要的作用。目前常用的激活函數(shù)有5種,分別為Loggy[26]、ReLU[27]、LReLU[26]、ELU[28]、SELU,激活函數(shù)及其收斂曲線如圖4所示。
圖4 5種激活函數(shù)及其收斂曲線
從圖4a可以看出,除ReLU函數(shù)在輸入為負(fù)的情況下輸出為0,表現(xiàn)較差外,其他的激活函數(shù)都給輸入負(fù)值時賦予一個非零斜率。LReLU為YOLOv2算法和YOLOv3算法中使用的激活函數(shù),它可以避免梯度消失,但是需要更多的重復(fù)訓(xùn)練,對比選擇合適的學(xué)習(xí)率。
SELU激活函數(shù)是對ReLU函數(shù)的改進,其避免了ReLU梯度消失的問題,但仍存在梯度飽和與指數(shù)運算的問題。SELU激活函數(shù)的數(shù)學(xué)定義如(3)式,其導(dǎo)數(shù)如(4)式:
(3)
(4)
其中,α、λ為可調(diào)整的參數(shù)。當(dāng)λ為1時,此函數(shù)即為ELU激活函數(shù)。相比于LReLU、ELU和Loggy函數(shù),SELU激活函數(shù)能夠做到在不激活狀態(tài)下對噪聲不敏感。這是由于輸入為負(fù)時SELU函數(shù)有軟飽和的特點,非常有益于檢測容易受噪聲影響的弱小運動目標(biāo)。此外上述3個激活函數(shù)的正半軸斜率為1,當(dāng)方差很小時,容易出現(xiàn)梯度消失的現(xiàn)象。反觀SELU函數(shù)的正半軸斜率大于1,這樣可以在方差過小時將其放大,有效避免梯度消失。
從圖4b可以看出,SELU函數(shù)無論是在收斂速度方面,還是在迭代到2×104次的交叉熵?fù)p失函數(shù)值的大小方面都是最優(yōu)的。因此,本文算法中將SELU激活函數(shù)取代原YOLO算法中的LReLU,以達到更好的結(jié)果。
實驗的硬件配置為IntelCPU i7 8700k@ 3.7 GHz六核處理器、12 G顯存的單塊NVIDIA TITAN XP GPU顯卡、64 GB RAM、64位操作系統(tǒng)的服務(wù)器,軟件環(huán)境為Ubuntu16.04系統(tǒng)。船舶數(shù)據(jù)集主要來源于采集的船舶小目標(biāo)圖像和新加坡海事數(shù)據(jù)庫(Singapore maritime dataset:SMD)[29]。數(shù)據(jù)集包括360張含船舶圖像和1 046個船舶目標(biāo),其中船舶目標(biāo)包括帆船、商船、軍艦和游輪等,都具有很好的弱小船舶目標(biāo)特性。訓(xùn)練時隨機挑選其中280張圖片作為訓(xùn)練集,80張圖片為測試集。預(yù)訓(xùn)練選用通用目標(biāo)數(shù)據(jù)庫MSRA10K[30]。輸入圖像分辨率統(tǒng)一設(shè)置為416×416像素,實驗對比時,訓(xùn)練采用統(tǒng)一參數(shù)。
訓(xùn)練過程中本文使用隨機梯度下降法,設(shè)定初始學(xué)習(xí)率為0.001,動量為0.9,權(quán)重衰減為0.005,批大小為16,使用0.001 的初始學(xué)習(xí)率迭代訓(xùn)練數(shù)據(jù)12 000 次,然后再用0.000 1 的學(xué)習(xí)率迭代到18 000 次,最后用0.000 01 的學(xué)習(xí)率迭代到21 000 次。正負(fù)樣本的IOU(intersection over union)設(shè)置為0.5,即大于此閾值就設(shè)定為正樣本,否則設(shè)定為負(fù)樣本。
本文提出的網(wǎng)絡(luò)共有3個目標(biāo)檢測層,見表3所示。
表3 候選框的寬度和高度
檢測尺寸分別為13×13像素、26×26像素和52×52像素。對于每個檢測層,分別使用3種尺寸的候選框,即共9種尺寸的候選框通過聚類船舶圖像的真實參考值來檢測目標(biāo)。
將本文提出的網(wǎng)絡(luò)結(jié)構(gòu)與在目標(biāo)檢測方面目前表現(xiàn)最佳的YOLO系列中的YOLOv2[17]、YOLOv3[19]和YOLOv3-tiny[20]網(wǎng)絡(luò)進行對比,見表4所列。從表4可以看出,本文所提檢測算法擁有最高的檢測精確度,且能滿足實時要求,在整體性能上要優(yōu)于其他算法。
表4 檢測算法比對
為直觀觀察各目標(biāo)檢測算法對不同噪聲背景圖像的檢測效果,本文選取了4種具有代表性復(fù)雜噪聲背景的具有弱小船舶目標(biāo)的圖像作為檢測對象,如圖5所示。其中:圖5a受海天線、光點、海浪雜波、傳感器噪聲等影響;圖5b中有浮標(biāo)、云和海浪等干擾物,背景較為復(fù)雜;圖5c中同時出現(xiàn)大的船舶目標(biāo)干擾;圖5d為惡劣天氣中的目標(biāo)圖像,背景噪聲極大,待檢測目標(biāo)不明顯。這幾張圖像中,經(jīng)人眼所能分辨出來的最小的目標(biāo)約占整幅圖像3‰~8‰,基本符合弱小目標(biāo)的特性。
圖5 不同噪聲背景圖像
對4種不同噪聲背景圖像的檢測效果如圖6所示。
圖6中:第1列所示為YOLOv2對4種不同背景圖像的檢測結(jié)果;第2列所示為YOLOv3的檢測結(jié)果;第3列所示為本文提出網(wǎng)絡(luò)模型的檢測結(jié)果。從圖6可以看出:YOLOv2算法容易漏檢小目標(biāo);YOLOv3算法也存在一定程度的漏檢現(xiàn)象;而本文的檢測算法可精確檢測出小目標(biāo),且不存在漏檢誤檢現(xiàn)象。
圖6 檢測效果圖
本文研究并改進了實時目標(biāo)檢測YOLO算法框架,提出的改進算法通過在輸入模型尺寸, 3-1-1-3網(wǎng)絡(luò)基本單元以及網(wǎng)絡(luò)架構(gòu)方面進行合理設(shè)計,提高了算法對小目標(biāo)的檢測能力。此外該算法還發(fā)揮 SELU 激活函數(shù)在網(wǎng)絡(luò)結(jié)構(gòu)中的優(yōu)勢,并結(jié)合多尺度的目標(biāo)檢測,得到了較好的檢測結(jié)果。實驗結(jié)果表明,本文算法在海上弱小目標(biāo)檢測方面,相比于原YOLO檢測算法,綜合表現(xiàn)更為優(yōu)異,在保證實時性的同時,獲得了較高的檢測率。