開源!基于Transformer改進(jìn)YOLOv5的目標(biāo)檢測(cè)框架 | 航空遙感目標(biāo)檢測(cè)
來(lái)源:https://zhuanlan.zhihu.com/p/525649526 (已授權(quán))
編輯:AI算法與圖像處理
大家好,我是阿潘
今天分享航空遙感目標(biāo)檢測(cè)系列文章之基于Transformer改進(jìn)YOLOv5的目標(biāo)檢測(cè)框架
標(biāo)題:TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-captured Scenarios
地址:https://openaccess.thecvf.com/content/ICCV2021W/VisDrone/papers/Zhu_TPH-YOLOv5_Improved_YOLOv5_Based_on_Transformer_Prediction_Head_for_Object_ICCVW_2021_paper.pdf
代碼:https://github.com/cv516Buaa/tph-yolov5
改進(jìn)版本:https://github.com/Gumpest/YOLOv5-Multibackbone-Compression
增加小目標(biāo)檢測(cè)層:https://mp.weixin.qq.com/s/3ecefgmOZU-zugMdMWlTaA
詳細(xì)介紹
本文主要針對(duì)尺度變化和由于高速低空拍攝帶來(lái)的密集目標(biāo)運(yùn)動(dòng)模糊這兩個(gè)問(wèn)題,提出一種TPH-YOLOv5?;赮OLOv5,增加一個(gè)預(yù)測(cè)頭來(lái)檢測(cè)不同尺度的目標(biāo)。然后用結(jié)合Transformer的預(yù)測(cè)頭(Transfromer Prediction Head, TPH)代替原始的預(yù)測(cè)頭,來(lái)探索具備自注意力的預(yù)測(cè)潛力。此外,還結(jié)合了卷積塊注意模型(CBAM)來(lái)搜索密集區(qū)域的感興趣區(qū)域。為了更進(jìn)一步的提升性能。本文還提供了很多有用的策略,例如數(shù)據(jù)增強(qiáng)、多尺度測(cè)試、多模態(tài)融合和利用額外的分類器。在VisDrone2021數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),證明了所提方法的有效性和優(yōu)越性。在測(cè)試集上,所提方法達(dá)到39.18%的AP值,比先前的SOTA方法(DPNetV3)提高了1.81%。在2021年的VisDrone挑戰(zhàn)賽上,所提的TPH-YOLOv5獲得第五名的成績(jī),與第一名的模型(AP 39.43%)保持相當(dāng)?shù)某煽?jī)。與基準(zhǔn)模型(YOLOv5)相比,所提方法提高了約7%。
Motivation:

航拍圖像中需要解決的三個(gè)問(wèn)題:從第一行到第三行分別表示尺度變化、高密度和大范圍。首先,由于無(wú)人機(jī)飛行高度的不同,目標(biāo)的尺度變化劇烈。其次,無(wú)人機(jī)拍攝的圖像包含高密度的目標(biāo),導(dǎo)致目標(biāo)間存在嚴(yán)重遮擋。再次,由于很大的覆蓋范圍,無(wú)人機(jī)拍攝的圖像通常包含令人混淆的地理元素。

貢獻(xiàn):
增加一個(gè)預(yù)測(cè)頭來(lái)解決目標(biāo)間的尺度變化;
在YOLOv5中結(jié)合Transformer預(yù)測(cè),可以精確的定位高密度場(chǎng)景中的目標(biāo);
在YOLOv5中結(jié)合CBAM,可以使網(wǎng)絡(luò)在大范圍區(qū)域中找到感興趣區(qū)域;
提供大量有用的tricks并濾除一些無(wú)用的tricks,用于航拍圖像的目標(biāo)檢測(cè)
利用自訓(xùn)練分類器來(lái)提升一些容易混淆的類別間的分類能力;
在VisDrone2021數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),獲得很不錯(cuò)的檢測(cè)性能。
方法:
YOLOv5回顧
YOLOv5包含四個(gè)不同的模型,包括YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x。一般來(lái)講,YOLOv5分別使用一個(gè)結(jié)合空間金字塔池化層(SPP)的CSPDarknet53作為主干網(wǎng)絡(luò),PANet作為Neck,YOLO作為檢測(cè)頭。為了進(jìn)一步優(yōu)化整個(gè)網(wǎng)絡(luò),提供了大量的技巧。因?yàn)檫@個(gè)網(wǎng)絡(luò)是最著名且方便的一階段檢測(cè)器,本文選擇它作為基準(zhǔn)算法。
當(dāng)作者在VisDrone2021數(shù)據(jù)集上結(jié)合數(shù)據(jù)增強(qiáng)策略(Mosaic和MixUp)對(duì)模型進(jìn)行訓(xùn)練時(shí),從結(jié)果中可以看出YOLOv5x的性能比其他三個(gè)好得多,AP值之間的差距超過(guò)1.5%。盡管YOLOv5x的訓(xùn)練代價(jià)比其他三個(gè)模型都要大,本文依然選擇YOLOv5x來(lái)實(shí)現(xiàn)最好的檢測(cè)性能。此外,根據(jù)無(wú)人機(jī)拍攝圖像的特征,對(duì)常用的光度畸變和幾何失真的參數(shù)做出調(diào)整。
2. TPH-YOLOv5
TPH-YOLOv5的框架如下圖所示,作者對(duì)原始的YOLOv5框架進(jìn)行修改使之適應(yīng)VisDrone2021數(shù)據(jù)集。

