国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

改進(jìn)YOLOv3在航拍目標(biāo)檢測(cè)中的應(yīng)用

2020-04-07 10:48瑋,蒲瑋,劉
關(guān)鍵詞:航拍卷積尺寸

魏 瑋,蒲 瑋,劉 依

河北工業(yè)大學(xué) 人工智能與數(shù)據(jù)科學(xué)學(xué)院,天津300401

1 引言

航拍目標(biāo)檢測(cè)在車輛檢測(cè)、遠(yuǎn)程目標(biāo)追蹤、無人駕駛等領(lǐng)域有著十分重要的應(yīng)用[1]。隨著計(jì)算機(jī)視覺、人工智能技術(shù)的迅速發(fā)展,在眾多的目標(biāo)檢測(cè)算法中,基于深度學(xué)習(xí)的方法因其無需特征工程,適應(yīng)性強(qiáng),易于轉(zhuǎn)換等特點(diǎn)得到了較為廣泛的應(yīng)用[2]。目前通過深度學(xué)習(xí)來解決目標(biāo)檢測(cè)問題的方法主要有兩種:兩階段(two-stage)檢測(cè)模型與單階段(one-stage)檢測(cè)模型[3]。兩階段模型因其對(duì)圖片的兩階段處理過程得名,也稱為基于區(qū)域的檢測(cè)方法,主要包括R-CNN[4]、Fast R-CNN[5]、Faster R-CNN[6]、R-FCN[7]等。兩階段方法的檢測(cè)精度雖然很高,但耗時(shí)過長,難以達(dá)到實(shí)時(shí)檢測(cè)的效果。為了平衡檢測(cè)速度與精度,單階段檢測(cè)模型被提出。拋棄了粗檢測(cè)與精檢測(cè)結(jié)合的思想,經(jīng)過單個(gè)階段的檢測(cè)即可直接得到最終檢測(cè)結(jié)果,因此有著更快的檢測(cè)速度。單階段檢測(cè)方法也稱為基于回歸的方法,無需區(qū)域提取過程,直接從圖片獲得預(yù)測(cè)結(jié)果,實(shí)現(xiàn)了端到端的目標(biāo)檢測(cè)。主要包括YOLO[8]、SSD[9]、YOLOv2[10]、YOLOv3[11]等系列方法。

目前來看,YOLOv3方法維持了檢測(cè)速度與精度間的較好平衡。國內(nèi)外很多研究學(xué)者將其應(yīng)用到目標(biāo)檢測(cè)領(lǐng)域,并針對(duì)具體問題提出了不同的改進(jìn)方案。Benjdira 等[12]使用航拍汽車數(shù)據(jù)集對(duì)YOLOv3 和FasterRCNN 進(jìn)行對(duì)比,證明了在精度相當(dāng)?shù)那闆r下,YOLOv3在靈敏度和處理時(shí)間上均優(yōu)于FasterR-CNN 算法。Kharchenko 等[13]將YOLOv3 算法應(yīng)用到無人機(jī)或衛(wèi)星拍攝圖像的地面目標(biāo)檢測(cè)問題中,實(shí)現(xiàn)了較高的檢測(cè)能力和實(shí)時(shí)檢測(cè)速度。李耀龍等[14]將簡(jiǎn)化的Tiny-YOLO[15]算法應(yīng)用到飛機(jī)目標(biāo)檢測(cè)中,提高了檢測(cè)速度。戴偉聰?shù)萚16]將YOLOv3算法應(yīng)用于遙感圖像中的飛機(jī)檢測(cè),加入密集相連模塊,并結(jié)合多尺度特征檢測(cè),提高了飛機(jī)檢測(cè)的精度和召回率。

本文將YOLOv3 算法應(yīng)用于無人機(jī)航拍圖像的目標(biāo)檢測(cè)領(lǐng)域,為提高算法的適用性和準(zhǔn)確性,對(duì)YOLOv3算法進(jìn)行改進(jìn)。使用K-Means[17]方法對(duì)航拍數(shù)據(jù)集標(biāo)簽進(jìn)行維度聚類,計(jì)算最優(yōu)的寬高值并由此對(duì)YOLOv3中的anchor 進(jìn)行修改。針對(duì)航拍數(shù)據(jù)集中檢測(cè)目標(biāo)大小不一,以及小目標(biāo)分布過于密集的情況,對(duì)YOLOv3 算法的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),在保證檢測(cè)速度的前提下,使算法的檢測(cè)精度得到了較大提升,加快收斂速度并減少了參數(shù)計(jì)算量。

