注:個(gè)人愚見(jiàn),有問(wèn)題歡迎批評(píng)指針。
論文:《TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-captured Scenarios》
- ICCV 2021 Open Access Repository
代碼:GitHub - TfeiSong/tph-yolov5: CBAM-TPH-biFPN-yolov5
TPH:Transformer Prediction Head
總結(jié)比較實(shí)用的點(diǎn):
1. tph(transformer prediction head)。能夠捕獲更多的全局信息和上下文信息(使用的self-attention和全連接)。
2. CBAM提高通道和空間注意力機(jī)制。簡(jiǎn)單有效好嵌入CNN架構(gòu)。
3. 增加小目標(biāo)預(yù)測(cè)head。在大尺寸feature上實(shí)現(xiàn)對(duì)小目標(biāo)的預(yù)測(cè),提高小目標(biāo)預(yù)測(cè)的準(zhǔn)確率。
4. self-training classifier。對(duì)難區(qū)分的類別截取預(yù)測(cè)框,送小網(wǎng)絡(luò)訓(xùn)練一個(gè)分類器,提高類別預(yù)測(cè)準(zhǔn)確度。
5. ms-testiong。nms融合多個(gè)尺度圖像的預(yù)測(cè)結(jié)果,提高mAP。
6. 模型集成:訓(xùn)練多個(gè)模型,融合多個(gè)模型的預(yù)測(cè)結(jié)果,提高mAP。
摘要:無(wú)人機(jī)拍攝場(chǎng)景下的目標(biāo)檢測(cè)最近很時(shí)興。難題:1. 因無(wú)人機(jī)總是在不同高度拍攝圖像,導(dǎo)致目標(biāo)尺寸變化劇烈,網(wǎng)絡(luò)不易優(yōu)化。2. 且高速低空飛行會(huì)對(duì)密集堆疊的物體產(chǎn)生運(yùn)動(dòng)模糊,對(duì)區(qū)分目標(biāo)帶來(lái)更大挑戰(zhàn)。解決方法:本文提出TPH-yolov5,在yolov5中使用transformer prediction heads 替換原始的預(yù)測(cè)頭,探索自注意力機(jī)制,去檢測(cè)不同尺寸的目標(biāo)。同時(shí)也整合CBAM模塊,稠密目標(biāo)的關(guān)注區(qū)域。另外,增加了有效策略:數(shù)據(jù)增強(qiáng),多尺度測(cè)試,多模型融合,利用額外分類器。測(cè)試集:VisDrone2021。之前的sota方法:DPNetV3,提升1.81%。比yolov5提升了7%。
1. 介紹
無(wú)人機(jī)場(chǎng)景的目標(biāo)檢測(cè)主要有三個(gè)問(wèn)題:1.尺寸多變,2.目標(biāo)高密度,3.目標(biāo)對(duì)象覆蓋范圍大。
網(wǎng)絡(luò)結(jié)構(gòu)框架:
?整體較yolov5的改變:TPH,CBAM,增加更多頭對(duì)不同尺寸檢測(cè),應(yīng)用訓(xùn)練技巧(數(shù)據(jù)增強(qiáng)、多尺度測(cè)試、模型集成和自訓(xùn)練分類器)
對(duì)于類別相似的圖像作者使用了self-trained classifier,把圖像裁剪出來(lái)作為分類訓(xùn)練集訓(xùn)練模型。
本文貢獻(xiàn):
1. 增加更多的預(yù)測(cè)頭,來(lái)處理大尺度變化的目標(biāo)。
2. 整合TPH模塊到y(tǒng)olov5中,提高在稠密場(chǎng)景下位置定位的準(zhǔn)確性。
3. 整合CBAM到y(tǒng)olov5中,有利于網(wǎng)絡(luò)尋找大區(qū)域內(nèi)的感興趣區(qū)域。
4. 對(duì)于無(wú)人機(jī)捕獲到的場(chǎng)景使用有效地訓(xùn)練技巧:。
5. 使用自訓(xùn)練分類器,提高區(qū)分相似類別的分類能力。
2. 相關(guān)工作
2.1 數(shù)據(jù)增強(qiáng)
擴(kuò)充不同場(chǎng)景的數(shù)據(jù)集,提高模型魯棒性。光學(xué)變化增強(qiáng)(hue,saturation and value of the images),幾何變化增強(qiáng)(random scaling, cropping, translation, shearing, and rotating),mixup,CutMix,Mosaic。
2.2 多模型集成方法在目標(biāo)檢測(cè)上
因?yàn)槊看斡?xùn)練模型時(shí)生成的模型權(quán)重文件都是不同的,這就導(dǎo)致不同模型預(yù)測(cè)結(jié)果不同。為了降低差異,聯(lián)合多個(gè)模型的預(yù)測(cè)結(jié)果。聯(lián)合多個(gè)模型的方法是,對(duì)多個(gè)模型預(yù)測(cè)的框進(jìn)行nms,soft-nms,WBF等處理。
2.3 目標(biāo)檢測(cè)
目標(biāo)檢測(cè)可劃分多個(gè)類型。
1. one-stage 檢測(cè)器:YOLOX,F(xiàn)COS,DETR,Scaled-YOLOv4,EfficientDet。?
2. two-stage 檢測(cè)器:VFNet,CenterNet2
3. anchor-based 檢測(cè)器:Scaled-YOLOv4,YOLOv5
4. anchor-free 檢測(cè)器:CenterNet,YOLOX,RepPoints。
5. 專門針對(duì)無(wú)人機(jī)捕捉場(chǎng)景檢測(cè)器:RRNet,PENet,CenterNet。
目標(biāo)檢測(cè)通常有三部分組成:backbone,neck,prediction head。
backbone:VGG,ResNet,DenseNet,MobileNet,EfficientNet,CSPDarknet53,Swin Transformer等等。
neck:neck設(shè)計(jì)的目的是為了更好地為backbone提供特征提取能力。通常由bottom-up和top-down形式。最早期的neck是up和down采樣快。通常使用路徑聚合塊:FPN,PANet,NAS-FPN,BiFPN,ASFF,SFAM。neck上還有一些額外的塊,比如:SPP,ASPP,RFB,CBAM等。
head:檢測(cè)頭目的是用來(lái)檢測(cè)目標(biāo)框位置和目標(biāo)類別的。head一般被分為兩種類型:one-stage和two-stage的目標(biāo)檢測(cè)器。two-stage目標(biāo)檢測(cè)方式一直主導(dǎo)方法,比如RCNN系列。one-stage目標(biāo)檢測(cè)器直接預(yù)測(cè)bounding box和目標(biāo)類別,比如yolo系列,SSD,RetinaNet等。
3. TPH-YOLOv5
3.1 YOLOv5綜述
yolov5共四個(gè)模型:yolov5s,yolov5m,yolov5l,yolov5x。
yolov5組成:backbone是CSPDarknet53 + SPP,Neck是PANet,detection head是YOLO head。
數(shù)據(jù)增強(qiáng):Mosaic,MixUp,photometric distortions,geometric distortions。
3.2 TPH-YOLOv5
TPH-YOLOv5模型框架如圖3所示。本文修改官方的yolov5模型,使她更加適應(yīng)VisDrone2021數(shù)據(jù)集。
?Prediction head for tiny objects:因?yàn)楸荣悢?shù)據(jù)集VisDrone2021包含了很多極其小的目標(biāo),所以增加更多小目標(biāo)的預(yù)測(cè)頭。共四個(gè)預(yù)測(cè)頭,來(lái)緩解物體劇烈變化帶來(lái)的尺寸變化。如圖3第一個(gè)TPH就是專門用來(lái)預(yù)測(cè)小目標(biāo)(tiny object)產(chǎn)生的。雖然計(jì)算量和內(nèi)存增加,但是效果也有很大提升。
Transformer encoder block:受transformer啟發(fā),本文使用transformer encode block替換convolutional blocks和CSP bottleneck blocks。這個(gè)結(jié)構(gòu)如圖4所示。
?作者認(rèn)為transformer encode block相對(duì)于CSPDarknet53塊 能夠捕獲更多的全局信息和豐富的上下文信息。transformer encode block包含兩子層:多頭注意力層和全連接層。
Convolutional block attention module (CBAM):CBAM是一個(gè)輕量級(jí)且有效的模塊,可輕易嵌入CNN框架中。給出一個(gè)特征圖,CBAM可以在通道和空間上給出注意力圖。CBAM如圖5所示。實(shí)驗(yàn)表明CBAM對(duì)最終效果有巨大的提升。
Ms-testing and model ensemble:本文在不同視角訓(xùn)練五個(gè)不同的模型。推理時(shí),使用ms-testing策略:1. 縮放圖像至原圖的1.3倍。2. 分別把圖像縮小1倍,0.83倍,0.67倍。3. 水平翻轉(zhuǎn)圖像。最終獲取6個(gè)人不同尺度的圖像,并使用nms融合預(yù)測(cè)結(jié)果。 不同模型使用相同的ms-testing操作,最終通過(guò)WBF融合5個(gè)模型的預(yù)測(cè)結(jié)果。
Self-trained classifier:自訓(xùn)練分類器,主要對(duì)一些預(yù)測(cè)的檢測(cè)框很準(zhǔn)確但是對(duì)分類能力較差的類別從原圖上剪切出來(lái),并resize到64*64大小,使用ResNet18做一個(gè)分類網(wǎng)絡(luò),最終結(jié)果提升0.8%~1.0%的AP。
4. 實(shí)驗(yàn)
數(shù)據(jù)集:VisDrone 2021。
測(cè)試集:VisDrone 2021中的testset-challenge,testset-dev
測(cè)評(píng)指標(biāo):mAP([0.5:0.95],AP50)
4.1 實(shí)現(xiàn)細(xì)節(jié)
pytorch版本:1.8.1
算法:TPH-YOLOv5
顯卡:NVIDIA RTX3090 GPU (訓(xùn)練和測(cè)試)
預(yù)訓(xùn)練模型:yolov5x。因?yàn)門PH-YOLOv5和YOLOv5共享大部分backbone(block 0~8)和部分head(block 10~13 和 block 15~18)。
訓(xùn)練epoch:65 epoch。因?yàn)橛?xùn)練集較少。
warm-up:2 epoch。
優(yōu)化器:adam optimizer。
初始學(xué)習(xí)率:3e-4。
schedule:cosine lr。
last epoch學(xué)習(xí)率:衰減到初始學(xué)習(xí)率的0.12倍。
輸入圖像尺寸:最長(zhǎng)邊1536個(gè)像素
batch size:2
數(shù)據(jù)分析:模型訓(xùn)練前先遍歷整個(gè)數(shù)據(jù),對(duì)提高mAP是有很大幫助的。本文分析VisDrone2021訓(xùn)練集的bounding boxes,當(dāng)輸入是1536時(shí),有622 / 342391個(gè)label框小于3個(gè)像素的,如圖7所示。對(duì)訓(xùn)練集做預(yù)處理:用灰色方塊覆蓋小目標(biāo),在訓(xùn)練的話mAP提高了0.2。
多尺度測(cè)試:訓(xùn)練時(shí)使用多種數(shù)據(jù)增強(qiáng)方式提高模型效果,那么測(cè)試時(shí)使用數(shù)據(jù)增強(qiáng),理論上也能夠帶來(lái)性能的提升。本文使用三種不同尺寸的圖像做測(cè)試,并且每種尺寸圖像做翻轉(zhuǎn)增強(qiáng),所以一張測(cè)試圖像共獲取6張不同的圖像。然后測(cè)試這6張不同圖像,融合他們的結(jié)果,得到最終結(jié)果。
4.2 對(duì)比sota算法
對(duì)比數(shù)據(jù)集:VisDrone2021-DET testset-challenge。
受比賽服務(wù)器的限制,本文只得到了4個(gè)模型在測(cè)試集挑戰(zhàn)上的結(jié)果和5個(gè)模型集成的最終結(jié)果。
效果mAP:39.18(VisDrone2021) > 38.37(VisDrone2020)
比賽排名:5名,比第一名39.43,低了0.25。 如果沒(méi)有提交次數(shù)限制,本算法將獲取更高的排名。
table1 是歷年VisDrone比賽得分和提交算法的對(duì)比。
4.3 消融實(shí)驗(yàn)
測(cè)試數(shù)據(jù)集:VisDrone2021-DET testset-dev。
table 2就是本文算法的消融實(shí)驗(yàn)結(jié)果,添加對(duì)應(yīng)模塊的效果。
有效額外預(yù)測(cè)頭:增加小目標(biāo)檢測(cè)頭,yolov5x層的數(shù)量有607增加到719。GFLOPs:219.0 -> 259.0。雖然計(jì)算量增加了,但是效果也有很大的提升。如圖9所示,小目標(biāo)的檢測(cè)效果有很大的提升,所以增加計(jì)算量是值得的。
有效的transformer編碼塊:使用transformer encoder block后,模型層數(shù)由719 -> 705,GFLOPs由259.0 ->?237.3。使用transformer encoder block不僅能夠提高mAP,還能夠降低網(wǎng)絡(luò)尺寸。同時(shí),在稠密目標(biāo)和大目標(biāo)檢測(cè)中,扮演者重要角色。
有效的模型集成:table 3是5個(gè)不同模型在每個(gè)分類上的最終融合結(jié)果和對(duì)比。?每個(gè)模型都是不一樣的:In training phrase, we use different input image sizes and change the weight of each category to make each model unique.文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-445458.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-445458.html
到了這里,關(guān)于TPH-yolov5論文解讀的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!