用于微小目標(biāo)的預(yù)測(cè)頭:作者通過(guò)對(duì)VisDrone2021數(shù)據(jù)集進(jìn)行調(diào)研,發(fā)現(xiàn)它包含了大量的極度小目標(biāo),因此作者額外增加了一個(gè)預(yù)測(cè)頭用于微小目標(biāo)的檢測(cè)。與其他三個(gè)預(yù)測(cè)頭進(jìn)行聯(lián)合,本文提出的四分支檢測(cè)結(jié)構(gòu)可以減輕由于劇烈尺度變化引起的負(fù)面影響。如上圖所示,第一個(gè)預(yù)測(cè)頭是由底層的、高分辨率的特征圖中生成的,這對(duì)微小目標(biāo)更敏感。增加一個(gè)附加的檢測(cè)頭之后,盡管計(jì)算量和內(nèi)存代價(jià)增加了,但微小目標(biāo)的檢測(cè)性能得到了大幅的提升。
Transformer編碼塊:受視覺Transformer的啟發(fā),本文用Transformer的編碼塊來(lái)代替原始YOLOv5中的一些卷積塊和CSP瓶頸塊。這個(gè)結(jié)構(gòu)如下圖所示。與原始CSPDarknet53中的transformer瓶頸塊相比,作者相信transformer編碼塊能夠采集豐富的全局信息和上下文信息。每個(gè)transforme編碼包含兩個(gè)子層,第一個(gè)子層是一個(gè)多頭的注意力層,而第二個(gè)子層(MLP)是一個(gè)全連接層。在每個(gè)子層中間添加殘差連接。Transformer編碼塊增加了采集不同局部信息的能力。它還可以通過(guò)自注意力機(jī)制挖掘特征表示的潛能。在VisDrone2021數(shù)據(jù)集中,transformer編碼塊對(duì)于高密度的遮擋目標(biāo)具有更好的檢測(cè)性能。

基于YOLOv5,本文只在頭網(wǎng)絡(luò)部分應(yīng)用了transformer編碼塊來(lái)構(gòu)成Transformer預(yù)測(cè)頭(TPH)和主干網(wǎng)絡(luò)的后端。因?yàn)榫W(wǎng)絡(luò)后端的特征圖分辨率很低,在低分辨率特征圖上應(yīng)用TPH會(huì)減少昂貴的計(jì)算代價(jià)和內(nèi)存代價(jià)。此外,當(dāng)對(duì)輸入圖像的分辨率放大時(shí),作者選擇性的在早期層去掉一些TPH塊,使得訓(xùn)練過(guò)程可行。
卷積塊注意力模塊(CBAM): CBAM是一個(gè)簡(jiǎn)單且有效的注意力模塊。這是一個(gè)輕量的模塊,可以插入到大多數(shù)主流的CNN框架中,而且可以以端到端的形式進(jìn)行訓(xùn)練。給定一個(gè)特征圖,CBAM連續(xù)地從空間和通道兩個(gè)分離的維度推斷注意圖,然后通過(guò)將注意圖與特征圖相乘進(jìn)行自適應(yīng)的特征精煉。CBAM的結(jié)構(gòu)如下圖所示。根據(jù)CBAM原文中的實(shí)驗(yàn),通過(guò)將CBAM融入到不同的模型中,在不同的分類和檢測(cè)數(shù)據(jù)集中進(jìn)行實(shí)驗(yàn),模型的性能得到很大的提升,也證明了這個(gè)模塊的有效性。