2 YOLOv3算法

YOLOv3 算法是Redmon 等于2018 年在YOLOv2的基礎(chǔ)上提出的,使用全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)[18],結(jié)合了殘差網(wǎng)絡(luò)ResNet[19]中的跳躍連接和特征金字塔網(wǎng)絡(luò)(Feature Pyramid Networks,F(xiàn)PN)[20]等算法思想,用步幅為2的卷積層替代池化層完成對(duì)特征圖的下采樣,同時(shí)在每個(gè)卷積層后增加批量歸一化操作(Batch Normalization,BN)[21]并使用激活函數(shù)LeakyRelu[22]來避免梯度消失及過擬合,通過殘差結(jié)構(gòu)加深網(wǎng)絡(luò)層數(shù),形成了53層的骨干網(wǎng)絡(luò)DarkNet-53。針對(duì)YOLOv2中由于下采樣造成的細(xì)粒度特征丟失問題,仿照FPN設(shè)計(jì)了多尺度預(yù)測(cè)網(wǎng)絡(luò),采用3個(gè)不同尺度的特征圖來進(jìn)行位置與類別預(yù)測(cè),有效提高了目標(biāo)檢測(cè)的準(zhǔn)確率。YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

首先,YOLOv3將輸入圖像縮放至416×416,把圖像劃分為S×S 個(gè)網(wǎng)格。每個(gè)網(wǎng)格負(fù)責(zé)預(yù)測(cè)中心落入該網(wǎng)格的目標(biāo),并計(jì)算出3個(gè)預(yù)測(cè)框。每個(gè)預(yù)測(cè)框?qū)?yīng)5+C個(gè)值,C 表示數(shù)據(jù)集中的類別總數(shù),5 代表預(yù)測(cè)邊界框的屬性信息:中心點(diǎn)坐標(biāo)(x,y)、框的寬高尺寸(w,h)和置信度(confidence)。網(wǎng)格預(yù)測(cè)的類別置信度得分為:

其中,若有目標(biāo)中心落入該網(wǎng)格,則Pr( obj ect )=1,否則Pr( obj ect )=0。Pr( cla ssi|object )為網(wǎng)格預(yù)測(cè)第i 類目標(biāo)的置信概率。IOU truthpred 為預(yù)測(cè)邊界框與真實(shí)框的交并比(Intersection Over Union,IOU)[23]。

最后,使用非極大值抑制(Non-Maximum Suppression,NMS)[23]算法篩選出置信得分較高的預(yù)測(cè)框,即為檢測(cè)框。

在損失函數(shù)中,YOLOv3算法將方差損失改為交叉熵?fù)p失。在置信度和類別預(yù)測(cè)中,考慮到某一目標(biāo)可能屬于多個(gè)類別,YOLOv3 對(duì)檢測(cè)目標(biāo)執(zhí)行多標(biāo)記分類,舍棄softmax 分類方法,采用多個(gè)獨(dú)立的邏輯分類器來預(yù)測(cè)類別分?jǐn)?shù),并設(shè)置閾值預(yù)測(cè)目標(biāo)的多個(gè)標(biāo)簽。

圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)

YOLOv3與其他常用目標(biāo)檢測(cè)框架效果對(duì)比如表1所示,可以看出YOLOv3能夠在檢測(cè)精度和速度上取得較好的平衡。

表1 YOLOv3與其他框架效果對(duì)比

3 改進(jìn)YOLOv3算法

YOLOv3 算法在MSCOCO、PASCAL VOC 等數(shù)據(jù)集上表現(xiàn)良好,但本文所使用的航拍數(shù)據(jù)集,實(shí)例種類眾多,且實(shí)例間的分布十分密集,這給檢測(cè)任務(wù)帶來了較大挑戰(zhàn)。因此要針對(duì)航拍數(shù)據(jù)集進(jìn)行目標(biāo)檢測(cè)任務(wù),就需要對(duì)YOLOv3 算法做出相應(yīng)改進(jìn),以適應(yīng)特定的需求。

