何維娟,江 濤,王 欣
(云南民族大學(xué) 數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院,云南 昆明 650500)
隨著社會經(jīng)濟(jì)發(fā)展,水上交通越來越繁忙,艦船之間會發(fā)生碰撞、翻倒和沉船等事故[1],因此,水上安全變成急需解決的一大問題.艦船是水上交通的重要載體,如何快速并準(zhǔn)確地識別艦船位置和檢測艦船類型,對艦船水上安全航行和違法行為檢測等有重要的意義,近年來,研究人員在遙感圖像開發(fā)中進(jìn)行了很多研究,公開的目標(biāo)檢測數(shù)據(jù)集以及大量檢測算法相繼被提出,提高艦船檢測的準(zhǔn)確率變成了艦船檢測的主要任務(wù).隨著遙感技術(shù)的快速發(fā)展,目標(biāo)檢測取得了很大的成功,但是在艦船遙感圖像中依舊存在很多難題,從當(dāng)前艦船遙感圖像目標(biāo)檢測的研究來看,存在以下幾個普遍的問題:艦船的種類較多并且大小不一,導(dǎo)致檢測難度增大;艦船檢測目標(biāo)較小,使其所占像素點較少;艦船圖像的成像受天氣、岸邊建筑和光照等因素的影響,從而引起艦船物體視覺的改變.
傳統(tǒng)的船舶檢測方法是基于船舶自動識別系統(tǒng)和艦船特征[2-3],例如,Li等[4]提出了一種改進(jìn)的空間聚類算法,從而來識別異常行為的艦船;Zhang等[5-6]利用AIS數(shù)據(jù)來判斷艦船是否碰撞,雖然這些研究在一定條件下都獲得了不錯的效果,但是在復(fù)雜的場景下實用性較差,在實際應(yīng)用中,由于存在識別精度低、檢測速度慢等諸多問題,傳統(tǒng)的艦船檢測依舊難以達(dá)到理想的檢測效果.
近年來,在各種圖像識別[7]中,基于深度學(xué)習(xí)的方法可以分為2種:一種是一階段回歸方法,包括SSD[8]、YOLOV 1[9]、YOLOV 2[10]、YOLOV3[11]等;另一種是兩階段區(qū)域建議方法,包括R-CNN[12]、Fast R-CNN[13]、Faster R-CNN[14]、R-FCN[15]等.在這兩類目標(biāo)檢測算法中,雖然在精度上兩階段算法更優(yōu)于一階段算法,但是在檢測速度上卻又遠(yuǎn)遠(yuǎn)不足,因為兩階段檢測算法普遍存在特征提取耗時長,難以達(dá)到實時的效果.為此,本文選擇了一階段中兼具精度與速度都良好的YOLOV3算法為框架基礎(chǔ)進(jìn)行研究,為提高艦船檢測的效果.對尺度特征進(jìn)行改進(jìn).
YOLOV3引入了FPN結(jié)構(gòu),使用了Darknet網(wǎng)絡(luò).YOLOV3是從YOLOV1和YOLOV2發(fā)展來的,但該方法借鑒了SSD方法中的多尺度思想,在保留了YOLO系列方法采用單階段網(wǎng)絡(luò)進(jìn)行高幀率檢測的同時,進(jìn)一步具備了檢測微小目標(biāo)和多尺度目標(biāo)的能力.經(jīng)過優(yōu)化迭代,它與SSD一樣準(zhǔn)確,但是比Faster R-CNN和SSD檢測速度更快,如圖1為Darknet-53網(wǎng)絡(luò)結(jié)構(gòu).
圖1 Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)
YOLOV3網(wǎng)絡(luò)將輸入的圖像分為S×S個網(wǎng)格,目標(biāo)的中心點落在某個網(wǎng)格,則這個網(wǎng)格就預(yù)測該目標(biāo),YOLOV3網(wǎng)絡(luò)可預(yù)測3種不同的尺度,每一種規(guī)模的尺度都可預(yù)測3個邊界框,每個框除了要得到目標(biāo)的位置(tx,ty,tw,th)外,還要預(yù)測置信度值.(tx,ty)是相對于預(yù)測框的位置,(tw,th)是相對于整體圖片的大小,因此都在(0,1)之間取值,得到的張量為S×S×[3×(4+1+n)],預(yù)測出的檢測框表示為:
(1)
式中:(x0,y0)為物體所在單元格的左上角坐標(biāo),(bx,by)檢測框的中心坐標(biāo),pw和ph分別為先驗框的寬度和高度,σ()為tx和ty歸一化到0~1;bw和bh分別為檢測框的寬度和高度.
艦船的總體檢測過程如圖2所示,獲取艦船目標(biāo)檢測數(shù)據(jù)集以后,通過標(biāo)注獲得xml文件,將數(shù)據(jù)進(jìn)行預(yù)處理,隨后輸入YOLOV3檢測網(wǎng)絡(luò)提取特征,最終得到檢測結(jié)果.
YOLOV3 算法使用的是DarkNet-53 網(wǎng)絡(luò)結(jié)構(gòu),通過將特征金字塔模型引入網(wǎng)絡(luò),合并輸入圖像的淺層和高層特征,使該網(wǎng)絡(luò)結(jié)構(gòu)能夠識別具有多尺度特征的圖像.該網(wǎng)絡(luò)主要由卷積層和池化層組成,配置的3個尺度的采樣特征圖,其中尺寸大小13×13的是下采樣特征圖,而尺寸大小分別為 52×52 、26×26的是上采樣特征圖.與單尺度特征識別相比,這種多尺度特征識別可以提高 YOLOV3 算法對不同尺度輸入圖像的適應(yīng)性和檢測的準(zhǔn)確率.
圖2 艦船目標(biāo)檢測流程
通常,DarkNet-53 網(wǎng)絡(luò)對大目標(biāo)物體具有理想的檢測效果,而對小目標(biāo)物體的檢測效果則較低.為此,在對 YOLOV3 算法的原始研究的基礎(chǔ)上,文中將著重于改進(jìn)多尺度特征檢測模塊,以提高識別圖像中較小的艦船準(zhǔn)確度.為了實現(xiàn)這一目標(biāo),結(jié)合檢測目標(biāo)的屬性,將原始算法中的 3 個尺度擴(kuò)展為4 個尺度,通過K-means聚類方法來獲得錨,并從中選取12個錨點框,其尺寸分別為: (5, 4)、(6, 13)、(13, 6)、(23, 10,)、(10, 24)、(36, 18)、(17, 40)、(73, 32)、(33, 76)、(59,212)、(107,121)、(191, 73).
因此,特征檢測可以基于每個尺度上的 3 個不同的錨點框.改進(jìn)后的多尺度特征預(yù)測的總體框架如圖 3 所示.圖3的檢測構(gòu)架表明.此框架所做的改進(jìn)主要是在YOLOV3-Darknet53的基礎(chǔ)上,將輸出的特征尺度由52×52增加到104×104,添加了一個104×104的特征尺度.
圖3 多尺度預(yù)測構(gòu)架
在這一節(jié)中,使用自制的DSTD數(shù)據(jù)集,訓(xùn)練了經(jīng)典的YOLOV3算法,以及與改進(jìn)的YOLOV3算法進(jìn)行實驗,討論了改進(jìn)的YOLOV3算法的可行性.
實驗使用了Windows10系統(tǒng),其中硬件環(huán)境為:中央處理器Intel i7-8750H,內(nèi)存32G,顯卡為顯存8G的NVIDIA GeForce RTX 2080.所有算法均基于Darknet-53在GPU下進(jìn)行訓(xùn)練和檢測.
文中除了特別說明以外,使用DSTD數(shù)據(jù)集所進(jìn)行的訓(xùn)練實驗中相關(guān)實驗參數(shù)如表1所示.
在YOLOV3算法下,訓(xùn)練階段設(shè)置 batch為64,輸入圖像為416×416,學(xué)習(xí)率為 0.001,訓(xùn)練迭代次數(shù)為 4 000,權(quán)重衰減為0.000 5,訓(xùn)練過程得到正常收斂效果.
表1 實驗參數(shù)
數(shù)據(jù)集質(zhì)量的高低直接影響檢測結(jié)果的好壞,現(xiàn)在常見的數(shù)據(jù)集都是面向自然場景下的多目標(biāo)檢測任務(wù),數(shù)據(jù)集中的單類目標(biāo)場景往往很單一,相應(yīng)目標(biāo)數(shù)量也很少,針對特定場景和特定目標(biāo)的數(shù)據(jù)集并不多見.因此,本文實驗選擇了自制的DSTD數(shù)據(jù)集,該數(shù)據(jù)集是面向遙感場景的大規(guī)模水面艦船目標(biāo)檢測數(shù)據(jù)集,其主要來源為DIOR、DOTA、NWPU-VHR、TGRS-HRRSD-Dataset-master等幾個開源數(shù)據(jù)集,數(shù)據(jù)集中包含4 854張艦船圖片,87 076 個艦船實例.DSTD數(shù)據(jù)集具有針對性強、規(guī)模較大;目標(biāo)尺寸變化大;圖片變化大;類內(nèi)多樣性高等特點,DSTD數(shù)據(jù)集部分艦船圖像數(shù)據(jù)示例如圖4.
為了使進(jìn)行實驗時訓(xùn)練和測試數(shù)據(jù)分布具有充分的相似性,因此在4 854張DSTD艦船遙感圖像中,隨機(jī)獲得2 911幅艦船圖像當(dāng)作訓(xùn)練集,測試集為剩下的1 943幅圖片(表2).由于每幅圖片至少包含一艘艦船,有的一副圖片包含多艘艦船,因此,艦船目標(biāo)數(shù)量不等于總的圖片數(shù).
圖4 DSTD數(shù)據(jù)集部分艦船圖像數(shù)據(jù)示例
表2 艦船目標(biāo)數(shù)據(jù)集
3.3.1 評價指標(biāo)
本實驗結(jié)果使用召回率(Recall)、平均精度(AP)以及幀率(FPS)作為評價指標(biāo).
1) 召回率(Recall)
(2)
式中:TP和FN分別為預(yù)測正確的樣本數(shù)量和預(yù)測錯誤的樣本數(shù)量.
2) 平均精度(Average Precision,AP)
(3)
平均準(zhǔn)確率定義為 P-R 曲線下方的面積.
3) 幀率(FPS) 目標(biāo)檢測每秒可以檢測的幀數(shù),使用此指標(biāo)可以評估到目標(biāo)檢的速度.
3.3.2 實驗結(jié)果
為了提高艦船遙感圖像目標(biāo)檢測的檢測精度,分別用YOLOV3和改進(jìn)后的YOLOV3對DSTD數(shù)據(jù)集進(jìn)行訓(xùn)練,并獲得各自的權(quán)重文件,YOLOV3模型訓(xùn)練時,使用官方代碼和默認(rèn)參數(shù),YOLOV3算法和改進(jìn)的YOLOV3算法對數(shù)據(jù)集進(jìn)行訓(xùn)練 4 000 次Batches,最后進(jìn)行結(jié)果評估,模型訓(xùn)練損失函數(shù)曲線如圖5所示.
如圖5所示,初始迭代損失(loss)高達(dá)5607,改進(jìn)YOLOV3實驗的損失值在200多次時就下降至個位數(shù).而YOLOV3的損失值在300多的時候才降為個位數(shù),總體來說,本文實驗中YOLOV3和改進(jìn)的YOLOV3的損失值差異并不是很明顯,曲線基本重合,但相對而言,改進(jìn)的YOLOV3較YOLOV3學(xué)習(xí)能力更強,收斂速度更快,訓(xùn)練效果更好.
圖5 損失函數(shù)
在對YOLOV3進(jìn)行改進(jìn)后,文中在測試數(shù)據(jù)集上進(jìn)行了與YOLOV3的對比實驗,實驗結(jié)果如表3所示,由表中可以看出,在相同的實驗環(huán)境里,本節(jié)提出改進(jìn)后的方法要比原始 YOLOV3 模型的速度稍慢一點,但是在識別精度上卻有很大的提高,YOLOV3算法精度為60.46%,改進(jìn)的YOLOV3算法精度為72.56%,精度提高了12.1個百分點;YOLOV3的召回率為87.50%,改進(jìn)后的YOLOV3的召回率可達(dá)到91.13%,提高了3.63%個百分點.改進(jìn)后的YOLOV3能夠保持一定速度的基礎(chǔ)上使精度有很大的提高,綜合考慮,改進(jìn)后的YOLOV3明顯優(yōu)于原始YOLOV3模型.
表3 實驗對比結(jié)果
本文針對艦船遙感圖像檢測中小目標(biāo)檢測普遍存在精度較低的問題,以YOLOV3網(wǎng)絡(luò)模型為基礎(chǔ),對YOLOV3中尺度的選擇進(jìn)行優(yōu)化及改進(jìn),實現(xiàn)了對艦船檢測的有效檢測,在自制具有規(guī)模較大、艦船目標(biāo)較多等優(yōu)點的DSTD遙感艦船目標(biāo)檢測數(shù)據(jù)集上進(jìn)行訓(xùn)練以及對比測試,實驗結(jié)果表明,本文對YOLOV3中尺度的改進(jìn),與原始的YOLOV3算法相比,召回率提高了3.63%,精度提高了12.1 %.該艦船檢測方法有效地解決了由小目標(biāo)問題引起的錯誤檢測和漏檢問題,相比于YOLOV3艦船檢測算法,在保證一定速度的前提下,擁有更高的艦船檢測準(zhǔn)確率,為艦船檢測的研究奠定了基礎(chǔ).