SNIP——“自适应”型“狙击”策略 (目标检测)(two-stage)(深度学习)(CVPR 2018)
論文名稱:《?An Analysis of Scale Invariance in Object Detection – SNIP 》
論文下載:https://arxiv.org/abs/1711.08189
論文代碼:http://bit.ly/2yXVg4c
一、概述:
1、本文的主要工作:
(1)通過實(shí)驗(yàn)驗(yàn)證了upsampling對(duì)于提高小目標(biāo)檢測的效果——認(rèn)為其效果不大;
(2)提出了一種Scale Normalization for Image Pyramids的方法——很有道理但不易實(shí)現(xiàn)。
2、針對(duì)COCO數(shù)據(jù)集的實(shí)驗(yàn)結(jié)論:
作者對(duì)COCO數(shù)據(jù)集的尺度進(jìn)行了分析,下圖中,橫坐標(biāo)代表了GT目標(biāo)與圖像大小的IoU比,縱坐標(biāo)代表了尺度的概率分布(每個(gè)IoU所對(duì)應(yīng)該值以內(nèi)GT的比重)。COCO數(shù)據(jù)集中,大部分的object面積只有圖像面積的1%以下,這說明在COCO數(shù)據(jù)集中小目標(biāo)占比要比ImageNet數(shù)據(jù)集大。另外,從Figure1中的COCO曲線可以看出,第90%的倍數(shù)(0.472)差不多是第10%的倍數(shù)(0.106)的20倍!這說明在COCO數(shù)據(jù)集中的object尺寸變化范圍非常大。
3、作者的motivation:
(1)現(xiàn)在檢測網(wǎng)絡(luò)為了提高對(duì)小目標(biāo)的效果,都采用upsample的方法,這個(gè)真的是必要的嗎?我能不能直接用低分辨率的圖像不做upsample來訓(xùn)練網(wǎng)絡(luò)(需要調(diào)小strides),即在ImageNet上用低像素圖片預(yù)訓(xùn)練一個(gè)縮放倍數(shù)較小的CNN?
(2)用ImageNet做預(yù)訓(xùn)練模型的時(shí)候訓(xùn)練檢測器的時(shí)候, 是否所有尺寸的object都可以參與進(jìn)來?用所有的gt來訓(xùn)練真的更好嗎? 能不能通過挑選樣本的方式來增加網(wǎng)絡(luò)效果的,比如我upsample調(diào)整了大小以后,只用64x64~256x256范圍的ground truth來訓(xùn)練?
4、現(xiàn)在有很多針對(duì)小目標(biāo)的措施和改良方案:
(1)擴(kuò)大卷積感受野:使用dilated/strous或者deformable這類特殊的卷積來提高檢測器對(duì)分辨率的敏感度(如RFB);
(2)上采樣把小目標(biāo)變大:最常用的,upsample來rezie網(wǎng)絡(luò)輸入圖像的大小(如YOLO);
(3)融合低層特征:使用FPN這種把淺層特征和深層特征融合的,或者最后在預(yù)測的時(shí)候,使用淺層特征和深層特征一起預(yù)測;也有比較直接地在淺層和深層的feature map上直接各自獨(dú)立做預(yù)測的(如FPN);
二、內(nèi)容:
1、提出訓(xùn)練策略:
(1)CNN-B——原圖訓(xùn)練(高清)+ “偽高清”測試(低清upsample):
CNN-B是一個(gè)在224x224尺度上訓(xùn)練的模型, 其stride=2,將測試圖片降采樣到 [48x48, 64x64, 80x80, 96x96,128x128], 然后再放大回224x224用于測試。
結(jié)論:訓(xùn)/測尺度(實(shí)際上是清晰度)差距越大,,性能越差,?因?yàn)椴挥门c訓(xùn)練尺度相互匹配的尺度進(jìn)行測試, 會(huì)使得模型一直在sub-optimal發(fā)揮。
(2)CNN-S——低清訓(xùn)練 + 低清測試:
CNN-S是根據(jù)上述原則,,做的訓(xùn)練/檢測尺度匹配的實(shí)驗(yàn).,選取48x48作為訓(xùn)練和測試的尺度.,并且stride=1,根據(jù)結(jié)果看到, 訓(xùn)/測尺度匹配后, 性能大幅提升. 同樣將48換成96也得到一致的結(jié)果.
(3)CNN-B-FT——原圖訓(xùn)練(高清)+ “偽高清”微調(diào)(低清upsample) +? “偽高清”測試(低清upsample):
把由原圖訓(xùn)練的CNN-B用偽高清去做微調(diào).,最終CNN-B-FT的結(jié)果甚至好于CNN-S。可得在高清訓(xùn)練集學(xué)出來的模型依然有辦法在低清晰度的圖片上做預(yù)測,直接用低清晰度圖片微調(diào)好過將stride降低得到高清圖片后微調(diào)(重新訓(xùn)練)。
總結(jié),這三個(gè)網(wǎng)絡(luò):
? ?(1) CNN-B使用高分辨率圖像訓(xùn)練,分類經(jīng)過降采樣和upsample的圖片;
? ?(2)CNN-S使用低分辨率圖像訓(xùn)練,分類經(jīng)過降采樣的圖片;
? ?(3)CNN-B-FT使用高分辨率圖像訓(xùn)練,然后在低分辨率圖像上fine-tune,分類經(jīng)過降采樣和upsample的圖片;
本質(zhì)上,其實(shí)三個(gè)網(wǎng)絡(luò)都是在對(duì)小目標(biāo)進(jìn)行分類,最后結(jié)果,CNN-B-FT準(zhǔn)確率最高,CNN-S其次,作者認(rèn)為這是因?yàn)?strong>模型從高分辨率圖像中得到了充分的學(xué)習(xí)。同時(shí)說明,訓(xùn)練樣本和輸入樣本如果分辨率存在太大誤差,performance必然下降。與其為了小目標(biāo)而專門使用改變的網(wǎng)絡(luò)結(jié)構(gòu)(CNN-S),直接upsample微調(diào)和使用高分辨率圖像預(yù)訓(xùn)練得到的模型是更好的選擇(CNN-B-FT)。
作者想通過上面這個(gè)實(shí)驗(yàn)說明:
(1)upsample確實(shí)一定程度上可以提高性能,但是并不顯著,這是因?yàn)?strong>Upsample提高了小目標(biāo)的檢測效果,但會(huì)讓本來正常大小或者本來就大的目標(biāo)過大,性能下降;
(2)訓(xùn)練網(wǎng)絡(luò)需要使用大量樣本,樣本損失會(huì)導(dǎo)致性能下降;
(3)隨機(jī)在分辨率之間采樣的效果也不好,雖然你的樣本滿足了多尺度條件,但是還有其它原因限制了性能。
2、提出SNIP:
(1)SNIP的思想:
SNIP是MST(多尺度訓(xùn)練)的升級(jí)版.,只有當(dāng)這個(gè)物體的尺度與預(yù)訓(xùn)練數(shù)據(jù)集的尺度(通常224x224)接近時(shí),我們才把它用來做檢測器的訓(xùn)練樣本。這一切基于一個(gè)假設(shè), 即不同尺度的物體,因?yàn)槎喑叨扔?xùn)練,總有機(jī)會(huì)落在一個(gè)合理的尺度范圍內(nèi),只有這部分合理尺度的物體參與了訓(xùn)練, 剩余部分在BP的時(shí)候被忽略了,不參與反向傳播。
(2)SNIP中的RPN階段(以anchor為基礎(chǔ)生成region proposal):
1)生成Anchor并判斷正負(fù):用所有的GroundTruth給Anchors分配好+/-標(biāo)簽;
2)刪除過大、過小的Anchor:根據(jù)第i個(gè)尺度下的有效范圍: [si,ei], 將GroundTruth根據(jù)是否落在范圍內(nèi)分為Valid/Invalid GT;
3)刪除定位不準(zhǔn)的Anchor:除那些IoU(anchors|InvalidGT)>0.3的Anchors;
(3)SNIP中的FC階段:
1)給region proposal分類:用所有的GroundTruth給ProposalRoIs分配好類別標(biāo)簽;
2)在本次迭代的本張圖片中刪除過大or過小的GT和Proposal:棄用不在[si,ei]范圍內(nèi)的GT和Proposals;
3)在本次迭代中刪除不存在合適大小的GT的圖片;
(4)算法核心:
1)在生成Anchor并給Anchor分配label的時(shí)候,檢查該Anchor是否和某個(gè)invalid gt box的overlap超過0.3,若存在,則該Anchor會(huì)被視作invalid Anchor;若不存在,則會(huì)被視作valid Anchor。這些invalie anchor在train的時(shí)候都會(huì)被無效化,也不會(huì)加入到反向傳播的過程中從而對(duì)參數(shù)產(chǎn)生影響,相當(dāng)于在每個(gè)分辨率上,只對(duì)大小合適的目標(biāo)進(jìn)行訓(xùn)練,相應(yīng)的,在inference預(yù)測邊界框時(shí)候,如果區(qū)域面積在那個(gè)分辨率的指定范圍外,也同樣會(huì)被拋棄,最后,在進(jìn)行rescale和NMS。
2)SNIP相當(dāng)于開了三個(gè)pipe-line,劃分了三個(gè)尺度,其中包括了三個(gè)并行的feature extraction,對(duì)應(yīng)三種不同分辨率的圖像,每個(gè)pipe-line的RPN只負(fù)責(zé)一個(gè)scale range的proposal生成,每個(gè)分辨率i下的RoI都有其指定范圍,如果gt的box大小在這個(gè)范圍內(nèi),就被標(biāo)記做valid,否則就被標(biāo)記為invalid。每個(gè)尺度只學(xué)最容易學(xué)的region proposal,因此SNIPaccuracy高,但speed慢;
3)對(duì)于大尺度的feature map,對(duì)應(yīng)的RPN只負(fù)責(zé)預(yù)測被放大的小物體,此時(shí)原來的大目標(biāo)因?yàn)樘笠呀?jīng)不在有效范圍內(nèi);對(duì)于小尺度的feature map,對(duì)應(yīng)的RPN只負(fù)責(zé)預(yù)測被縮小的大物體,此時(shí)原來的小目標(biāo)因?yàn)樘∫呀?jīng)不在有效范圍內(nèi);這樣的設(shè)計(jì)保證了每個(gè)CNN分支在判別proposal是否為感興趣區(qū)域時(shí),只需針對(duì)最易分類的中等range的proposal進(jìn)行訓(xùn)練,而不會(huì)大小一起學(xué)從而走火入魔——學(xué)亂了記差了;
(5)細(xì)節(jié)問題:
1)作者使用的是Deformable RFCN detector而不是常見的一般卷積;
2) 作者使用的網(wǎng)絡(luò)結(jié)構(gòu)是Dual path networks(DPN)和ResNet-101,由于需要內(nèi)存很大,為了適應(yīng)GPU內(nèi)存,作者對(duì)圖像進(jìn)行了采樣,具體方法是選取一個(gè)1000x1000的包含最多目標(biāo)的區(qū)域作為子圖像,然后重復(fù)該步驟直到所有目標(biāo)都被選取;
3) 作者為了提升RPN的效果,嘗試了使用7個(gè)尺度,連接conv4和conv5的輸出等等。
三、測試階段:
1、測試方法:
(1)用多尺度正常進(jìn)行測試;
(2)在合并多尺度Detection之前, 只在各個(gè)尺度留下滿足其條件的參與Detection的框;
(3)Soft-NMS合并結(jié)果;
2、實(shí)驗(yàn)結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的SNIP——“自适应”型“狙击”策略 (目标检测)(two-stage)(深度学习)(CVPR 2018)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国防科技论坛,一个不错的技术资料分享网站
- 下一篇: 目标检测——从RCNN到Faster R