3.1 對(duì)錨點(diǎn)進(jìn)行參數(shù)優(yōu)化

受Faster R-CNN 算法中提出的錨點(diǎn)機(jī)制啟發(fā),YOLOv3 算法中也引入了anchor 機(jī)制。早期的anchor值由經(jīng)驗(yàn)確定,而Redmon 在YOLO 系列算法中提出使用K-Means 聚類方法來獲取anchor 值。在目標(biāo)檢測(cè)任務(wù)中,合適的anchor取值能夠提高檢測(cè)任務(wù)的精度與速度。YOLOv3 算法中使用的anchor 是根據(jù)COCO 和VOC數(shù)據(jù)集訓(xùn)練所得,這9組anchor值分別是(10,13)、(16,30)、(33,23)、(30,61)、(62,45)、(59,119)、(116,90),(156,198),(373,326)。但如圖2 所示,對(duì)于本文使用的航拍數(shù)據(jù)集來說,COCO 與VOC 數(shù)據(jù)集中的實(shí)例尺寸過大,對(duì)應(yīng)anchor值也偏大,不適用于本數(shù)據(jù)集,因此需要重新進(jìn)行維度聚類,選取合適的anchor 參數(shù),對(duì)航拍數(shù)據(jù)集進(jìn)行更好的預(yù)測(cè)。

圖2 目標(biāo)檢測(cè)框的尺寸

考慮到在目標(biāo)檢測(cè)任務(wù)中,聚類的目的是使先驗(yàn)框(anchor box)與正確標(biāo)注(ground truth)的IOU 值盡量大,因此距離度量的目標(biāo)函數(shù)不使用歐氏距離,而是采用IOU作為衡量標(biāo)準(zhǔn),度量函數(shù)的公式如下:

其中,box 為樣本標(biāo)簽的目標(biāo)框,centroid 為聚類中心。IOU 越大,距離越小。

按照上述方法,在航拍數(shù)據(jù)集中使用K-Means 算法重新對(duì)實(shí)例的標(biāo)簽信息進(jìn)行聚類分析,得到的9 組anchor值為:(10,14)、(26,13)、(21,26)、(51,34)、(31,58)、(63,190)、(76,77)、(148,128)、(275,282)。將這些anchor 按照面積從小到大的順序分配給3 種尺度的特征圖,尺度較大的特征圖使用較小的anchor 框,每個(gè)網(wǎng)格需計(jì)算3個(gè)預(yù)測(cè)框。

預(yù)測(cè)時(shí)采用直接預(yù)測(cè)相對(duì)位置的方法,如圖3 所示,公式如下:

其中,cx和cy表示的是每個(gè)網(wǎng)格的左上角坐標(biāo)。pw和ph表示anchor映射到特征圖中的寬高值。tx、ty、tw、th是網(wǎng)絡(luò)需要學(xué)習(xí)的目標(biāo)。

圖3 邊框預(yù)測(cè)

3.2 網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)

3.2.1 DarkNet-53網(wǎng)絡(luò)

YOLOv3 中使用的特征提取網(wǎng)絡(luò)是DarkNet-53,網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。該網(wǎng)絡(luò)在DarkNet-19的基礎(chǔ)上,融合了ResNet 殘差網(wǎng)絡(luò)跳躍連接的思想,去掉池化層和全連接層,使用卷積層完成池化和上采樣操作。Dark-Net-53 中主要用到的是大小為3×3 與1×1 的卷積核,其中3×3卷積核主要負(fù)責(zé)增加通道數(shù),而1×1卷積核用于壓縮3×3 卷積后的特征表示,加深網(wǎng)絡(luò)深度的同時(shí),提高了網(wǎng)絡(luò)的性能。

3.2.2 改進(jìn)YOLOv3

