張德春,李海濤,李 勛,張 雷
(1 青島科技大學(xué)信息科學(xué)技術(shù)學(xué)院,山東青島 266000;2 青島西海岸新區(qū)海洋發(fā)展局,山東青島 266200;3 青島勵(lì)圖高科信息技術(shù)有限公司,山東青島 266200)
漁船是確保漁業(yè)活動(dòng)順利進(jìn)行的基礎(chǔ),但由于漁船因素的問(wèn)題,如捕撈漁船數(shù)量的急劇增加、不合理的捕撈方式等[1],已嚴(yán)重影響到漁業(yè)資源的可持續(xù)發(fā)展[2]。漁船的海上生產(chǎn)是開(kāi)放式的,管理人員力量不足且手段落后,無(wú)法對(duì)漁船動(dòng)態(tài)進(jìn)行實(shí)時(shí)掌控,更不能及時(shí)發(fā)現(xiàn)并消除伏季休漁期私自出海捕撈這種違規(guī)行為,對(duì)這些安全隱患存在監(jiān)管盲區(qū)[3]。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)在近20年得到了飛速發(fā)展,主流的目標(biāo)檢測(cè)算法根據(jù)有無(wú)候選框生成階段分為雙階段和單階段目標(biāo)檢測(cè)算法兩類(lèi)。雙階段目標(biāo)檢測(cè)算法先對(duì)圖像提取候選框,然后基于候選區(qū)域做二次修正得到檢測(cè)結(jié)果[4],代表算法有R-CNN系列[5-7]、AlexNet[8];單階段目標(biāo)檢測(cè)算法直接對(duì)圖像進(jìn)行計(jì)算生成檢測(cè)結(jié)果,代表算法有SSD[9]和Yolo系列[10-14],其中Yolo檢測(cè)框架在保證檢測(cè)準(zhǔn)確率的情況下同時(shí)滿足實(shí)時(shí)檢測(cè)的需求。船舶檢測(cè)是目標(biāo)檢測(cè)應(yīng)用領(lǐng)域的一種。Blosisid等[15]在大運(yùn)河交通監(jiān)控系統(tǒng)中,對(duì)航道中的船舶進(jìn)行檢測(cè)和跟蹤。Kim等[16]利用Faster R-CNN網(wǎng)絡(luò)和貝葉斯進(jìn)行船舶檢測(cè)和分類(lèi)。戚超等[17]將一個(gè)8層卷積神經(jīng)網(wǎng)絡(luò)和支持向量機(jī)結(jié)合起來(lái),提取卷積神經(jīng)網(wǎng)絡(luò)第一個(gè)全連接層的特征,訓(xùn)練支持向量機(jī)對(duì)運(yùn)輸船進(jìn)行分類(lèi)識(shí)別。閆河等[18]提出一種卷積神經(jīng)網(wǎng)絡(luò)(CNN)與極限學(xué)習(xí)機(jī)(ELM)相結(jié)合的分類(lèi)識(shí)別方法。李兆桐等[19]提出一種基于全卷積神經(jīng)網(wǎng)絡(luò)的船舶檢測(cè)算法SDNet進(jìn)行船舶檢測(cè)。宋娟娟等[20]提出基于深度學(xué)習(xí)的監(jiān)控視頻中船舶識(shí)別方法,降低了識(shí)別的錯(cuò)誤率。
本研究以進(jìn)出漁港的漁船為檢測(cè)目標(biāo),采集1 900多張漁港高點(diǎn)監(jiān)控圖片,構(gòu)建漁船檢測(cè)數(shù)據(jù)集?;赮oloV5檢測(cè)網(wǎng)絡(luò),首先通過(guò)Kmeans++算法對(duì)錨框重新聚類(lèi)[21],選擇適合漁船數(shù)據(jù)集的錨框尺寸;然后在YoloV5的骨干網(wǎng)絡(luò)中融入CBAM注意力機(jī)制獲取更多細(xì)節(jié)特征;再采用BiFPN加權(quán)雙向特征金字塔網(wǎng)絡(luò)代替原先的FPN+PAN結(jié)構(gòu),快速進(jìn)行多尺度特征融合;最后在檢測(cè)尺度上去掉大目標(biāo)的檢測(cè)尺度,增加更小目標(biāo)的檢測(cè)尺度,改用新的三個(gè)檢測(cè)尺度,提高了模型對(duì)小目標(biāo)漁船的檢測(cè)精度。
YoloV5具有速度快、靈活性高的特點(diǎn)[12],由輸入端、Backbone、Neck和Head四個(gè)部分組成。輸入端的作用是對(duì)輸入的數(shù)據(jù)集進(jìn)行預(yù)先處理,包括Mosaic數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框計(jì)算等操作。Backbone使用CSPDarknet53網(wǎng)絡(luò),從輸入圖像中提取豐富的信息特征。Neck中的核心為特征金字塔(FPN)[22]和路徑聚合網(wǎng)絡(luò)(PAN)結(jié)構(gòu),實(shí)現(xiàn)不同尺度特征信息的融合。Head是YoloV5的檢測(cè)結(jié)構(gòu),輸出大、中、小三個(gè)不同尺寸的特征圖,分別對(duì)應(yīng)的是檢測(cè)小、中、大目標(biāo)。其中Backbone是YoloV5的骨干結(jié)構(gòu),包括Foucs、Conv、C3、SPP等模塊。Focus模塊將輸入在縱向和橫向間隔切片再拼接,Conv包含卷積、正則化和激活層,C3包含N個(gè)殘差網(wǎng)絡(luò)Bottleneck,輸入的特征圖先是經(jīng)過(guò)1×1和3×3的卷積層,再將結(jié)果與輸入的特征進(jìn)行相加。SPP為空間金字塔池化層,SPP是進(jìn)行三種尺寸的最大池化操作,并將輸出結(jié)果進(jìn)行拼接。
為了在高點(diǎn)監(jiān)控漁船目標(biāo)場(chǎng)景中解決漏檢和誤檢的問(wèn)題,提出了一種基于改進(jìn)YoloV5的漁船目標(biāo)檢測(cè)模型,模型網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,本研究的主要改進(jìn)為:錨框尺寸的確定由Kmeans算法改為Kmeans++算法;在骨干網(wǎng)絡(luò)中添加CBAM機(jī)制加強(qiáng)特征提??;在Neck中由PANet網(wǎng)絡(luò)結(jié)構(gòu)改為BiFPN加強(qiáng)多尺度特征融合;將用于檢測(cè)小目標(biāo)的大尺度特征圖取代原本算法中的檢測(cè)大目標(biāo)的小尺度特征圖,提高對(duì)小目標(biāo)的檢測(cè)精度。
圖1 改進(jìn)YoloV5網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of imporved YoloV5 algorithm
在YoloV5的骨干網(wǎng)絡(luò)中引入CBAM注意力機(jī)制[23],CBAM的通道注意力機(jī)制重點(diǎn)檢測(cè)目標(biāo)的內(nèi)容,空間注意力機(jī)制重點(diǎn)檢測(cè)目標(biāo)的位置,通過(guò)兩者結(jié)合可以使輸出信息更聚焦于重點(diǎn)特征信息,抑制一般特征的干擾,從而達(dá)到提高模型準(zhǔn)確率的目的。本研究將CBAM模塊融入第一個(gè)卷積后,并在CBAM模塊中先將特征輸入到通道注意力模塊再輸入到空間注意力模塊,得到最終生成的特征,如圖2所示。改進(jìn)后的骨干網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖2 CBAM注意力模塊結(jié)構(gòu)Fig.2 Structure of CBAM
圖3 融合CBAM模塊的YoloV5結(jié)構(gòu)Fig.3 YoloV5 incorporating CBAM Modules
BiFPN是加權(quán)雙向特征金字塔[24],BiFPN主要思想有兩點(diǎn):一是高效的雙向跨尺度連接,二是加權(quán)特征圖融合。運(yùn)用雙向融合四項(xiàng),構(gòu)造自上而下、自下而上的雙向通道,對(duì)來(lái)自主干網(wǎng)絡(luò)不同尺度的信息,在不同尺度間進(jìn)行融合時(shí)通過(guò)上采樣和下采樣同一特征分辨率尺度,并在同一特征的原始輸入和輸出節(jié)點(diǎn)之間添加橫向連接,在不增加成本的情況下融合更多特征,另外將BiFPN視作一個(gè)基本單元,即BiFPN中一對(duì)路徑視為一個(gè)特征層,然后重復(fù)多次以得到更多高層特征融合,網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 BiFPN結(jié)構(gòu)Fig.4 Structure of BiFPN
YoloV5的先驗(yàn)錨框參數(shù)是基于COCO數(shù)據(jù)集進(jìn)行Kmeans聚類(lèi)算法進(jìn)行設(shè)定,不滿足漁船檢測(cè)的實(shí)際需要,所以要重新設(shè)計(jì)先驗(yàn)錨框的大小,本研究改用Kmeans++聚類(lèi)算法對(duì)先驗(yàn)錨框大小重新設(shè)計(jì),與傳統(tǒng)的Kmeans聚類(lèi)算法[25]相比,Kmeans++優(yōu)化了初始聚類(lèi)的中心選取的方式,能顯著改善分類(lèi)結(jié)果的誤差以獲得更好的聚類(lèi)效果,獲得更適合小目標(biāo)數(shù)據(jù)集的錨框尺度,提高小目標(biāo)檢測(cè)的精度。本研究中針對(duì)大、中、小尺度分別取3個(gè)錨框,共9組錨框數(shù)據(jù),因此聚類(lèi)簇?cái)?shù)k取9,再進(jìn)行了2 000次迭代之后,得到新的先驗(yàn)錨框尺度,經(jīng)過(guò)歸一化后如表1所示。
表1 先驗(yàn)錨框尺度Tab.1 A priori anchor frame size
錨框尺度計(jì)算的算法如下所示:
算法:錨框尺度優(yōu)化。
輸入:訓(xùn)練集的標(biāo)簽 (標(biāo)簽結(jié)構(gòu):寬、高、類(lèi)別)。
輸出:錨框的寬、高數(shù)據(jù)。
1)對(duì)人工標(biāo)注的標(biāo)簽文件進(jìn)行解析,得到訓(xùn)練集包含的所有錨框的寬、高,寫(xiě)入數(shù)組N。
2)開(kāi)始遍歷所有的訓(xùn)練集樣本N。
3)讀取樣本的錨框?qū)?yīng)的圖像,得到圖像的寬、高。
4)將圖像的寬、高寫(xiě)入數(shù)組M。
5)結(jié)束遍歷。
6)//Kmeans++算法參數(shù)依次是所有樣本的寬高數(shù)組M、聚類(lèi)類(lèi)別數(shù)9、迭代次數(shù)2 000次。
7)Kmeans++(M,9,2000)。
8)Return 9組錨框的寬、高。
算法:Kmeans++。
輸入:所有樣本的寬高數(shù)組M,聚類(lèi)類(lèi)別數(shù)9、迭代次數(shù)2 000次。
輸出:錨框的寬、高數(shù)據(jù)。
1)從輸入的數(shù)據(jù)集中隨機(jī)選取一個(gè)樣本作為初始聚類(lèi)中心ci。
2)首先計(jì)算每個(gè)樣本與當(dāng)前已有聚類(lèi)中心之間的最短距離,用D(c)表示[26]。
4)重復(fù)第2、3步驟直到選出9個(gè)聚類(lèi)中心。
5)針對(duì)數(shù)據(jù)集中每個(gè)樣本ci,計(jì)算它到9個(gè)聚類(lèi)中心的距離并將其分到距離最小的聚類(lèi)中心所對(duì)應(yīng)的類(lèi)中[27],并更新聚類(lèi)中心。
6)重復(fù)第5步,直到錨框的大小不再發(fā)生改變或迭代2 000次。
7)Return 9組錨框的寬、高。
將檢測(cè)尺度進(jìn)行調(diào)整,YoloV5的檢測(cè)尺度是取20×20、40×40、80×80特征層作為檢測(cè)Head,Head是YoloV5的檢測(cè)結(jié)構(gòu),輸出大、中、小三個(gè)不同尺寸的特征圖,分別對(duì)應(yīng)的是檢測(cè)小、中、大目標(biāo)。如圖5所示,本研究對(duì)檢測(cè)Head做了調(diào)整,在80×80特征層之后繼續(xù)增加卷積層和上采樣,再將上采樣特征層與160×160特征層進(jìn)行融合,得到160×160特征圖,作為檢測(cè)Head1[28]。在檢測(cè)時(shí),去掉20×20特征圖,取80×80特征圖作為Head2,取40×40特征圖作為Head3,繼續(xù)保持3個(gè)檢測(cè)尺度的Head結(jié)構(gòu),如圖5所示,原算法的結(jié)構(gòu)如圖5a所示,改進(jìn)后算法的結(jié)構(gòu)如圖5b所示。
圖5 改進(jìn)的檢測(cè)尺度結(jié)構(gòu)與原檢測(cè)尺度結(jié)構(gòu)Fig.5 Structure of imporved detect head and default detect head
試驗(yàn)是在Linux操作系統(tǒng)下,基于GPU、Pytorch和CUDA框架完成的,參數(shù)具體見(jiàn)表2。
表2 試驗(yàn)平臺(tái)參數(shù)Tab.2 Test platform related configuration
數(shù)據(jù)集采用在漁港建設(shè)的高點(diǎn)監(jiān)控?cái)z像頭拍攝的數(shù)據(jù),因本研究的主要目標(biāo)是漁船,但數(shù)據(jù)采集過(guò)程中發(fā)現(xiàn),還有部分舢板和執(zhí)法船等其他船只進(jìn)出漁港,所以將目標(biāo)分為3類(lèi):漁船、舢板和其他船只。共采集照片數(shù)量1 965張,如圖6、7所示,按照8∶1∶1的比例,分別是訓(xùn)練集、驗(yàn)證集和測(cè)試集。訓(xùn)練集照片1 572張,標(biāo)記對(duì)象2 200多個(gè),如圖6a所示,表示標(biāo)記對(duì)象的數(shù)量;圖6b表示標(biāo)注框的可視化,因?yàn)闃?biāo)注數(shù)據(jù)是經(jīng)過(guò)歸一化處理的,將所有標(biāo)注框中心點(diǎn)設(shè)置為(0.5,0.5),取前1 000個(gè)框進(jìn)行可視化表達(dá);圖6c表示標(biāo)注框中心點(diǎn)坐標(biāo)(x,y)的分布情況;圖6d表示經(jīng)過(guò)歸一化過(guò)的標(biāo)簽高度和寬度分布圖。
圖6 數(shù)據(jù)集類(lèi)別實(shí)例(船舶類(lèi)別)Fig.6 Dataset class instances(Ship category)
圖7 數(shù)據(jù)集的樣例圖片F(xiàn)ig.7 Sample image from dataset
本研究主要采用精確度(Precision,P)、召回率(Recall,R)、平均精確度(Averge Precision,AP)、平均精度均值(mean Averge Precision,mAP)和每秒檢測(cè)幀數(shù)(FPS)作為模型評(píng)價(jià)指標(biāo)。
將測(cè)試結(jié)果按表3混淆矩陣劃分為真陽(yáng)性(True Positive,TP)、真陰性(True Negative,TN)、假陽(yáng)性(False Positive,F(xiàn)P)、假陰性(False Negative,F(xiàn)N)[29]。
表3 混淆矩陣Tab.3 Confusion Matrix
召回率的計(jì)算如公式(1)所示,精確度的計(jì)算如公式(2)所示。
(1)
(2)
式中:Tp代表正確識(shí)別到漁船的數(shù)量,F(xiàn)N代表把漁船識(shí)別成非漁船的數(shù)量,R代表漁船目標(biāo)檢測(cè)的召回率,F(xiàn)p代表把非漁船識(shí)別成漁船的數(shù)量,P代表漁船目標(biāo)檢測(cè)的精確度。
平均精確度的計(jì)算公式如(3)所示。mAP是對(duì)平均精確度(AP)在所有類(lèi)別下取均值,計(jì)算公式如(4)所示。
(3)
(4)
式中:XAP代表平均精確度,XAPi代表第i類(lèi)目標(biāo)檢測(cè)的平均精確度,K代表標(biāo)記的類(lèi)別,mAP代表平均精確度的均值。
mAP@0.5定義為在交并比(IOU)閾值為0.5的情況下,對(duì)每一類(lèi)分別計(jì)算XAP,然后取均值,計(jì)算如公式(5)所示:
(5)
式中:XAP@0.5i代表交并比閾值為0.5的情況下,第i類(lèi)目標(biāo)的平均精確度,K代表標(biāo)記的類(lèi)別,mAP@0.5代表交并比閾值為0.5時(shí)平均精確度的均值。
mAP@[0.5:0.95]定義為在不同交并比閾值(從0.5以0.05的步長(zhǎng)增至0.95)上mAP的均值[22],計(jì)算如公式(6)所示:
mAP@[0.5:0.95]=
(6)
式中:mAP@0.5代表交并比為0.5時(shí)平均精確度的均值,mAP@0.55表交并比為0.55時(shí)平均精確度的均值,以此類(lèi)推。mAP@[0.5:0.95]代表在不同交并比閾值(從0.5以0.05的步長(zhǎng)增至0.95)上mAP的均值。
每秒傳輸幀數(shù)(Frames Per Second,F(xiàn)PS)是指畫(huà)面每秒傳輸幀數(shù),本研究選擇FPS作為檢測(cè)速率的評(píng)價(jià)指標(biāo)。
在改進(jìn)后的模型訓(xùn)練中,將迭代次數(shù)設(shè)置為100次,批訓(xùn)練數(shù)據(jù)量為64,初始學(xué)習(xí)率設(shè)置為0.01,權(quán)重衰減系數(shù)為0.000 5,訓(xùn)練動(dòng)量為0.8,優(yōu)化器(optimizer)選用Adam,Adam可以自動(dòng)調(diào)整學(xué)習(xí)率,在梯度稀疏或梯度存在很大噪聲的情況下表現(xiàn)較好。訓(xùn)練損失變化如圖8所示。
圖8 改進(jìn)后網(wǎng)絡(luò)模型收斂情況Fig.8 Convergence of improved network model
改進(jìn)后模型的精度-回歸曲線(Precision-Recall,P-R)如圖9所示。改進(jìn)后的模型性能如表4所示,改進(jìn)后算法對(duì)所有類(lèi)別的檢測(cè)精準(zhǔn)率、召回率、mAP@0.5和mAP@[0.5:0.95]分別達(dá)到98.1%、97.8%、98.6%、75.4%,并且在漁船的識(shí)別精度上mAP@0.5的值是98.7%。
表4 改進(jìn)后模型的性能Tab.4 Performance comparison and analysis of improved models
圖9 精度-回歸曲線圖Fig.9 PR-curve
試驗(yàn)結(jié)果證明,改進(jìn)算法對(duì)漁船的識(shí)別取得了較高的識(shí)別精度。
為了更好地驗(yàn)證改進(jìn)算法對(duì)原算法優(yōu)化的有效性,進(jìn)行了消融試驗(yàn),共驗(yàn)證5組網(wǎng)絡(luò),使用同樣的漁船數(shù)據(jù)集,試驗(yàn)結(jié)果如表5所示,加粗字體為算法最優(yōu)值。
表5 消融試驗(yàn)Tab.5 Ablation experiments
由表5數(shù)據(jù)可知,在YoloV5骨干網(wǎng)絡(luò)中融合CBAM模塊比YoloV5的mAP@0.5值提高了4.1%,檢測(cè)速度FPS降低了1.9;將YoloV5的PANet替換為加權(quán)雙向特征金字塔BiFPN,mAP@0.5值提高了3.8%,F(xiàn)PS降低了10;在模型預(yù)測(cè)時(shí),改用3個(gè)新的檢測(cè)尺度,去掉大目標(biāo)的檢測(cè)尺度,增加更小目標(biāo)的檢測(cè)尺度提升模型檢測(cè)精度,mAP@0.5值提高4.3%,F(xiàn)PS降低了16.1。試驗(yàn)結(jié)果表明,改進(jìn)算法的每個(gè)措施在性能方面均有所提升,與YoloV5相比,mAP@0.5值提高4.5%,精確度、召回率和mAP@[0.5:0.95],分別提升29.5%、0.5%、10.3%,雖然檢測(cè)效率FPS降低了3.7,但FPS大于90,對(duì)視覺(jué)影響不大,而且檢測(cè)精度得到較大的提高,基本滿足高點(diǎn)監(jiān)控漁船目標(biāo)場(chǎng)景下的檢測(cè)要求。
為了更加直觀地看出改進(jìn)算法和原算法之間的區(qū)別,隨機(jī)選取漁船圖片作為驗(yàn)證集,分別對(duì)原算法和改進(jìn)后的算法進(jìn)行驗(yàn)證,部分檢測(cè)結(jié)果如圖10所示,其中“fishBoat”代表漁船、“sampan”代表舢板、“o”代表其他船只。在Image1的檢測(cè)上可以發(fā)現(xiàn)本研究改進(jìn)算法在識(shí)別精度上有所提升;在Image2的檢測(cè)上原YoloV5算法在其他船只的識(shí)別上有錯(cuò)誤,將其他船只識(shí)別為舢板,而改進(jìn)后的算法檢測(cè)正確且檢測(cè)置信度也提高了;在Image3的檢測(cè)上,原YoloV5算法漏檢了遠(yuǎn)處小尺寸的舢板,改進(jìn)的算法將其識(shí)別了出來(lái)。通過(guò)以上多種檢測(cè)結(jié)果比較可知,改進(jìn)后的YoloV5算法在小目標(biāo)的漁船、舢板的檢測(cè)效果較好。
圖10 檢測(cè)結(jié)果Fig.10 Detection results
對(duì)比檢測(cè)口罩佩戴[30-31],本研究的檢測(cè)環(huán)境更加復(fù)雜、難度更大,尤其是遇到在大霧、水面反光等情況時(shí),檢測(cè)難度增加;對(duì)比檢測(cè)安全帽佩戴,基于改進(jìn)YoloV4的算法平均精度是91.17%[32],基于改進(jìn)YoloV3算法的精確度是96.5%[33],本研究的基于改進(jìn)YoloV5算法精確度高達(dá)98.6%,同樣在背景環(huán)境復(fù)雜、光線因素影響的情況下,本研究在漁船目標(biāo)的檢測(cè)平均識(shí)別準(zhǔn)確度上略高于安全帽的佩戴檢測(cè)準(zhǔn)確度;對(duì)比同樣基于監(jiān)控視頻進(jìn)行船舶目標(biāo)的檢測(cè),基于回歸深度卷積網(wǎng)絡(luò)的船舶檢測(cè)[34],在視頻檢測(cè)中每秒鐘檢測(cè)的幀數(shù)為78~80,本研究的基于改進(jìn)YoloV5算法每秒鐘平均檢測(cè)幀數(shù)為90.6,在檢測(cè)速度上更有優(yōu)勢(shì)。但本研究也有不足之處,比如缺乏在強(qiáng)逆光和海浪影響的環(huán)境下[35]漁船目標(biāo)檢測(cè)的研究和分析,下一步要擴(kuò)充不同天氣環(huán)境下的數(shù)據(jù)集,研究分析惡劣的海況下漁船目標(biāo)檢測(cè)性能,提高模型的魯棒性,使之適用更復(fù)雜多變的海況。
改進(jìn)YoloV5算法首先通過(guò)Kmeans++算法對(duì)錨框重新聚類(lèi),選擇適合漁船數(shù)據(jù)集的錨框尺寸;然后在YoloV5的骨干網(wǎng)絡(luò)中融入CBAM注意力機(jī)制獲取更多細(xì)節(jié)特征;再采用BiFPN加權(quán)雙向特征金字塔網(wǎng)絡(luò),快速進(jìn)行多尺度特征融合;最后在檢測(cè)尺度上的改變,提高了模型對(duì)小目標(biāo)漁船的檢測(cè)精度。研究表明,在漁船檢測(cè)效果上,改進(jìn)算法平均精度均值能達(dá)到98.6%,平均檢測(cè)時(shí)間為0.011s,能夠獲得較好的檢測(cè)準(zhǔn)確度和比較快的檢測(cè)速度,基本滿足休漁期管控期間漁船檢測(cè)的準(zhǔn)確性和實(shí)時(shí)性的需求。未來(lái)將繼續(xù)探索在惡劣天氣時(shí)模型的泛化能力,提高模型的魯棒性。
□