馮 號,黃朝兵*,文元橋
(1.武漢理工大學(xué) 信息工程學(xué)院,武漢 430070;2.武漢理工大學(xué) 智能交通系統(tǒng)研究中心,武漢,430063)
近年來,隨著計算機運算能力的不斷提升,深度學(xué)習(xí)被廣泛應(yīng)用于目標檢測。相較于傳統(tǒng)的目標檢測算法,使用深度學(xué)習(xí)進行目標檢測的過程就像一個黑匣子,深度學(xué)習(xí)模型通過模擬人腦的視覺感知系統(tǒng),直接從原始圖像中提取特征并逐層傳遞,以獲得圖像的高維信息。目前優(yōu)秀的深度學(xué)習(xí)檢測模型大致可以分為兩類:第一類模型將目標檢測分為候選框選取和目標分類兩階段[1],代表算法有R-CNN(Region-Convolutional Neural Network)[2]、Fast R-CNN[3];第二類為一階段模型,將分類與定位看作回歸任務(wù)來進行,典型的代表算法有YOLO(You Only Look Once)[4-7]、Retina-Net[8]。
遙感圖像通常由航空航天平臺獲取,其中目標的尺寸相對背景而言比較小,對這些小目標進行檢測是富有挑戰(zhàn)的研究任務(wù)[9]。小目標的定義方式有兩種:一種是相對尺寸的定義,若目標的長寬是原圖像的1/10,即認為是小目標;另一種定義方式認為面積小于32×32 像素的目標是小目標。小目標檢測一直都是目標檢測任務(wù)中的難點,Lin 等[10]提出的特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN),首先在小尺度特征圖上采樣,然后與大尺度特征圖進行融合,最后再進行預(yù)測,使小目標檢測的精度提升顯著;Kisantal等[11]將包含小目標的樣本進行過采樣,使小目標的檢測精度有較大提升;Liu等[12]提出了感受野塊(Receptive Field Block,RFB)結(jié)構(gòu),通過引入空洞卷積,增大感受野,進而提高小目標的檢測精度;邵慧翔等[13]對錨框進行了優(yōu)化,在多尺度訓(xùn)練過程中提升目標與錨框的貼合程度,進而提升檢測精度;于洋等[14]通過在YOLOv2中加入直通層對船舶目標進行檢測,與原始 YOLOv2 算法相比準確率有所提高;Ye 等[15]提出自適應(yīng)空間特征融合(Adaptively Spatial Feature Fusion,ASFF)模塊,對模型中的信息流進行重新分配權(quán)重,以獲得對檢測有用的信息。
雖然現(xiàn)有的深度學(xué)習(xí)方法在小目標檢測任務(wù)中取得了一些的成果,但是大部分目標檢測算法在遙感圖像小目標檢測任務(wù)中精度不高。這是因為骨干神經(jīng)網(wǎng)絡(luò)如VGG(Visual Geometry Group)系 列[16]和ResNet(Residual Network)系 列[17]都有幾次下采樣處理,導(dǎo)致小目標在特征圖的尺寸基本上只有個位數(shù)的像素大小,最后使用分類器進行分類的效果不佳。另外,Ye 等[15]提出的ASFF 模塊雖然對信息進行了篩選,但是這種篩選方式并不是最有效的;邵慧翔等[13]提出的錨框優(yōu)化算法在目標尺寸分布不均衡的復(fù)雜數(shù)據(jù)集中,容易出現(xiàn)真實框(Ground Truth Box,GTB)與檢測目標不匹配的情況,從而影響模型的檢測能力。針對以上問題,本文使用K 均值聚類變換(K-means Transformation,K-means-T)算法對GTB 進行聚類,增加先驗框與GTB 之間的匹配度;優(yōu)化置信度損失函數(shù),改善難易樣本分布不均的問題;引入注意力機制以提升對小目標物體的感知能力。綜合以上改進思路,本文提出了一種對YOLOv3 算法引入K 均值聚類變換和注意力機制的改進(improved YOLOv3 algorithm by adding Attention mechanism and K-means Transformation,YOLOv3-AKT)算法。
YOLOv3 作為一階檢測模型,主要是由特征提取模塊(Darknet-53 編碼模塊)和特征融合模塊(FPN 解碼模塊)組成。如圖1 所示,1 張416×416 的圖片輸入到網(wǎng)絡(luò)后首先會被Darknet53 模塊提取特征,Darknet53 對輸入圖像分別進行8 倍、16 倍、32 倍下采樣得到3 張分辨率分別為52×52、26×26、13×13 的特征圖。接下來FPN 模塊就會對這3 個層進行特征融合并重構(gòu)。
圖1 YOLOv3的模型結(jié)構(gòu)Fig.1 Model structure of YOLOv3
FPN 模塊主要是將提取到的抽象的語義信息和淺層位置信息相融合。首先,13×13 特征圖經(jīng)一系列卷積后流向兩個分支,一條分支流作為最終結(jié)果輸出,其輸出的特征圖的大小為(13,13,1 024);另一條分支經(jīng)過上采樣UpSampling2d后與淺層特征圖(26,26,512)按通道方向進行特征融合。融合后的特征圖繼續(xù)進行卷積流向兩個分支:一條作為最終結(jié)果輸出,其輸出的特征圖尺寸為(26,26,256);另一條分支繼續(xù)進行上采樣與更淺層特征圖(52,52,128)進行融合,融合后作為最終輸出進行回歸預(yù)測。所以FPN 模塊一共輸出(13,13,512)、(26,26,256)、(52,52,128)3 個特征圖,接下來這3 個特征圖會經(jīng)過Yolo Head 模塊,最后輸出3 個不同的預(yù)測圖,其大小分別為(13,13,3*(num_classes+1+4)),(26,26,3*(num_classes+1+4)),(52,52,3*(num_classes+1+4))。預(yù)測圖最后一維數(shù)據(jù)中的數(shù)字3 代表了每一個特征點存在3個先驗框;num_classes代表數(shù)據(jù)集的種類數(shù);1 代表了先驗框是否包含了物體信息;4 代表了每個先驗框的調(diào)整參數(shù)(分別為先驗框中心坐標x,y與先驗框高寬h,w)。
輸入的圖片經(jīng)過YOLOv3 模型后最終預(yù)測出x、y、w、h、c、p這6 個參數(shù),其中:x、y、w、h分別代表了預(yù)測框的中心調(diào)整參數(shù)和寬高調(diào)整參數(shù),c代表了框內(nèi)是否有物體的置信度,p代表了物體種類置信度。另外,也需要把標簽文件中關(guān)于真實框的信息轉(zhuǎn)為相應(yīng)的參數(shù)才可進行損失函數(shù)計算。真實框映射在3 個不同的特征層上會產(chǎn)生4 個調(diào)整參數(shù)其中為真實框的中心調(diào)整參數(shù)為真實框的寬高調(diào)整參數(shù)。
YOLOv3網(wǎng)絡(luò)損失函數(shù)由三部分組成,分別為預(yù)測框定位誤差、目標的交并比(Intersection Over Union,IOU)誤差以及分類誤差。將真實框的調(diào)整參數(shù)和網(wǎng)絡(luò)預(yù)測的調(diào)整參數(shù)x、y、w、h、c、p代入損失函數(shù)來計算損失,如式(1)所示:
YOLOv3 雖然通過特征融合輸出三種尺度的特征圖兼顧了小目標預(yù)測,但是對于以小目標檢測為主的遙感目標檢測任務(wù)的檢測精度仍然不能滿足實際需要。本文采用K-means-T 算法對Anchor 進行優(yōu)化以提升錨框和目標物體的貼合程度,對置信度損失函數(shù)進行改進以解決樣本難易程度分布不均問題,并且引入位置注意力(Coordinate Attention,CA)模塊來增強模型對細節(jié)信息的感知能力。
YOLOv3 模型會得到若干預(yù)測框,這些預(yù)測框分為3 種不同的情況:與真實框的IOU 最大的預(yù)測框會被判為正例(目標);IOU 超過門限但是并不是最高的預(yù)測框被忽略掉;IOU 低于門限的預(yù)測框被判為負樣本(背景)。這里的門限一般設(shè)為0.5。在YOLO 目標檢測中,圖片背景數(shù)量遠遠大于目標數(shù)量,盡管YOLOv3 已經(jīng)設(shè)置了閾值機制限制了負樣本的數(shù)量,但是仍然存在大量的負樣本,正負樣本數(shù)量的不平衡會影響網(wǎng)絡(luò)的訓(xùn)練。另外,不同難度樣本的分布不均衡問題也影響著YOLO 模型的訓(xùn)練。易樣本是指正負樣本中容易被模型學(xué)習(xí)并準確判斷的樣本,而難樣本則是特征不明顯容易被錯誤判斷的樣本。背景樣本雖然大部分非常容易識別,但其中也會存在著比較像某類目標的難樣本,而前景類中也有許多難以被正確判斷的困難樣本,比如尺寸過小的目標、與背景相似的復(fù)雜目標。針對正負樣本數(shù)量和難易程度分布不均衡的問題,有必要對置信度函數(shù)Lconf進行優(yōu)化,優(yōu)化后的置信度函數(shù)Lconf-c可以通過減少易分類樣本對總損失的貢獻,增加困難樣本的懲罰權(quán)重,使得模型在訓(xùn)練時更專注于困難樣本的學(xué)習(xí)。優(yōu)化方式如下:
原置信度損失函數(shù)如式(2)所示,其中Lconf為置信度損失函數(shù),pc為樣本的置信度。易樣本在訓(xùn)練的過程中能快速地獲得較高的置信度,但即使已經(jīng)被訓(xùn)練好,它們?nèi)匀粫谙乱淮翁荻雀轮挟a(chǎn)生較大的影響。本文希望模型在訓(xùn)練好易樣本基礎(chǔ)上能夠?qū)δ切┑梅州^低的難樣本加大力度學(xué)習(xí),能夠重點訓(xùn)練這些模棱兩可的難樣本。優(yōu)化后的置信度損失函數(shù)Lconf-c可以降低得分高的樣本(易樣本)的權(quán)重,增加得分低樣本(難樣本)的權(quán)重。這樣就能把模型的注意力逐漸放在難分類樣本上。
文獻[8]中對置信度函數(shù)進行了改進,本文采取另一種方式對其優(yōu)化,優(yōu)化結(jié)果如式(3)所示:
其中:σ是Sigmoid 函數(shù),pc是置信度,ε為極小常數(shù)。對于正樣本而言,當pc接近1 時接近0,這意味著對于已經(jīng)訓(xùn)練好的得分高的易樣本它的權(quán)重很??;當pc接近0 時接近1,意味著該樣本分類錯誤,那么就應(yīng)該增加其懲罰權(quán)重。這樣就解決了難易樣本不平衡的問題,模型能在訓(xùn)練好容易樣本的前提下更重視難樣本的學(xué)習(xí);另外,它還可以避免模型專門對容易擬合的樣本“拼命”訓(xùn)練,所以優(yōu)化后的損失函數(shù)還能防止過擬合。修改后的總的Loss如下:
數(shù)據(jù)集中的物體目標的面積和寬高比都是不一樣的,所以選擇合適的錨框(Anchor Box,AB)尺度對于網(wǎng)絡(luò)訓(xùn)練具有很大影響。另外YOLOv3 的預(yù)測框的大小損失、預(yù)測框的中心坐標損失都與錨框有密切關(guān)系,所以錨框的設(shè)計是YOLOv3 算法中非常重要的部分,錨框由數(shù)據(jù)集聚類得到,通常選用的聚類算法是K-means 算法。值得注意的是,標準K-means 算法使用的是歐氏距離,而錨框聚類的目的是讓錨框(Anchor Box,AB)和真實框(GTB)越接近越好,所以改用IOU 作為新的距離公式,如式(5)所示,交并比越大,距離越小,距離越小就越可能屬于同一類。數(shù)據(jù)集中的樣本按照該距離函數(shù)劃分為M個子集,這M個子集就是M個錨框,本文M設(shè)為9。
多尺度訓(xùn)練有助于提升模型對小目標信息的感知能力,能增強模型的魯棒性和泛化能力,所以在訓(xùn)練的過程中錨框和目標的匹配尤為重要。為提高匹配程度,文獻[12]中提出了線性拉伸算法對預(yù)設(shè)的錨框進行優(yōu)化,雖然對小目標的檢測能力有一定提升,但對于目標尺寸分布不均衡的復(fù)雜數(shù)據(jù)集的檢測性能的提升并不高。
為了使模型在多尺度訓(xùn)練過程中有更好的表現(xiàn),本文結(jié)合數(shù)據(jù)集自身的目標尺寸分布特征提出了一種基于K均值聚類變換(K-means-T)算法,該算法是根據(jù)數(shù)據(jù)集的目標大小分布特征將K-means聚類生成的錨框進行縮放。w1~w9為放縮前從小到大排列的錨框的寬,h1~h9為放縮前從小到大排列的錨框的高;wi表示第i個錨框的寬,wc表示中心框的寬,wc的選取是由數(shù)據(jù)集中目標尺寸分布特征決定~為縮放后從小到大排列的錨框的寬,~為縮放后從小到大排列的錨框的高。當i<c時,按式(6)進行放縮;當i>c時,按式(7)進行放縮。β、α是縮放比例,這里設(shè)α=0.5,β=2。在多尺度訓(xùn)練過程中,縮放后的Anchor 與目標更加貼合從而能減小多尺度訓(xùn)練帶來的誤差,提升整個網(wǎng)絡(luò)選框的精確性。
經(jīng)過上述方式縮放后,這9 種Anchor 就能覆蓋多尺度訓(xùn)練過程中被縮放的物體目標。該縮放并不會改變真實框的中心位置,且為等比例縮放(寬高比例并未發(fā)生改變)。該縮放方式會使得在多尺度訓(xùn)練過程中Anchor 和目標更加貼合,從而增強網(wǎng)絡(luò)模型的魯棒性和泛化能力。中心框c的選取由數(shù)據(jù)集本身的特點決定,本文數(shù)據(jù)集決定了c為7。但是該放縮方式又具有一定的局限性,該錨框縮放算法是配合多尺度訓(xùn)練而設(shè)計的,能使真實框更貼合訓(xùn)練過程中不斷變化的目標物體;反之,如果訓(xùn)練過程中本身沒有采用多尺度訓(xùn)練那么就沒有必要使用該K-means-T 算法。
錨框優(yōu)化效果如圖2 所示,深色框是真實框,淺色框是錨框,圖像縮小后空白部分由灰色補齊,使縮小后的圖片仍然保持原輸入大小。圖2(a)未采用多尺度訓(xùn)練,圖2(b)(c)采用了多尺度訓(xùn)練,其中:圖2(b)沒有采用本文提出的K-means-T 算法,此時3 個錨框與真實框的IOU 與圖2(a)中的IOU 產(chǎn)生了較大的差別,這樣就在訓(xùn)練的過程中增加了預(yù)測框的損失,導(dǎo)致預(yù)測結(jié)果不精確;而圖2(c)采用了K-means-T 算法,錨框與真實框的IOU 與圖2(a)中的IOU 幾乎一樣,這樣在多尺度訓(xùn)練的過程中并不會引入額外的預(yù)測框?qū)捀邠p失,最終預(yù)測結(jié)果也會更加準確。
圖2 多尺度訓(xùn)練中的AnchorFig.2 Anchor in multi-scale training
遙感圖像通常是由航天平臺獲取,其中的目標大多是小目標,為了提升小目標檢測的精度和泛化性能,除了加深網(wǎng)絡(luò)深度還需要引入合適的注意力機制。如圖3 所示,CA 機制同時考慮了通道間關(guān)系和空間位置關(guān)系,不僅捕獲了跨通道的信息,還感知了方向和位置敏感的信息,這使得模型能夠更準確地識別目標和鎖定目標位置。
圖3 CA模塊Fig.3 CA module
通常注意力機制會按式(8)進行全局池化,由于它將全局空間信息壓縮到通道中,導(dǎo)致難以保存位置信息。為了使注意力模塊能夠捕獲精確的空間位置信息,CA 模塊按照式(9)(10)分解了全局池化,轉(zhuǎn)為正交方向的一維特征編碼操作。具體地,給定輸入張量x,首先使用尺寸為(H,1)和(1,W)的卷積核分別沿著水平(X)和垂直(Y)方向?qū)γ總€通道進行編碼。因此,高度為h的第c通道的輸出如式(9)所示,寬度為w的第c通道的輸出如式(10)所示:
上述變換分別沿兩個空間方向聚合特征,得到一組包含方向信息的特征圖。這種轉(zhuǎn)換方式使得注意力模塊捕捉到空間方向的長期依賴關(guān)系,并保存另一個空間方向的精確位置信息,有助于網(wǎng)絡(luò)更準確地定位感興趣的目標。得到兩組一維特征信息后,對這兩組信息和按式(11)處理,其中[·,·]為沿空間維數(shù)的concatenate 操作,σ為非線性激活函數(shù),F(xiàn)1為1×1 卷積操作。接著沿著空間維數(shù)將f分解為兩個單獨的垂直張量,其中r為縮減率。得到兩個垂直張量后,用卷積變換將兩者的通道數(shù)調(diào)整一致。
式(12)(13)中:gh和gw分別是經(jīng)通道調(diào)整后得到的兩組正交的表征,F(xiàn)h和Fw是1×1 的卷積操作,σ是sigmoid 激活函數(shù)。最后CA 模塊的輸出可以寫成:
本文實驗在光學(xué)遙感圖RSOD 數(shù)據(jù)集上進行測試。RSOD 數(shù)據(jù)集以PASCAL VOC 數(shù)據(jù)集的格式進行標注。它包含從Google Earth 和Tianditu 下載的976 張光學(xué)遙感圖像,這些圖像的空間分辨率0.3~3.0 m 不等。如圖4 所示,它由7 400 個對象實例組成,包含了4 個對象類,分別為5 374 架飛機(aircraft),1 698 個油箱(oiltank),178 座立交橋(overpass)和150 個操場(playground)。
圖4 RSOD數(shù)據(jù)集樣例Fig.4 Samples of RSOD dataset
圖5 是數(shù)據(jù)集中目標物體尺寸大小的分布情況。aircraft類的比例幾乎在0.01 以下,所以基本上是小目標;oiltank 幾乎在0.02 左右,所以部分是小目標,overpass 和playground 面積比例均在0.01 以上且分布松散,所以這兩類不是小目標。由此可看出,RSOD 數(shù)據(jù)集絕大多數(shù)目標是小目標。
圖5 RSOD數(shù)據(jù)集上不同類的目標標注框占原圖面積的比例分布Fig.5 Proportion distribution of area of labeled box to the original image for different classes on RSOD dataset
如圖6 所示,RSOD 數(shù)據(jù)集一共7 400 個目標(包括aircraft 類、oiltank 類、overpass 類、playground 類,圖例如圖4 所示)??v坐標表示目標尺寸占圖片的比例;“·”點代表比例大于0.01 的目標(1 657 個);“+”點代表占比小于0.01 的小目標(5 584 個),數(shù)量大約占總目標數(shù)量的7/9。根據(jù)這一比例,設(shè)定錨框優(yōu)化算法中的參數(shù)c=7,所以第7 個錨框選為中心框,該框不進行放縮。
圖6 RSOD數(shù)據(jù)集中目標占原圖大小的比例分布Fig.6 Distribution of proportion of target size to original image in RSOD dataset
目標檢測的效果由預(yù)測框的分類精度和定位精度共同決定,因此目標檢測問題既是分類問題又是回歸問題。目標檢測算法的性能度量通常是平均精確率均值(mean Average Precision,mAP)和F1 分數(shù)(F1 score,F(xiàn)1)。
精度(Precision,P)為分類器認為是正類的樣本中實際是正類的比例:
召回率(Recall,R)的具體含義是:分類器認為是正類的樣本數(shù)量占所有正樣本的比例:
精度和召回率是一對矛盾的度量。一般來說,精度高,召回率往往偏低;而召回率高時,精度往往偏低。因此引入平均精確率(Average Precision,AP)作為性能度量,如式(17)所示:
但是對于多分類問題,通常引入平均精確率均值(mAP),如式(18):
F1 分數(shù)(F1)往往作為模型泛化能力的性能度量,F(xiàn)1 為0~1 的小數(shù),F(xiàn)1 越大表明模型泛化能力越強,表達式如下:
本文實驗在Windows 操作系統(tǒng)下進行,模型搭建采用PyTorch 深度學(xué)習(xí)框架,CPU 為i5-9400F,內(nèi)存為16 GB,GPU為NVIDIA GTX1660Ti。在模型的訓(xùn)練過程中Epochs(訓(xùn)練輪次)設(shè)置為70,優(yōu)化器Adam 采用默認參數(shù)。前30 個Epochs 中Batch Size 設(shè)置為6,學(xué)習(xí)率 為0.001;后40 個Epochs 中Batch Size 設(shè)置為4,學(xué)習(xí)率為0.000 1。
本文所提YOLOV3-AKT 算法的結(jié)構(gòu)如圖7 所示。
圖7 YOLOv3-AKT的模型結(jié)構(gòu)Fig.7 Model structure of YOLOv3-AKT
圖8 反映了原始YOLOv3、YOLOv4[7]、YOLOv3[15]、本文所提的YOLOv3-AKT 和EfficientDet[18]模型在 訓(xùn)練過程中aircraft 類的AP變化情況。從圖8 中可以看出,以上算法均能夠在70 個Epoch(訓(xùn)練輪次)以內(nèi)訓(xùn)練至穩(wěn)定,穩(wěn)定后YOLOv3-AKT 表現(xiàn)效果最好,AP能夠穩(wěn)定到0.92 左右,YOLOv4 效果次之,EfficientDet 網(wǎng)絡(luò)效果最差。這是因為YOLOv3-AKT 對細節(jié)信息的表征能力要好于其他網(wǎng)絡(luò);而EfficientDet 中的雙向特征金字塔網(wǎng)絡(luò)(Bidirectional FPN,BiFPN)雖然能夠加強特征提取網(wǎng)絡(luò)從而獲得更高的語義信息,但這對于檢測任務(wù)中的小目標定位卻幫助不大。另外,YOLOv3-AKT 優(yōu)化了置信度損失函數(shù),該網(wǎng)絡(luò)在訓(xùn)練之初就重視困難樣本的學(xué)習(xí),所以在10 個Epoch 之前AP的提升效果最為明顯,并且YOLOv3-AKT 也在以上網(wǎng)絡(luò)中最先收斂。
圖8 不同算法的檢測精度比較Fig.8 Detection accuracy comparison of different algorithms
表1比較了YOLOv3、YOLOv3[15]、YOLOv3-AKT、文獻[19]算 法、YOLOv4[7]和EfficientDet[18]的檢測精度??梢钥?出,YOLOv3-AKT 的mAP比YOLOv3 提高約7 個百分點,F(xiàn)1 提高4.5個百分點,AP(aircraft)提升7.3個百分點,F(xiàn)1(aircraft)提升5個百分點。EfficientDet模型的mAP較高,但是小目標aircraft類的AP較低,所以EfficientDet算法對中、大型目標有很好的檢測效果,但對小目標檢測能力不強。YOLOv3-AKT 的mAP比YOLOv4高4.1個百分點,F(xiàn)1高3.5個百分點,AP(aircraft)提升5.9 個百分點,F(xiàn)1(aircraft)提升6 個百分點。YOLOv3-AKT 的mAP與文獻[19]算法一樣,F(xiàn)1 分數(shù)高0.5 個百分點,但文獻[19]中并沒有給出aircraft類的AP和F1,所以無法比較兩者對小目標aircraft 類的檢測能力。綜上,相較于其他對比算法,YOLOv3-AKT對小目標檢測具有較大優(yōu)勢。
表1 不同算法的檢測精度比較Tab.1 Comparison of detection accuracy among different algorithms
圖9 給出了原始YOLOv3、YOLOv4[7]、EfficientDet[18]、YOLOv3[15]和YOLOv3-AKT 的預(yù)測結(jié)果對比。觀察可知,原始YOLOv3 對小型飛機目標的檢測能力不足,出現(xiàn)了漏檢、錯檢的情況。YOLOv4、YOLOv3[15]、YOLOv3-AKT 的檢測效果均比原始YOLOv3 好,其中YOLOv3-AKT 提升效果最為明顯;而EfficientDet 對小目標的檢測能力不升反降。相較于其他對比算法,YOLOv3-AKT 能夠挖掘更多的困難樣本,有效提升對小目標位置的感知能力。對于同一目標,YOLOv3-AKT 給出的預(yù)測分數(shù)明顯高于其他算法的預(yù)測分數(shù),這是因為該算法優(yōu)化了置信度函數(shù)后,模型偏向于學(xué)習(xí)困難樣本,所以減少了“模棱兩可”的預(yù)測。另外,YOLOv3-AKT 給出的預(yù)測框相較于其他對比算法更加貼合目標尺寸,這是因為YOLOv3-AKT 對錨框進行了優(yōu)化,使得錨框在多尺度訓(xùn)練過程緊貼真實目標,所以在預(yù)測結(jié)果中錨框也能緊貼真實目標。該綜合實驗結(jié)果表明,YOLOv3-AKT 算法能夠提高目標的檢測精度,尤其對小目標的效果更好。
圖9 不同算法的預(yù)測結(jié)果對比Fig.9 Comparison of prediction results of different algorithms
為更好地驗證本文提出置信度損失函數(shù)優(yōu)化算法、K-means-T 算法和注意力機制的有效性,本文在RSOD 數(shù)據(jù)集上分別單獨加入以上改進點進行消融實驗。
實驗1 修正的置信度損失函數(shù)。
本次實驗設(shè)定難易樣本閾值為0.5,置信度大于閾值的正樣本和置信度小于閾值的負樣本視為容易樣本(easy positive);反之,置信度小于閾值的正樣本和置信度大于閾值的負樣本稱為困難樣本(hard positive)。圖10 記錄了原始YOLOv3 和優(yōu)化置信度損失函數(shù)的YOLOv3 算法(YOLOv3 optimized by Confidence loss function,YOLOv3-C)的困難樣本在訓(xùn)練過程中的損失占總置信度損失的比例。前10 個Epoch 內(nèi)YOLOv3-C 困難樣本損失占總置信度損失的0.1 左右,而YOLOv3 幾乎為0。這說明訓(xùn)練開始YOLOv3-C 就有意識地整合難易樣本開始訓(xùn)練,而YOLOv3 此時并沒有考慮難樣本的訓(xùn)練。在訓(xùn)練的過程中,YOLOv3-C 曲線始終在YOLOv3 之上,說明YOLOv3-C 對分類錯誤的樣本(困難樣本)的懲罰力度比YOLOv3 大。另外,YOLOv3-C 曲線波動較為明顯,這是因為該網(wǎng)絡(luò)不斷地嘗試學(xué)習(xí)困難樣本,而YOLOv3 曲線較為平緩,說明該網(wǎng)絡(luò)并沒有刻意嘗試去學(xué)習(xí)困難樣本,始終停留在訓(xùn)練的“舒適區(qū)”。
圖10 困難樣本損失占總置信度損失的比例Fig.10 Proportion of loss of hard samples to total confidence loss
圖11 為原始YOLOv3 和YOLOv3-C 的平均精確率對比。在模型訓(xùn)練之初和模型穩(wěn)定后YOLOv3-C 的平均精確率要明顯高于YOLOv3,這是因為前者不僅完成了易樣本的學(xué)習(xí),而且還對難樣本有了很好的學(xué)習(xí)。整個訓(xùn)練過程中YOLOv3-C 的AP 曲線波動更大,這是因為YOLOv3-C 對難樣本更為敏感,不斷嘗試挖掘難樣本的信息。
圖11 原始YOLOv3和 YOLOv3-C的AP對比Fig.11 AP comparison of original YOLOv3 and YOLOv3-C
所以,本文提出的損失函數(shù)優(yōu)化方法能夠解決樣本難易程度分配不均的問題,使得模型訓(xùn)練更加高效,并可以收斂到更好的效果。
實驗2 對優(yōu)化Anchor Box 的YOLOv3 訓(xùn)練和測試。
RSOD 數(shù)據(jù)集中目標尺寸大小分布不均衡,絕大多數(shù)目標是小目標,先對RSOD 數(shù)據(jù)集使用K-means 聚類算法進行聚類,得到9 個不同大小的Anchor,然后對這些Anchor 進行K-means-T 放縮,得到最終的Anchor-T。因為數(shù)據(jù)集中小目標數(shù)目約占全部目標數(shù)目的7/9,所以設(shè)定第7 個錨框為中心錨框,此時中心錨框的寬高為(40,44)。比中心框小的錨框會被線性縮小,最多縮小至原來的1/2;比中心框大的錨框會被放大,最高放大2 倍。選定c=1,3,5,7,9 以作對比實驗。
然后分別使用放縮前的Anchor 和放縮后的Anchor-T 與原始YOLOv3、文獻[13]、文獻[15]模型上的Anchor 進行測試并對比,結(jié)果如表2 所示。
表2 不同中心框下的錨框Tab.2 Anchor boxes under different center anchor boxes
分別選取5 個不同錨框作為中心框,生成了5 組不同的新錨框Anchor-T(c=1,3,5,7,9),實驗得到5 個不同的AP(aircraft),如圖12 所示。
圖12 中橫坐標c代表了中心框,c=i表示選取第i個框為中心框??梢园l(fā)現(xiàn)c=1,模型對小目標aircraft 類的檢測效果最差,這是因為幾乎所有錨框都被放大了,這導(dǎo)致了模型對小目標的捕捉能力下降。當c=9,幾乎所有的原錨框被縮小,這對于aircraft 類的檢測是有積極作用的,但此時的檢測效果仍不是最佳狀態(tài)。由于本文數(shù)據(jù)集中小目標數(shù)量約占總數(shù)量的7/9,所以取第7 個框為中心框時剛好滿足數(shù)據(jù)集自身的分布特征,故此時檢測效果最好。另外本文所有實驗都默認第7 個框為中心框。
圖13 中,YOLOv3-T 為采用K-means-T 錨框優(yōu)化算法后的改進算法,其平均損失曲線由虛線表示;原始YOLOv3 的損失曲線由實線表示。從圖13 可見,兩者總體呈現(xiàn)逐漸變小的趨勢,但是在第7 個訓(xùn)練輪次后,YOLOv3-T 損失函數(shù)比原始YOLOv3-T 損失函數(shù)小且下降得更快,這是因為K-means-T 聚合的錨框在多尺度訓(xùn)練中更加貼合訓(xùn)練目標,產(chǎn)生的損失更小。
圖13 不同算法下YOLOv3的平均損失Fig.13 Average losses of YOLOv3 using different algorithms
表3 為YOLOv3-T 與文獻[15]、文獻[13]算法的檢測結(jié)果對比。YOLOv3-T 所用的錨框是經(jīng)K-means-T 算法優(yōu)化的錨框??梢钥闯觯噍^于原始YOLOv3 算法,文獻[15]算法在配合多尺度訓(xùn)練的檢測能力不升反降。說明了該算法不適合在多尺度訓(xùn)練中使用。文獻[13]算法解決了文獻[15]中存在的多尺度訓(xùn)練效果不佳的問題。相較于原始YOLOV3,文獻[13]算法在aircraft 類上的AP提升并不顯著,只有1.8 個百分點,這是因為文獻[13]沒有把數(shù)據(jù)集分布特征考慮進去。本文提出的YOLOv3-T 不僅解決了難以搭載多尺度訓(xùn)練的問題而且還結(jié)合了數(shù)據(jù)集目標尺寸的分布特征,所以在幾組實驗中aircraft 類的AP提升效果最為明顯約為3.2 個百分點。所以,本文所提的 K-means-T 算法更有利于提升小目標的檢測精度。
表3 不同錨框優(yōu)化算法的精度比較Tab.3 Accuracy comparison of different anchor box optimization algorithms
圖14 比較了經(jīng)過K-means-T 錨框優(yōu)化算法后的YOLOv3和原始YOLOv3 的各類AP,可以看出,使用K-means-T 錨框優(yōu)化算法后的YOLOv3 在飛機類AP提升約3.2 個百分點,對于油桶類的AP提升不明顯;對操場類的AP幾乎沒有提升。另外,立交橋類由于訓(xùn)練樣本少且特征不明顯,在優(yōu)化前后該類的AP很低,故不考慮該類的精確率。圖14 說明了K-means-T 算法更有利于提升小目標的檢測精度。
圖14 優(yōu)化Anchor前后的YOLOv3 在數(shù)據(jù)集各類目標上的精度Fig.14 Accuracy of YOLOv3 before and after optimizing Anchor on different classes of targets in dataset
實驗3 對引入注意力機制的YOLOv3 進行訓(xùn)練和測試。
注意力機制能自適應(yīng)提取顯著對象周圍的有用信息,能自動捕獲區(qū)分性語義信息和定位精確位置信息,從而得到更好的小目標檢測效果。如圖1 所以,本文將CA(Coordinate Attention)注意力模塊分別嵌在探測頭1,探測頭2,探測頭3上進行測試。表4 分析了不同位置安放CA 注意力機制對精確率的提升作用,其中mAP是平均精確率,AP和F1 是小目標飛機類的精確率和F1 分數(shù)??梢园l(fā)現(xiàn),當CA 模塊插入在檢測頭1 時,mAP提高0.9 個百分點,AP提升3.2 個百分點,F(xiàn)1 提升1 個百分點;當CA 模塊插入在檢測頭2 時,mAP提高0.6 個百分點,AP提升3.4 個百分點,F(xiàn)1 提升1 個百分點;當CA 模塊插入在檢測頭3 時,mAP提高2.9 個百分點,AP提升5.1 個百分點,F(xiàn)1 提升3 個百分點。當CA 注意力模塊加在探測頭3 位置時,效果最佳。因此CA 可以提高模型對細節(jié)信息的捕獲能力,能提升模型對淺層位置信息的感知能力,從而提高對小目標的檢測精確率。
表4 不同位置插入CA的精度比較Tab.4 Accuracy comparison of CA inserting in different positions
圖15 為檢測頭3 引入CA 模塊時各類目標的AP比較,可以發(fā)現(xiàn),小目標居多的飛機類的AP提高約為5.1 個百分點,目標相對較大的油桶類的AP提升不明顯,操場類下降0.51個百分點。說明YOLOv3 中,引入CA 注意力模塊使得網(wǎng)絡(luò)對小目標信息感知更為敏感,提高了對小目標檢測的能力。
圖15 引入CA前后的YOLOv3在數(shù)據(jù)集各類目標上的APFig.15 AP of YOLOv3 before and after introducing CA on different classes of targets in dataset
本文對YOLOv3 的錨框進行了改進,使得預(yù)測框與真實框更加貼合;又對置信度函數(shù)進行了優(yōu)化,一定程度上改善了難易樣本分配不均衡問題;最后引入CA 機制增強模型對細節(jié)的感知能力。在RSOD 數(shù)據(jù)集上做了訓(xùn)練和測試,結(jié)果表明本文提出的YOLOv3-AKT 在小目標類(aircraft)的AP和F1 兩種指標上都優(yōu)于YOLOv3、YOLOv4、EfficientDet 和其他對比的改進YOLOv3 算法。本文K-means-T 主要采取了縮放變換的思想對Anchor 進行優(yōu)化,這有助于增加錨框和目標的貼合程度,從而提升精度。但是,該優(yōu)化算法的思想是在訓(xùn)練之前對錨框進行縮放,無法在訓(xùn)練過程中實時地縮放錨框。所以如何在多尺度訓(xùn)練過程中動態(tài)地同比例縮放錨框以精準匹配目標物體,是進一步需研究的問題。另外,本文實驗中可以看出置信度損失優(yōu)化算法的訓(xùn)練過程有一定的波動性,未來可以從置信度損失優(yōu)化算法和學(xué)習(xí)率的角度出發(fā)進行研究。