在DarkNet-53 中,雖然加深網(wǎng)絡(luò)深度使特征提取能力得到了提高,但過多的下采樣及卷積操作會(huì)出現(xiàn)較小實(shí)例特征消失的情況。此外對(duì)于航拍數(shù)據(jù)集來說,實(shí)例間的尺寸大小相差懸殊,難以平衡檢測(cè)精度與特征大小。針對(duì)上述問題,增大圖像輸入尺寸,減少卷積層數(shù)并加入跳躍連接,降低小目標(biāo)漏檢率,并提高不同尺寸實(shí)例的檢測(cè)精度。改進(jìn)YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)如圖5(a)所示。

圖4 DarkNet-53網(wǎng)絡(luò)結(jié)構(gòu)圖

首先修改輸入圖像的尺寸,將原尺寸為416×416的三通道輸入圖像增大至608×608,確保多次下采樣操作后,較小尺寸的實(shí)例不會(huì)出現(xiàn)特征消失的情況,降低復(fù)雜場(chǎng)景下小目標(biāo)的漏檢率。然后使用修改的DarkNet-53作為特征提取網(wǎng)絡(luò),經(jīng)過5 次下采樣后,特征圖大小依次變?yōu)?04×304、152×152、76×76、38×38、19×19。沿用特征金字塔的思想,分別使用3個(gè)尺度的特征圖進(jìn)行預(yù)測(cè),即先對(duì)74 層處19×19 的特征圖進(jìn)行處理后,送入檢測(cè)較大尺度的YOLO層,同時(shí)將該尺度特征圖上采樣后與61層處38×38的特征圖進(jìn)行拼接操作,送入檢測(cè)中間尺度的YOLO 層。最后對(duì)當(dāng)前尺度的特征圖進(jìn)行上采樣,與36層處76×76的特征圖拼接后送入檢測(cè)小尺度的YOLO 層。多尺度特征檢測(cè)能夠較好的平衡不同尺寸實(shí)例的檢測(cè)情況。其中,如圖5(b)所示,在每個(gè)YOLO層進(jìn)行位置和類別預(yù)測(cè)之前,減少相連卷積層數(shù)量,使用3×3與1×1的卷積進(jìn)行特征維度轉(zhuǎn)換,并引入殘差網(wǎng)絡(luò)跳躍連接的思想進(jìn)行連接,緩解隨網(wǎng)絡(luò)層數(shù)加深而引起的效果退化問題。

4 實(shí)驗(yàn)與分析

4.1 數(shù)據(jù)預(yù)處理

本文使用的航拍圖像數(shù)據(jù)主要來源于DOTA[24]數(shù)據(jù)集,包含15 類目標(biāo):飛機(jī)、船只、儲(chǔ)蓄罐、棒球場(chǎng)、網(wǎng)球場(chǎng)、籃球場(chǎng)、田徑場(chǎng)、海港、橋、大型車輛、小型車輛、直升飛機(jī)、英式足球場(chǎng)、環(huán)形路線和游泳池。

本文實(shí)驗(yàn)的數(shù)據(jù)預(yù)處理過程主要包括兩個(gè)部分:圖像預(yù)處理與標(biāo)簽格式轉(zhuǎn)換。

航拍圖像的尺寸很大,通常在800×800~4 000×4 000 像素之間,基于卷積神經(jīng)網(wǎng)絡(luò)的特征提取網(wǎng)絡(luò)無法直接使用,因此將原始圖像統(tǒng)一按照512的步幅裁剪為1 024×1 024 大小??紤]到裁剪過程中目標(biāo)可能會(huì)被切分成兩部分,故對(duì)切分后的目標(biāo)與原目標(biāo)求面積比,比值小于0.8 的部分定義為新目標(biāo)。裁剪處理后共計(jì)12 260 張圖像,其中8 582 張作為訓(xùn)練集,3 678 張作為測(cè)試集。訓(xùn)練集中各類別目標(biāo)的圖像數(shù)量分布如圖6所示。

圖6 訓(xùn)練集中各類別目標(biāo)圖像的數(shù)量