在無(wú)人機(jī)拍攝的圖片中,大范圍的區(qū)域通常包含很多使人混淆的地理元素。使用CBAM可以幫助TPH-YOLOv5提取受關(guān)注區(qū)域,減少易混淆信息并關(guān)注有用的目標(biāo)信息。
多尺度測(cè)試和模型集成:本文根據(jù)模型集成的不同角度訓(xùn)練五個(gè)不同的模型。在推斷階段,作者首先在單個(gè)模型上執(zhí)行多尺度測(cè)試。多尺度測(cè)試的實(shí)現(xiàn)細(xì)節(jié)主要有以下三個(gè)步驟:1)將測(cè)試圖像放大1.3倍。2)分別將圖像減少到1倍,0.83倍和0.67倍。3)對(duì)圖像進(jìn)行水平翻轉(zhuǎn)。最后,作者將六個(gè)不同的放縮圖像送入TPH-YOLOv5網(wǎng)絡(luò)中,然后使用NMS融合預(yù)測(cè)結(jié)果。
對(duì)于不同的模型,本文采用同樣的多尺度測(cè)試,并通過(guò)WBF融合五個(gè)預(yù)測(cè)得到最終的結(jié)果。
自訓(xùn)練分類器:通過(guò)TPH-YOLOv5在VisDrone2021數(shù)據(jù)集上訓(xùn)練之后,作者在test-dev集上進(jìn)行測(cè)試,然后分析了一些失敗案例,總結(jié)出這個(gè)網(wǎng)絡(luò)框架又很好的定位能力但是很差的分類能力。作者進(jìn)而利用混淆矩陣發(fā)現(xiàn)一些困難類別,例如三輪車和帶蓬三輪車的精度比較低。因此,本文提出一個(gè)額外的自訓(xùn)練分類器。首先通過(guò)裁減ground-truth的邊界框和放縮每個(gè)圖像塊為64
64,構(gòu)建一個(gè)訓(xùn)練集。然后,選擇ResNet18作為分類器網(wǎng)絡(luò)。正如實(shí)驗(yàn)結(jié)果中所示,依靠自訓(xùn)練分類器,本文方法得到將近0.8%~1.0%的性能提升。

Iou閾值是0.45時(shí)的混淆矩陣,置信度閾值是0.25
實(shí)驗(yàn):
實(shí)驗(yàn)細(xì)節(jié):Pytorch 1.8.1, NVIDIA RTX3090 GPU.
數(shù)據(jù)分析:根據(jù)作者先前的工程經(jīng)驗(yàn),在訓(xùn)練模型之前瀏覽數(shù)據(jù)集是很重要的,這對(duì)提升mAP的性能會(huì)有很大幫助。作者對(duì)VisDrone2021數(shù)據(jù)集中的邊界框進(jìn)行分析,當(dāng)輸入圖像的尺寸設(shè)定為1536,總共342391個(gè)標(biāo)簽中有622個(gè)小于3個(gè)像素。如下圖說(shuō)是,這些小目標(biāo)很難識(shí)別,當(dāng)用灰色正方形包圍這些小目標(biāo),并用來(lái)訓(xùn)練模型,mAP提升了0.2,比沒有操作性能要好。
實(shí)驗(yàn)對(duì)比:

消融實(shí)驗(yàn):

單類指標(biāo):

可視化結(jié)果:

結(jié)論與分析:
本文融入了很多先進(jìn)的技術(shù),例如transformer的編碼塊,CBAM和一些技巧,將這些技術(shù)融入到Y(jié)OLOv5框架中,有利于航拍圖像中的目標(biāo)檢測(cè)。所提方法在VisDrone2021數(shù)據(jù)集上刷新紀(jì)錄,并達(dá)到SOTA的性能。作者嘗試了大量的特征,并用其中一些來(lái)提升目標(biāo)檢測(cè)器的精度。
本文專門針對(duì)航拍圖像數(shù)據(jù)集,融入了一些技術(shù)或模塊,能夠有效提升航拍圖像目標(biāo)檢測(cè)的性能,這對(duì)航拍圖像的信息理解有很重要的工程指導(dǎo)意義,而且也能夠?qū)ζ渌哂蓄愃茍?chǎng)景中的圖像處理。結(jié)合transoformer技術(shù)在CV的各個(gè)領(lǐng)域著實(shí)火了一把,但是這些方法的理論創(chuàng)新不是很大,很難有很大的理論貢獻(xiàn)。下次我計(jì)劃分享一篇切片輔助超推理的開源框架“Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection”,且聽下次分解!
