朱昭云,張 波,葉昭良,黃曙榮 ,曹 衛(wèi)
(1.鹽城工學(xué)院 機(jī)械工程學(xué)院,江蘇 鹽城 224007;2.華能海上風(fēng)電科學(xué)技術(shù)研究有限公司,江蘇 鹽城 224045)
在“碳中和”背景下,國內(nèi)海上風(fēng)電開發(fā)建設(shè)已進(jìn)入發(fā)展快車道,大規(guī)模風(fēng)電場項(xiàng)目成功建成并投產(chǎn)運(yùn)營。船舶作為海洋運(yùn)輸主體,隨著海上風(fēng)電場的數(shù)目和裝機(jī)容量的大規(guī)模發(fā)展,必然增加了船舶航行碰撞海上風(fēng)電設(shè)施的可能性。因此,開展海上風(fēng)電設(shè)施檢測與預(yù)警研究,對降低風(fēng)電運(yùn)維成本、提高風(fēng)電場穩(wěn)定性具有重要意義,而其中最重要的部分是對海上航行船舶靠近風(fēng)電場附近水域的及時(shí)識別和定位。
海上風(fēng)電場離岸距離遠(yuǎn),長期處于鹽霧濃度高、濕度大、光照多變的復(fù)雜環(huán)境下,對開展海上風(fēng)電設(shè)施和風(fēng)電場附近水域船舶的檢測研究中主要解決以下幾個(gè)難點(diǎn):在惡劣天氣情況下不易檢測、光線較弱情況下不易檢測、小目標(biāo)不易檢測和遮擋情況下不易檢測。
海上風(fēng)電設(shè)施和風(fēng)電場附近水域船舶的檢測研究屬于機(jī)器視覺領(lǐng)域核心的目標(biāo)檢測任務(wù)。早期的檢測方法主要包括:目標(biāo)區(qū)域選擇、特征提取、分類器檢測、小波檢測、模糊檢測、特征匹配等。雖然這些方法在目標(biāo)檢測應(yīng)用中具有不錯(cuò)的表現(xiàn)效果,但在復(fù)雜海域場景下的檢測任務(wù)實(shí)時(shí)性和實(shí)用性較差。
自AlexNet卷積神經(jīng)網(wǎng)絡(luò)模型(Convolutional Neural Network,CNN)[1]在2012年ILSVRC視覺挑戰(zhàn)賽中取得冠軍,改變了傳統(tǒng)檢測方法的局限性,迎來了基于深度學(xué)習(xí)的目標(biāo)檢測方法在各領(lǐng)域的廣泛應(yīng)用。現(xiàn)今基于深度學(xué)習(xí)的檢測方法主要分為兩大分支:一是基于區(qū)域選擇的二階段檢測方法,如RCNN (Regions with CNN)[2]以及基于此改進(jìn)的Fast R-CNN (Fast Regions with CNN)[3]、Mask R-CNN[4]等系列。二是基于回歸思想的端到端一階段檢測方法,如YOLO (You Only Look Once)[5]、SSD (Single Shot Multi Box Detector)[6]、Retina-Net[7]等?;诨貧w的一階段檢測方法相較于區(qū)域選擇的二階段方法,改善了二階檢測方法因候選區(qū)域框造成的計(jì)算冗余量大、檢測速度低、部署能力差的問題。YOLO系列從YOLOv1到Y(jié)OLOv5在各領(lǐng)域應(yīng)用的檢測性能不斷提高。鑒于此,結(jié)合海上目標(biāo)檢測難點(diǎn),該文將現(xiàn)場采集到的風(fēng)電場視頻數(shù)據(jù)進(jìn)行預(yù)處理,制成風(fēng)電圖像數(shù)據(jù)集,提出了一種基于改進(jìn)YOLOv5s的海上風(fēng)電設(shè)施檢測算法,在保證實(shí)時(shí)性的情況下,能夠更有效地檢測出監(jiān)控系統(tǒng)中的風(fēng)電設(shè)施和航行船舶,當(dāng)有船舶靠近風(fēng)電場水域時(shí)及時(shí)發(fā)出預(yù)警提示信息。
YOLOv5[8]是Glenn Jocher在2020年提出的一種單階段目標(biāo)檢測算法,其繼續(xù)沿用了YOLO系列的四個(gè)主要組件:輸入端、主干網(wǎng)絡(luò)(Backbone)、Neck和Head。第一部分為輸入端,采用了與YOLOv4[9]相同的馬賽克數(shù)據(jù)增強(qiáng)方法,通過對輸入圖像進(jìn)行隨機(jī)變換和拼接,在小目標(biāo)檢測中表現(xiàn)更好。第二部分為主干網(wǎng)絡(luò),它使用CSPDarkNet53網(wǎng)絡(luò),從輸入圖像中獲取豐富的特征信息。第三部分為檢測層,使用FPN-PAN結(jié)構(gòu),FPN生成特征金字塔而PANet作為Neck來聚合特征,增強(qiáng)模型對不同尺度目標(biāo)的檢測性能。
YOLOv5網(wǎng)絡(luò)根據(jù)深度和寬度差異,可將其分為四個(gè)版本:YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x,它們之間的主要區(qū)別在于網(wǎng)絡(luò)的特征提取模塊、卷積核的數(shù)量和模型參數(shù)量不同。YOLOv5網(wǎng)絡(luò)模型檢測精度高,推理速度快,檢測速度最快可達(dá)每秒140幀。同時(shí)該網(wǎng)絡(luò)模型的權(quán)重文件較小,是YOLOv4網(wǎng)絡(luò)的十分之一,可見YOLOv5網(wǎng)絡(luò)更適用于實(shí)時(shí)檢測任務(wù)。
該文以海上風(fēng)機(jī)和航行船舶為檢測任務(wù),為應(yīng)用于海上風(fēng)電監(jiān)控系統(tǒng)做準(zhǔn)備。由于該任務(wù)對網(wǎng)絡(luò)的實(shí)時(shí)性和輕量化性能要求較高,因此,綜合考慮了檢測模型的準(zhǔn)確性、效率和規(guī)模,最終選擇了YOLOv5s[8]作為基礎(chǔ)框架,設(shè)計(jì)改進(jìn)了一種適合部署在海上風(fēng)電設(shè)施檢測與預(yù)警場景下的網(wǎng)絡(luò)模型。
YOLOv5s網(wǎng)絡(luò)在多類別檢測任務(wù)中具備優(yōu)異的檢測效果,而文中實(shí)驗(yàn)只需要識別和定位出海上風(fēng)機(jī)和船舶兩類目標(biāo),采用原始主干特征提取模塊,存在參數(shù)量冗余、計(jì)算量大的問題,同時(shí)也不利于部署在海上風(fēng)電監(jiān)控系統(tǒng)。鑒于此,將YOLOv5s的主干網(wǎng)絡(luò)(Backbone)改進(jìn)為GhostNet[10],該網(wǎng)絡(luò)具備輕量化、參數(shù)少、速度快和占用內(nèi)存低的特點(diǎn),可在降低網(wǎng)絡(luò)參數(shù)量的同時(shí)仍保證相應(yīng)的檢測速度。GhostNet采用Ghost模塊的瓶頸結(jié)構(gòu),該結(jié)構(gòu)引入了殘差思想,先利用普通卷積獲取有效特征,在此基礎(chǔ)上再利用深度可分離卷積進(jìn)行逐層卷積,最后再將特征圖進(jìn)行拼接組合。其中,瓶頸結(jié)構(gòu)中的第一個(gè)Ghost卷積負(fù)責(zé)增加通道數(shù)量,用來指定輸出通道數(shù)的膨脹系數(shù);第二個(gè)Ghost卷積負(fù)責(zé)將通道數(shù)降低至與輸入通道數(shù)保持一致[11],最后將卷積的兩組特征圖進(jìn)行Add操作,作為最后的特征信息輸出,大幅度降低了網(wǎng)絡(luò)模型的參數(shù)量和計(jì)算量。GhostNet模塊如圖1所示。
(a)Ghost module結(jié)構(gòu) (b)Ghost瓶頸結(jié)構(gòu)
由于海域環(huán)境復(fù)雜,海上目標(biāo)多處于多霧、多雨、光線弱的情況下,導(dǎo)致檢測任務(wù)存在精度低、漏檢及誤檢問題。為了提高海上目標(biāo)的檢測精度,該文在YOLOv5s網(wǎng)絡(luò)設(shè)計(jì)中引入基于機(jī)器視覺的注意力機(jī)制[12]來更好地提取海域目標(biāo)特征。將SE注意力機(jī)制網(wǎng)絡(luò)(SENet)[13]分別施加在YOLOv5s網(wǎng)絡(luò)主干末端和Neck層,使網(wǎng)絡(luò)自適應(yīng)地學(xué)習(xí)并分配每個(gè)特征的重要程度,對于不重要和干擾特征進(jìn)行抑制,以便提高海域復(fù)雜環(huán)境下的目標(biāo)檢測精度。
如圖2所示,SE模塊是一種通道注意機(jī)制,其在原殘差模塊的基礎(chǔ)上又增加一條通道路徑,利用全局池化獲取初始化通道權(quán)重;隨后使用兩個(gè)全連接層和Sigmoid激活函數(shù)來更新每個(gè)通道的權(quán)重;最后再將原始通道特征乘以每個(gè)通道的權(quán)重得出最終的特征圖[14]。該模塊保證網(wǎng)絡(luò)在訓(xùn)練過程中通過梯度下降來學(xué)習(xí)每個(gè)通道的權(quán)重系數(shù),實(shí)現(xiàn)關(guān)鍵特征提取,從而提高檢測精度。
圖2 SELayer模塊
為降低多尺度、較小目標(biāo)漏檢及誤檢問題,對原始YOLOv5s網(wǎng)絡(luò)的Neck層進(jìn)行改進(jìn)。原始網(wǎng)絡(luò)的Neck層采用FPN+PAN結(jié)構(gòu),其主要思想是添加一條自底向上的特征融合路徑,使更高層的特征圖與底層位置信息充分結(jié)合,但在該結(jié)構(gòu)中,所有特征圖的權(quán)重均相同,而每個(gè)特征圖對檢測結(jié)果的貢獻(xiàn)不同,則增加了網(wǎng)絡(luò)的計(jì)算量。因此,將原FPN+PAN結(jié)構(gòu)改進(jìn)為雙向金字塔結(jié)構(gòu)(BiFPN)[15],如圖3所示。該結(jié)構(gòu)通過簡單的殘差連接,增加了特征的表示能力,刪除了具有單個(gè)輸入節(jié)點(diǎn),并且將上采樣或下采樣的特征進(jìn)行加權(quán)再與其他特征進(jìn)行融合,以聚合不同分辨率的特征[16],保證了多尺度目標(biāo)的特征抽取,從而提升模型的檢測精度和速度。
圖3 特征融合結(jié)構(gòu)
基于YOLOv5s網(wǎng)絡(luò)分別對主干網(wǎng)絡(luò)、特征融合模塊進(jìn)行改進(jìn)以及在網(wǎng)絡(luò)關(guān)鍵位置施加SE注意力機(jī)制,最終構(gòu)建了改進(jìn)后的YOLOv5s整體網(wǎng)絡(luò)結(jié)構(gòu),如圖4所示。
圖4 改進(jìn)后的YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
為檢測風(fēng)電視頻中的目標(biāo)對象并估算距離,本節(jié)設(shè)計(jì)了檢測預(yù)警流程圖和預(yù)警評估規(guī)則,來判斷海上航行船舶是否靠近風(fēng)電場附近水域,若靠近風(fēng)電場附近水域則根據(jù)設(shè)定的閾值及時(shí)發(fā)出對應(yīng)的預(yù)警提示信息,具體步驟如圖5所示:
圖5 檢測與預(yù)警流程
a)采集風(fēng)電視頻數(shù)據(jù),按幀截取圖像。
b)獲取原始視頻幀的四個(gè)角點(diǎn),應(yīng)用透視變換獲取圖像幀的俯視圖。
c)應(yīng)用改進(jìn)型YOLOv5s網(wǎng)絡(luò)檢測圖像中的目標(biāo)。
d)核實(shí)視頻檢測出的目標(biāo)數(shù)量,估算物體邊界框質(zhì)心對距離。
e)估算的像素距離再與設(shè)定的閾值進(jìn)行比較,若質(zhì)心對之間的距離大于設(shè)定的閾值則更新目標(biāo)邊界框顏色并發(fā)出警告提示。
實(shí)驗(yàn)所采用的數(shù)據(jù)集分為兩部分,即公共數(shù)據(jù)集和自制數(shù)據(jù)集。前期使用公共船舶數(shù)據(jù)集Seaship[17],該圖像來自部署在海岸線上的監(jiān)控系統(tǒng),按視頻的每一幀截取對應(yīng)圖像,去除目標(biāo)以外的背景,抽取了6類船舶,目前公開7 000張圖像。自制的海上風(fēng)電圖像數(shù)據(jù)集來源于江蘇射陽某沿海風(fēng)電場的視頻監(jiān)控系統(tǒng),將采集的風(fēng)電視頻數(shù)據(jù)按每幀進(jìn)行截取,經(jīng)過篩選提取圖像中的風(fēng)機(jī)和船舶對象,共計(jì)510張?jiān)紙D像。使用OpenCV工具對原始風(fēng)電圖像以旋轉(zhuǎn)、裁剪與縮放等方式進(jìn)行數(shù)據(jù)擴(kuò)充,最終得到1 000張圖像組成自制風(fēng)電數(shù)據(jù)集。部分原始風(fēng)電圖像如圖6所示。
圖6 部分原始風(fēng)電圖像
目標(biāo)檢測任務(wù)常用的數(shù)據(jù)標(biāo)簽格式為VOC形式,即用目標(biāo)框的四個(gè)坐標(biāo)值表示目標(biāo)對象。因此,實(shí)驗(yàn)使用基于Python語言編寫的LabelImg工具,將海上風(fēng)電圖像數(shù)據(jù)集按8∶2比例標(biāo)注為訓(xùn)練集和測試集,最后存儲(chǔ)在Xml文件中,每個(gè)文件對應(yīng)一張圖像,包括圖像尺寸、目標(biāo)類別名以及目標(biāo)位置信息。Xml標(biāo)簽文件的格式和主要參數(shù)如下:name:目標(biāo)名稱,即Turbine和Ship兩類;bndbox:標(biāo)注的物體真實(shí)框,包含xmin、xmax、ymin、ymax參數(shù)信息,分別對應(yīng)著檢測框的坐標(biāo)值,標(biāo)注示例如圖7所示。
圖7 風(fēng)電圖像標(biāo)注示例
實(shí)驗(yàn)在Windows 11操作系統(tǒng)下進(jìn)行,搭建的軟件環(huán)境有VScode、Python、Labelimg、Opencv等,模型訓(xùn)練框架為Pytorch。CPU配置為Intel? CoreTMi5-11400F,內(nèi)存大小為16 GB,GPU為RTX 3060Ti,使用CUDA并行計(jì)算框架并配合CuDNN來加速深度網(wǎng)絡(luò)模型訓(xùn)練。
為評估目標(biāo)檢測模型的性能,選取了準(zhǔn)確率Precision、召回率Recall、平均精度mAP作為模型精度的評價(jià)指標(biāo)。另外,又從檢測速度FPS、網(wǎng)絡(luò)模型參數(shù)量和模型大小三方面來評估模型的復(fù)雜度,檢測結(jié)果分為4種:TP為真正例,TN為真反例,FP為假正例,FN為假反例。準(zhǔn)確率及召回率如式(1)和式(2)定義:
(1)
(2)
平均精度mAP定義為:
(3)
其中,N表示被檢測目標(biāo)的類別數(shù),AP為單類別目標(biāo)的平均精度,FPS為GPU每秒檢測的圖像數(shù)量。
針對海上風(fēng)電數(shù)據(jù)樣本量受限問題,在模型訓(xùn)練階段引入遷移學(xué)習(xí)方法。因此,改進(jìn)的YOLOv5s網(wǎng)絡(luò)訓(xùn)練過程分為兩步:首先,將提出的改進(jìn)網(wǎng)絡(luò)在公共船舶數(shù)據(jù)集Seaship上進(jìn)行方法實(shí)驗(yàn),模型訓(xùn)練時(shí)輸入圖像大小為640×640,初始學(xué)習(xí)率0.001,衰減系數(shù)設(shè)置為0.000 5,參數(shù)訓(xùn)練100個(gè)epoch;其次,將在公共船舶數(shù)據(jù)集上驗(yàn)證的初步模型應(yīng)用于海上風(fēng)電設(shè)施檢測與預(yù)警場景,在自制風(fēng)電數(shù)據(jù)集上對模型進(jìn)行再次訓(xùn)練,參數(shù)訓(xùn)練300個(gè)epoch,訓(xùn)練過程中保持初步檢測模型的系數(shù)不變,僅對模型參數(shù)進(jìn)行微調(diào)。
實(shí)驗(yàn)結(jié)果分析分為兩部分,首先,在公共船舶數(shù)據(jù)集Seaship上運(yùn)用基于YOLOv5s網(wǎng)絡(luò)的改進(jìn)模型,對檢測結(jié)果進(jìn)行對比分析;其次,將改進(jìn)的網(wǎng)絡(luò)應(yīng)用在海上風(fēng)電設(shè)施檢測與預(yù)警場景,并構(gòu)建檢測預(yù)警系統(tǒng)將最終的檢測結(jié)果可視化。
3.6.1 改進(jìn)過程的對比模型評估
為驗(yàn)證提出改進(jìn)策略的有效性,針對同一平臺(tái)同一數(shù)據(jù)集,進(jìn)行了改進(jìn)過程中的一系列消融實(shí)驗(yàn),在測試集上分別評估改進(jìn)的多個(gè)模塊對網(wǎng)絡(luò)模型的性能影響,共計(jì)6組實(shí)驗(yàn)。結(jié)果如表1所示。
表1數(shù)據(jù)表明,引入SE注意力機(jī)制的檢測網(wǎng)絡(luò)相比原始YOLOv5s網(wǎng)絡(luò),準(zhǔn)確率和召回率有小幅提升,平均精度提升了2.1百分點(diǎn),說明注意力機(jī)制的引入能夠抑制干擾信息,提高特征提取能力。采用BiFPN結(jié)構(gòu)改進(jìn)原始YOLOv5s網(wǎng)絡(luò)的PANet結(jié)構(gòu),平均精度提升了2.2百分點(diǎn),說明BiFPN結(jié)構(gòu)能夠提高網(wǎng)絡(luò)的特征融合能力。同時(shí)引入注意力機(jī)和BiFPN結(jié)構(gòu),準(zhǔn)確率提升了1.1百分點(diǎn),平均精度相較于單個(gè)模塊引入精度有所下降,但單類別的準(zhǔn)確率提升明顯。使用輕量化GhostNet替換原主干BottleNeck網(wǎng)絡(luò)并引入注意力機(jī)制和BiFPN結(jié)構(gòu),相比于原始YOLOv5s網(wǎng)絡(luò),單類別準(zhǔn)確率提升了1.9百分點(diǎn),平均精度提升了2.1百分點(diǎn),模型大小減少了3.4 MB,表明輕量化的主干網(wǎng)絡(luò)大幅降低了網(wǎng)絡(luò)的參數(shù)量和計(jì)算量,同時(shí)也提升了檢測精度。實(shí)驗(yàn)結(jié)果表明,所提出的各個(gè)階段的改進(jìn)策略相比原始YOLOv5s網(wǎng)絡(luò)在單類別準(zhǔn)確率、召回率、平均精度分別提升了1.5百分點(diǎn)、1.1百分點(diǎn)、2.6百分點(diǎn),同時(shí)網(wǎng)絡(luò)參數(shù)量和模型大小均有所降低,提高了網(wǎng)絡(luò)模型的綜合性能。
表1 改進(jìn)過程中各個(gè)模塊的消融實(shí)驗(yàn)
通過主干網(wǎng)絡(luò)輕量化、施加注意力和結(jié)合多尺度特征融合的改進(jìn)方式,最終構(gòu)建了適用于該文的檢測算法。在整體測試過程中,通過實(shí)驗(yàn)對比了原始YOLOv5s算法在公共船舶數(shù)據(jù)集上的檢測效果,最后根據(jù)各類別船舶的準(zhǔn)確率、mAP和檢測速度FPS來評估該方法的有效性,結(jié)果如表2所示。
表2 改進(jìn)YOLOv5s與原始YOLOv5s性能比較
從表2可以看出,文中方法與原始YOLOv5s網(wǎng)絡(luò)相比,平均精度提升了2.6百分點(diǎn),達(dá)到了96.8%,單類別船舶檢測準(zhǔn)確率有明顯提升;檢測速度也達(dá)到了47 FPS,能夠滿足實(shí)時(shí)性檢測要求。綜上所述,該方法大幅減少了網(wǎng)絡(luò)模型的參數(shù)量和內(nèi)存消耗量,在提高網(wǎng)絡(luò)檢測精度的同時(shí)保證了較快的檢測速度,在實(shí)時(shí)檢測任務(wù)中具有顯著優(yōu)勢,應(yīng)用于海上風(fēng)電設(shè)施檢測與預(yù)警系統(tǒng)中是有效的。
3.6.2 改進(jìn)過程的模型檢測效果評估
為進(jìn)一步體現(xiàn)改進(jìn)后的網(wǎng)絡(luò)和原始YOLOv5s網(wǎng)絡(luò)在船舶數(shù)據(jù)集上的檢測性能,選取了光線較弱、小目標(biāo)和夜間情況下的圖像來對比檢測效果,如圖8所示。
(a)YOLOv5s (b)改進(jìn)的YOLOv5s
從對比的檢測結(jié)果中可以看出,光線較弱情況下的船舶檢測準(zhǔn)確率從67%提高到85%,改進(jìn)后的網(wǎng)絡(luò)可以檢測出遠(yuǎn)處較小船舶,夜間情況下的船舶檢測準(zhǔn)確率從45%提高到68%。針對3種特殊環(huán)境下的船舶目標(biāo),改進(jìn)后的YOLOv5s網(wǎng)絡(luò)不僅提高了模型檢測速度,還提升了檢測準(zhǔn)確率。
3.6.3 檢測與預(yù)警結(jié)果可視化
本系統(tǒng)將最終的檢測和預(yù)警模塊相結(jié)合部署在海上風(fēng)電監(jiān)控系統(tǒng)中。首先,攝像頭對經(jīng)過風(fēng)電場附近水域的航行船舶進(jìn)行實(shí)時(shí)監(jiān)控,同時(shí)后臺(tái)加載訓(xùn)練好的風(fēng)電設(shè)施檢測模型對視頻中的每一幀進(jìn)行檢測,獲取視頻中的物體類別及位置信息;其次,根據(jù)物體邊界框信息,計(jì)算物體邊界框質(zhì)心對間的距離;最后,將計(jì)算的距離與設(shè)定的預(yù)警程度閾值進(jìn)行比較,若附近航行船舶進(jìn)入風(fēng)電場內(nèi)部水域則更新檢測邊界框顏色為紅色,發(fā)出高風(fēng)險(xiǎn)預(yù)警(Risk)信息提示;若航行船舶靠近風(fēng)電場內(nèi)部水域則更新檢測邊界框顏色為黃色,發(fā)出警告(Alter)信息提示;若航行船舶在風(fēng)電場附近水域航行則檢測邊界框顏色仍為綠色,并標(biāo)記為安全(Safe)。檢測系統(tǒng)主界面以及檢測結(jié)果如圖9~圖11所示。
圖9 系統(tǒng)主界面
圖10 圖像檢測模塊
圖11 檢測預(yù)警模塊
針對現(xiàn)有海上目標(biāo)檢測算法存在參數(shù)量冗余、計(jì)算量大和實(shí)時(shí)性差的檢測難點(diǎn),不利于實(shí)際應(yīng)用與部署,對YOLOv5s網(wǎng)絡(luò)進(jìn)行改進(jìn),首次將輕量化GhostNet和YOLOv5s網(wǎng)絡(luò)相結(jié)合運(yùn)用在海上風(fēng)電設(shè)施檢測與預(yù)警場景,通過施加SE注意力機(jī)制來加強(qiáng)特殊目標(biāo)的提取效果,并調(diào)整特征融合層引入雙向金字塔來提升檢測目標(biāo)的定位精度和檢測速度。實(shí)驗(yàn)結(jié)果表明,應(yīng)用改進(jìn)的算法檢測視頻中的風(fēng)電設(shè)施具有一定的實(shí)時(shí)性和可靠性,能夠判斷視頻中的航行船舶是否靠近風(fēng)電場附近水域并及時(shí)發(fā)出預(yù)警提示信息,為海上風(fēng)電安全監(jiān)測工作提供實(shí)際應(yīng)用參考。