DOTA數(shù)據(jù)集中使用的是任意四邊形邊界框,標(biāo)簽為順時(shí)針排列的邊界框的四個(gè)頂點(diǎn)坐標(biāo)。但本文改進(jìn)YOLOv3 方法需要的數(shù)據(jù)標(biāo)簽格式為x、y、width、height,其中x、y 為原任意四邊形的外接矩形邊界框的中心點(diǎn)坐標(biāo),width、height 為此邊界框的長和寬。因此對(duì)原數(shù)據(jù)格式進(jìn)行如下變換:

其中,xmax、xmin分別為x 坐標(biāo)中的最大、最小值,ymax、ymin分別為y 坐標(biāo)中的最大、最小值。使用時(shí)需要對(duì)這4個(gè)值進(jìn)行歸一化處理。

4.2 網(wǎng)絡(luò)訓(xùn)練

本文使用DOTA數(shù)據(jù)集的航拍圖像進(jìn)行訓(xùn)練。實(shí)驗(yàn)基于Pytorch 深度學(xué)習(xí)框架,使用方法為改進(jìn)YOLOv3算法,訓(xùn)練與測(cè)試均在NVIDIA 1070Ti 顯卡、CUDA9.0上進(jìn)行。經(jīng)實(shí)驗(yàn)驗(yàn)證,在此數(shù)據(jù)集上使用遷移學(xué)習(xí)進(jìn)行訓(xùn)練的效果較差,因此使用YOLOv3的官方權(quán)重作為網(wǎng)絡(luò)訓(xùn)練初始化參數(shù)。本文改進(jìn)方法的部分實(shí)驗(yàn)參數(shù)設(shè)置如表2所示。

表2 部分實(shí)驗(yàn)參數(shù)

4.3 實(shí)驗(yàn)結(jié)果及分析

隨著訓(xùn)練epoch數(shù)量的增加,對(duì)比的loss曲線如圖7所示,橙色線條代表原算法曲線,藍(lán)色線條為本文改進(jìn)方法曲線。橫坐標(biāo)表示訓(xùn)練輪數(shù),縱坐標(biāo)為訓(xùn)練過程中的loss值,其中,loss值為坐標(biāo)損失、邊界框長寬損失、置信度損失和類別損失值的總和。

圖7 loss曲線

由圖7 可以看出,原算法的初始損失值較大,約為7.86,而改進(jìn)算法的初始損失函數(shù)值較小,在3.24 左右。前期二者的損失值均下降較快,隨著訓(xùn)練輪數(shù)的增加,loss 曲線逐漸降低,趨于平穩(wěn)。當(dāng)epoch 達(dá)到120 左右時(shí),改進(jìn)方法的損失值在前幾個(gè)epoch 就已經(jīng)降至1以下,最終穩(wěn)定在0.294左右,而原算法的值約為0.536??梢悦黠@看出,相比原算法,改進(jìn)方法的效果更佳,顯著提高了收斂速度并降低了損失值。

圖8 為120 輪左右的mAP 和F1,其中橙色線代表YOLOv3 算法的效果,藍(lán)色線表示本文的改進(jìn)算法。YOLOv3 的mAP 在51%左右,而本文改進(jìn)算法的mAP可達(dá)65%左右。因此相比原方法,本文改進(jìn)方法在檢測(cè)精度及檢測(cè)效果方面均得到了較大提升。

圖8 實(shí)驗(yàn)結(jié)果圖

表3為使用本文改進(jìn)YOLOv3算法時(shí),測(cè)試集中各類別目標(biāo)的mAP與F1 值,其中過長的類別名稱用單詞首字母簡(jiǎn)寫表示。表3顯示,本文改進(jìn)方法在航拍數(shù)據(jù)集上的mAP 可達(dá)65.5%,F(xiàn)1 為0.257。其中尺寸較大、分布稀疏的目標(biāo),如網(wǎng)球場(chǎng)(tennis-court)、飛機(jī)(plane)的檢測(cè)效果較好。而尺寸較小且分布過于密集的實(shí)例,如船只(ship)的檢測(cè)效果仍相對(duì)較低。

表3 本文算法檢測(cè)效果

