王炳德, 楊柳濤
(上海船舶運(yùn)輸科學(xué)研究所 航運(yùn)技術(shù)與安全國(guó)家重點(diǎn)實(shí)驗(yàn)室, 上海 200135)
隨著海洋資源的不斷勘探開(kāi)發(fā)和海洋儀器的不斷發(fā)展,海洋目標(biāo)檢測(cè)在監(jiān)測(cè)、跟蹤和對(duì)抗等諸多領(lǐng)域發(fā)揮著重要作用。隨著我國(guó)船舶裝備的快速發(fā)展,對(duì)船舶檢測(cè)的精度和實(shí)時(shí)性要求也越來(lái)越高。因此,無(wú)論在軍事、民用還是在商業(yè)領(lǐng)域,不斷提高船舶檢測(cè)的技術(shù)都具有重要意義。
在深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Network, DCNN)介入之前,傳統(tǒng)的目標(biāo)檢測(cè)和識(shí)別算法都基于原始的手工提取特征方法,其主要流程為區(qū)域選擇、提取特征、分類回歸。其中比較有代表性的可變形組件模型(Deformable Parts Model,DPM)算法[1],其基本思想是先提取DPM人工特征,再用latentSVM分類。DPM算法在目標(biāo)檢測(cè)中大大提高了人工特征的精度,但特征相對(duì)復(fù)雜,計(jì)算速度較慢。傳統(tǒng)的目標(biāo)檢測(cè)與識(shí)別算法不能保證其實(shí)時(shí)性和泛化性能。
近年來(lái),隨著大數(shù)據(jù)的日趨深入和計(jì)算速度的不斷提高,深度學(xué)習(xí)技術(shù)得到快速發(fā)展。KRIZHEVSKY等[2]首先提出深度卷積神經(jīng)網(wǎng)絡(luò)GIRSHICK等[3]結(jié)合深度神經(jīng)網(wǎng)絡(luò)和圖像目標(biāo)檢測(cè)做了一系列卓有成效的工作,從R-CNN(Region-CNN)到Fast R-CNN[4],再到Faster R-CNN[5],奠定了目標(biāo)檢測(cè)算法的經(jīng)典結(jié)構(gòu)。神經(jīng)網(wǎng)絡(luò)作為一種端到端模型,避免人工設(shè)計(jì)特征帶來(lái)的巨大消耗,隨著模型的不斷深化,準(zhǔn)確率也不斷提高。但由于R-CNN系列算法本身結(jié)構(gòu)的限制,其檢測(cè)速度遇到瓶頸,難以滿足部分場(chǎng)景實(shí)時(shí)性的需求。因此,REDMON等[6]提出一種基于回歸方法的YOLO(You Only Look Once)目標(biāo)檢測(cè)算法,在保證一定準(zhǔn)確率的前提下,速度得到極大提升。LIU等[7]將YOLO的回歸思想和Faster R-CNN的anchor box機(jī)制結(jié)合提出SSD(Single Shot MultiBox Detector)算法,在保持YOLO算法快速特性的同時(shí),也保證了Faster R-CNN的邊框定位效果。隨后,REDMON等[8-9]又對(duì)YOLO算法不斷進(jìn)行改進(jìn),先后發(fā)表了YOLO9000等論文,其中YOLOv3具有較高的準(zhǔn)確率和良好的檢測(cè)速率,能夠滿足船舶目標(biāo)檢測(cè)對(duì)精度和實(shí)時(shí)性的要求。
目前,YOLOv3算法網(wǎng)絡(luò)模型在目標(biāo)檢測(cè)中的應(yīng)用較為廣泛,考慮到Y(jié)OLOv3算法的優(yōu)點(diǎn)以及船舶目標(biāo)檢測(cè)對(duì)高精度與實(shí)時(shí)性要求的日益迫切,故將YOLOv3算法應(yīng)用到船舶目標(biāo)檢測(cè)方法中,開(kāi)展基于YOLOv3的船舶目標(biāo)檢測(cè)算法研究。本文主要分析YOLOv3算法的網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),制作船舶目標(biāo)檢測(cè)所需的數(shù)據(jù)集,并對(duì)YOLOv3算法進(jìn)行一些改進(jìn)和優(yōu)化,通過(guò)云服務(wù)器訓(xùn)練算法網(wǎng)絡(luò)模型,最后進(jìn)行試驗(yàn)對(duì)比,驗(yàn)證了算法的檢測(cè)效果和性能。
YOLO v3是一種深度學(xué)習(xí)方法,其使用一種新的深度網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)特征提取,這個(gè)網(wǎng)絡(luò)主要是由一系列的1×1和3×3的卷積層組成,因?yàn)榫W(wǎng)絡(luò)中共有53個(gè)卷積層,所以叫做Darknet-53。Darknet-53的結(jié)構(gòu)見(jiàn)圖1左側(cè),右側(cè)為基本的卷積層和殘差塊結(jié)構(gòu)示意。其中殘差塊借鑒了ResNet網(wǎng)絡(luò)的殘差結(jié)構(gòu),在一些層之間設(shè)置快捷鏈路[10],解決了深度網(wǎng)絡(luò)的退化問(wèn)題,讓網(wǎng)絡(luò)結(jié)構(gòu)可以更深。同時(shí),YOLOv3借鑒了FPN(Feature Pyramid Networks)[11]的特征融合金字塔思想,通過(guò)上采樣和特征融合方法,最終輸出3種不同尺度的特征圖(13×13,26×26,52×52)。對(duì)于小目標(biāo),大尺度特征圖提供分辨率信息,小尺度特征圖提供語(yǔ)義信息;而對(duì)于大目標(biāo),直接是小尺度特征圖同時(shí)提供分辨率和語(yǔ)義信息。利用多尺度特征檢測(cè)可增加特征的豐富度,提升大目標(biāo)和小目標(biāo)的檢測(cè)效果。
損失函數(shù)是決定網(wǎng)絡(luò)效果的重要參數(shù)之一,在模型的訓(xùn)練過(guò)程中,不斷調(diào)整網(wǎng)絡(luò)中的參數(shù),優(yōu)化損失函數(shù)Loss的值達(dá)到最小,完成模型的訓(xùn)練。YOLOv3的損失函數(shù)主要由邊界框中心點(diǎn)(x,y)的預(yù)測(cè)誤差、邊界框的寬高(w,h)預(yù)測(cè)誤差、置信度誤差和分類預(yù)測(cè)誤差等4部分組成。具體的計(jì)算為
圖1 YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)圖
(1)
(2)
在深度學(xué)習(xí)中數(shù)據(jù)集質(zhì)量會(huì)直接影響最終檢測(cè)的效果,同時(shí)還需要足量的樣本來(lái)使得網(wǎng)絡(luò)能夠充分學(xué)習(xí)待檢測(cè)目標(biāo)的特征,因此建立船舶目標(biāo)檢測(cè)數(shù)據(jù)集見(jiàn)表1。
表1 船舶目標(biāo)檢測(cè)數(shù)據(jù)集 張
數(shù)據(jù)集采用PASCAL VOC 數(shù)據(jù)集格式,通過(guò)百度圖片、谷歌圖片、爬蟲(chóng)、截取ImageNet數(shù)據(jù)集等方式,得到4 000張船舶圖像。隨后將圖像尺寸統(tǒng)一縮放為416×416,再通過(guò)手工標(biāo)記、批量修改等方式得到包含邊界框坐標(biāo)和類別信息的xml文件。最后,根據(jù)相應(yīng)比例將樣本隨機(jī)分配給訓(xùn)練集和驗(yàn)證集,完成數(shù)據(jù)集的構(gòu)建。
YOLOv3算法在目標(biāo)檢測(cè)領(lǐng)域已經(jīng)取得很好的檢測(cè)效果,但對(duì)于特定的船舶目標(biāo)檢測(cè),可進(jìn)行一些改進(jìn)和優(yōu)化,以得到更好的檢測(cè)效果和性能。
1.4.1k-means[12]聚類先驗(yàn)框
YOLOv3算法使用邊界框來(lái)預(yù)測(cè)目標(biāo)物體在圖像中的具體位置,通過(guò)預(yù)先給定的9組先驗(yàn)框,深度網(wǎng)絡(luò)在訓(xùn)練過(guò)程中不斷調(diào)整邊界框的尺寸,最終得到目標(biāo)的檢測(cè)框。因此,若一開(kāi)始就選擇更好的、更有代表性的先驗(yàn)框,那么網(wǎng)絡(luò)就更容易得到準(zhǔn)確的預(yù)測(cè)位置。YOLOv3算法本身的先驗(yàn)框是根據(jù)coco數(shù)據(jù)集中80個(gè)類別的數(shù)據(jù)所得到的,對(duì)于船舶目標(biāo)檢測(cè)并不完全適用。根據(jù)已經(jīng)構(gòu)建的船舶目標(biāo)檢測(cè)數(shù)據(jù)集,使用k-means聚類算法得到最優(yōu)的先驗(yàn)框,并分配給3種不同尺寸的特征圖。
標(biāo)準(zhǔn)的k-means方法用的是歐氏距離,但是這樣會(huì)使得大的邊界框擁有更大的誤差。因此,使用目標(biāo)檢測(cè)算法中常用的性能指標(biāo)交并比(Intersection over Union,IOU)來(lái)代替歐氏距離,聚類算法使用的距離公式[13]為
d(box,centroid)=1-IOU(box,centroid)
(3)
IOU的計(jì)算公式見(jiàn)圖2,IOU越大代表檢測(cè)框和目標(biāo)越接近、相似度越高,而距離判定(1-IOU)就越近。
圖2 IOU計(jì)算公式
設(shè)定k=9,總共聚類出9種尺寸的先驗(yàn)框。聚類結(jié)果見(jiàn)圖3。分為9種不同顏色的類別,9個(gè)星星代表每個(gè)類別的聚類中心,其坐標(biāo)即為新的先驗(yàn)框的寬高維度。
圖3 聚類結(jié)果
將得到的先驗(yàn)框平均分配給不同尺度的特征圖。在最小的13×13特征圖上(有最大的感受野)應(yīng)用較大的先驗(yàn)框(302,109)、(347,219)、(380,364),適合檢測(cè)較大的對(duì)象;在中等的26×26特征圖上(中等感受野)應(yīng)用中等的先驗(yàn)框(158,77)、(187,285)、(278,330),適合檢測(cè)中等大小的對(duì)象;在較大的52×52特征圖上(較小的感受野)應(yīng)用較小的先驗(yàn)框(36,44)、(62,144)、(117,231),適合檢測(cè)較小的對(duì)象。
1.4.2mixup[14]
mixup是一種數(shù)據(jù)增強(qiáng)方法,每次隨機(jī)取2個(gè)樣本點(diǎn)(xi,yi)、(xj,yj)然后按照如下的方式生成1個(gè)新的虛擬樣本點(diǎn)為
(4)
(5)
式(4)和式(5)中:λ~Beta(α,α),α∈(0,∞)。mixup為鄰域風(fēng)險(xiǎn)最小化的一種形式,結(jié)合先驗(yàn)知識(shí),生成特征向量的線性插值來(lái)擴(kuò)展訓(xùn)練分布。mixup在很少的幾行代碼中就可得以實(shí)施,并且很少或幾乎沒(méi)有計(jì)算開(kāi)銷。在廣泛的評(píng)估中,結(jié)果表明:mixup改進(jìn)了當(dāng)前最先進(jìn)的模型在ImageNet、CIFAR、語(yǔ)音和表格數(shù)據(jù)集中的泛化誤差。此外,mixup有助于消除對(duì)錯(cuò)誤標(biāo)簽的記憶、對(duì)抗樣本的敏感性以及對(duì)抗訓(xùn)練的不穩(wěn)定性。
1.4.3 標(biāo)簽平滑化[15]
在多類別訓(xùn)練任務(wù)中,對(duì)于給定的數(shù)據(jù)集的標(biāo)簽類別,將正樣本設(shè)為1,負(fù)樣本設(shè)為0,是一個(gè)one-hot向量:
(6)
式(6)中:y為目標(biāo)的真實(shí)類別;i為多類別中的一類。
這樣會(huì)導(dǎo)致模型過(guò)于相信預(yù)測(cè)的類別,當(dāng)數(shù)據(jù)出現(xiàn)噪聲的時(shí)候,使得訓(xùn)練結(jié)果出現(xiàn)偏差。同時(shí),在數(shù)據(jù)量分布不均衡的時(shí)候,過(guò)度依賴某一類數(shù)量多的標(biāo)簽會(huì)出現(xiàn)過(guò)擬合現(xiàn)象。
標(biāo)簽平滑化最早在Inception v2中被提出,是一種正則化的策略。[16]其通過(guò)“軟化”傳統(tǒng)的one-hot類型標(biāo)簽,使得在計(jì)算損失值時(shí)能夠有效抑制過(guò)擬合現(xiàn)象。其將標(biāo)簽的真實(shí)概率分布改為
(7)
式(7)中:k為總的分類類別。更新后的分布就相當(dāng)于往真實(shí)分布中加入噪聲ε(為方便計(jì)算,ε通常取均勻分布), 減少標(biāo)簽的真實(shí)類別在計(jì)算損失值時(shí)的權(quán)重,同時(shí)增加其他類別在損失函數(shù)中的權(quán)重。最終在訓(xùn)練網(wǎng)絡(luò)時(shí),最小化預(yù)測(cè)概率和真實(shí)概率的交叉熵,從而得到最優(yōu)的預(yù)測(cè)概率分布為
(8)
式(8)中:α可取任意實(shí)數(shù)。
因此,在YOLOv3網(wǎng)絡(luò)模型訓(xùn)練時(shí),加入標(biāo)簽平滑化可在一定程度上抑制過(guò)擬合現(xiàn)象,增加網(wǎng)絡(luò)的泛化能力,提升分類效果。
本文的試驗(yàn)使用谷歌的Colaboratory工具,Colaboratory 是一個(gè) Google 研究項(xiàng)目,旨在幫助傳播機(jī)器學(xué)習(xí)培訓(xùn)和研究成果。其是一個(gè) Jupyter 筆記本環(huán)境,預(yù)裝了Keras和Pytorch等深度學(xué)習(xí)框架,并且完全在云端運(yùn)行。具體的硬件配置為16 G內(nèi)存,16 G顯存的Tesla T4 GPU,CUDA版本為10.0,并可與谷歌云盤(pán)進(jìn)行數(shù)據(jù)互通,方便訓(xùn)練數(shù)據(jù)的保存和下載。
試驗(yàn)選取最常用的3個(gè)目標(biāo)檢測(cè)算法Faster R-CNN、SSD以及YOLOv3與改進(jìn)后的YOLOv3算法進(jìn)行對(duì)比分析,以驗(yàn)證模型的檢測(cè)效果以及優(yōu)化策略的有效性。其中基本的超參數(shù)設(shè)置為:最大訓(xùn)練輪數(shù)為500,初始學(xué)習(xí)率和學(xué)習(xí)率衰減分別配置為0.000 1 和0.1,動(dòng)量和批量大小分別為0.9和16.0,最終經(jīng)過(guò)訓(xùn)練得到最優(yōu)的網(wǎng)絡(luò)模型用于試驗(yàn)對(duì)比。
選取的目標(biāo)檢測(cè)模型的評(píng)價(jià)指標(biāo)為:平均精度均值(mean Average Precision,mAP)和每秒檢測(cè)幀數(shù)(Frames Per Second,FPS),其中mAP的定義為
(9)
(10)
(11)
式(9)~式(11)中:Precision為準(zhǔn)確率;Recall為召回率[17];TP為真正例;FP為假正例;FN為假負(fù)例;AP為某一類的平均精度,而mAP為所有類別的AP再取平均值。通過(guò)訓(xùn)練可分別得到4種算法的網(wǎng)絡(luò)模型,并可畫(huà)出4種模型的mAP變化曲線見(jiàn)圖4。
圖4 4種算法的mAP變化曲線
模型在測(cè)試集上的性能見(jiàn)表2,由表2可知:改進(jìn)后的YOLOv3算法雖然在FPS上稍稍落后于SSD算法,但也達(dá)到了30 FPS,滿足實(shí)時(shí)性要求;而在精度指標(biāo)mAP上均超過(guò)其他算法,達(dá)到了89.90%,具有優(yōu)異的檢測(cè)性能。
表2 算法對(duì)比結(jié)果
原始YOLOv3算法(YOLOv3_1)和改進(jìn)YOLOv3算法(YOLOv3_2)的損失值曲線圖見(jiàn)圖5。由圖5可知:改進(jìn)后算法的邊界框中心點(diǎn)損失以及寬高損失收斂更快、Loss值更小,k-means聚類先驗(yàn)框的優(yōu)化策略起到了明顯的作用;比較置信度損失可看出兩種算法的Loss值差距很小,改進(jìn)算法使用mixup方法生成的虛擬樣本對(duì)損失函數(shù)幾乎無(wú)影響;而比較分類損失的曲線圖,可看出改進(jìn)算法的曲線收斂較慢,是因?yàn)闃?biāo)簽平滑化方法會(huì)輕微的抑制收斂速度,但最終的損失值不變,且可提高最終的mAP值。由總的Loss變化曲線可得出,改進(jìn)算法的收斂更快、Loss值更低,實(shí)現(xiàn)算法性能的優(yōu)化,最終的檢測(cè)精度mAP也獲得了提高,見(jiàn)圖6。
a) 中心點(diǎn)損失
b) 寬高損失
c) 置信度損失
d) 分類損失
a) 總損失變化
b) mAP變化
將待檢測(cè)圖像輸入訓(xùn)練所得的網(wǎng)絡(luò)模型,即可完成檢測(cè),4種算法的檢測(cè)效果對(duì)比見(jiàn)圖7。其中:圖7a中Faster R-CNN算法的檢測(cè)結(jié)果很差,出現(xiàn)了明顯的錯(cuò)檢和漏檢;圖7b和圖7c均檢測(cè)到了3個(gè)船舶目標(biāo),YOLOv3算法的檢測(cè)結(jié)果的置信度更高,檢測(cè)效果更好,但兩種算法對(duì)于小目標(biāo)的檢測(cè)效果不很理想;而圖7d改進(jìn)算法的檢測(cè)結(jié)果中,圖像中的所有船舶目標(biāo)都能夠被完全檢測(cè)出來(lái),并使用相應(yīng)尺度的邊界框準(zhǔn)確地標(biāo)記出來(lái),檢測(cè)效果最好,可見(jiàn)優(yōu)化策略提高了YOLOv3算法對(duì)于小目標(biāo)的檢測(cè)效果。
為驗(yàn)證算法的魯棒性,對(duì)海霧環(huán)境下的船舶圖像進(jìn)行檢測(cè),其檢測(cè)效果對(duì)比見(jiàn)圖8。其中:圖8a中Faster R-CNN算法未檢測(cè)到目標(biāo);圖8b中SSD算法檢測(cè)到了船舶目標(biāo),但檢測(cè)框偏大,置信度勉強(qiáng)達(dá)到0.45的篩選閾值;圖8c和圖8d中YOLOv3和改進(jìn)YOLOv3算法均成功檢測(cè)到目標(biāo),檢測(cè)效果良好,而改進(jìn)算法置信度稍高一點(diǎn),檢測(cè)性能更高。結(jié)果表明算法具有魯棒性。
a) Faster R-CNN
b) SSD
c) YOLOv3
d) 改進(jìn)YOLOv3
a) Faster R-CNN
b) SSD
c) YOLOv3
d) 改進(jìn)YOLOv3
驗(yàn)證改進(jìn)算法的檢測(cè)性能和魯棒性后,可進(jìn)一步將數(shù)據(jù)集細(xì)分為9類:集裝箱船、救生船、郵船、帆船、快艇、小船、散貨船、油船、雜貨船,并重新訓(xùn)練可得到多類別船舶目標(biāo)檢測(cè)模型,其檢測(cè)結(jié)果見(jiàn)圖9。
a) 集裝箱船
b) 救生船
c) 郵船
d) 帆船
e) 快艇
f) 小船
g) 散貨船
h) 油船
i) 雜貨船
本文基于YOLOv3算法模型,采用k-means聚類先驗(yàn)框、mixup、標(biāo)簽平滑化等優(yōu)化策略對(duì)算法進(jìn)行改進(jìn)和優(yōu)化,提出一種船舶目標(biāo)實(shí)時(shí)檢測(cè)的方法。使用自制船舶圖像數(shù)據(jù)集,通過(guò)云服務(wù)器訓(xùn)練網(wǎng)絡(luò)模型,并與Faster-RCNN、SSD以及YOLOv3等算法進(jìn)行對(duì)比分析。試驗(yàn)結(jié)果表明:改進(jìn)算法的mAP達(dá)到了89.90%,優(yōu)于其他算法,具有良好的檢測(cè)效果和魯棒性;同時(shí)檢測(cè)速度達(dá)到30 FPS,滿足船舶目標(biāo)實(shí)時(shí)檢測(cè)的要求。