圖9 為算法改進(jìn)前后的檢測(cè)效果對(duì)比圖。使用同一組測(cè)試圖片,第一行使用的是YOLOv3 算法,第二行是本文改進(jìn)方法??梢钥闯?,圖9(a)組圖片中,改進(jìn)方法比原算法多檢測(cè)出了外圈環(huán)形跑道。圖9(b)組圖片中目標(biāo)尺寸較大且分布稀疏,YOLOv3 只檢測(cè)出了2個(gè)港口harbor,而本文改進(jìn)方法檢測(cè)出了4個(gè),其中較小的目標(biāo)船只(ship)也沒有發(fā)生漏檢情況。圖9(c)組圖片,由于圖中的目標(biāo)主要是尺寸較小且分布過于密集的船只,因此檢測(cè)效果相對(duì)來說都不是很好。YOLOv3方法檢測(cè)出98 個(gè)船只和11 個(gè)港口,改進(jìn)方法檢測(cè)出112 個(gè)船只和11 個(gè)港口,在圖片右下角的位置密集分布了很多尺寸更小的實(shí)例,原算法沒有檢測(cè)出任何目標(biāo),但本文的改進(jìn)方法檢測(cè)出了部分船只。

使用SSD、Faster R-CNN、YOLOv3、Tiny-YOLOv3以及本文改進(jìn)算法進(jìn)行對(duì)比,結(jié)果如表4所示。

表4 不同算法檢測(cè)結(jié)果對(duì)比

由圖9和表4可見,改進(jìn)的YOLOv3算法與原YOLOv3相比,平均檢測(cè)時(shí)間減少了37 ms,mAP提高了12.7%,且在一定程度上緩解了小目標(biāo)的漏檢情況。Tiny-YOLOv3算法的檢測(cè)速度較快,但精度很差。YOLOv3的檢測(cè)準(zhǔn)確率比Faster R-CNN 稍差,但檢測(cè)速度約為其129 倍。而SSD 算法無論在檢測(cè)精度還是檢測(cè)速度上都較差。因此,本文改進(jìn)的YOLOv3算法在實(shí)時(shí)性及檢測(cè)精度上達(dá)到了較好的平衡,效果更佳。

5 結(jié)束語

本文將YOLOv3 算法應(yīng)用到航拍圖像的目標(biāo)檢測(cè)中,針對(duì)航拍圖像中目標(biāo)尺寸大小不一且分布不均的問題,使用K-Means 聚類方法優(yōu)化參數(shù),并提出了改進(jìn)YOLOv3 算法,在保證實(shí)時(shí)檢測(cè)速度的前提下,提高了航拍圖像的目標(biāo)檢測(cè)效果。改進(jìn)方法比原方法的mAP提高了12.7%,在加快了收斂速度并降低了漏檢率的同時(shí)提高了檢測(cè)準(zhǔn)確性。

由于本文改進(jìn)方法對(duì)航拍圖像中尺寸較小、分布過于密集的目標(biāo)仍存在檢測(cè)上的局限性,因此下一步將結(jié)合旋轉(zhuǎn)邊界框的思路進(jìn)行進(jìn)一步的深入研究。

猜你喜歡
航拍卷積尺寸
CIIE Shows Positive Energy of Chinese Economy
基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
航拍巴彥呼碩
卷積神經(jīng)網(wǎng)絡(luò)的分析與設(shè)計(jì)
從濾波器理解卷積
航拍,蒼穹下的醉美視角
難忘的航拍
基于傅里葉域卷積表示的目標(biāo)跟蹤算法
《航拍中國》美得讓人想哭
D90:全尺寸硬派SUV
抚远县| 繁昌县| 永清县| 武川县| 乌拉特后旗| 游戏| 连江县| 疏勒县| 麦盖提县| 云林县| 北宁市| 开鲁县| 余姚市| 墨竹工卡县| 吉首市| 澎湖县| 吉安市| 平度市| 新蔡县| 铜陵市| 固阳县| 贞丰县| 铁岭市| 泸水县| 全南县| 德令哈市| 关岭| 丽水市| 莫力| 诸暨市| 三亚市| 车致| 汾西县| 资溪县| 潢川县| 凌云县| 金堂县| 泸定县| 郁南县| 茌平县| 乌审旗|