日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SNIP 算法笔记

發(fā)布時間:2023/12/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SNIP 算法笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

論文:An Analysis of Scale Invariance in Object Detection – SNIP
論文鏈接:https://arxiv.org/abs/1711.08189
代碼鏈接:http://bit.ly/2yXVg4c

這篇是CVPR2018的文章,引用文獻非常到位,同時實驗結(jié)果非常驚艷,總體來看比同是CVPR2018上的cascade RCNN效果還要好一些。概括而言,這篇文章從COCO數(shù)據(jù)集開始分析,認(rèn)為目前目標(biāo)檢測算法的難點在于數(shù)據(jù)集中object的尺寸分布較大,尤其對于小目標(biāo)的檢測效果也有待提高,因此提出Scale Normalization for Image Pyramids (SNIP)算法來解決這個問題。

先來看看這篇文章的出發(fā)點。這篇文章的出發(fā)點可以簡單概括為:數(shù)據(jù)集。作者發(fā)現(xiàn)如果將數(shù)據(jù)集按照圖像中object的尺寸(scale)除以圖像尺寸的倍數(shù)來排序,那么在ImageNet數(shù)據(jù)集中,這個倍數(shù)的中位數(shù)差不多是0.554倍,而在COCO數(shù)據(jù)集中,這個倍數(shù)是0.106倍,如Figure1中兩條線標(biāo)出的Median點所示。Figure1是關(guān)于ImageNet和COCO數(shù)據(jù)集中object尺寸和圖像尺寸的倍數(shù)關(guān)系曲線,橫坐標(biāo)表示object的尺寸/圖像尺寸的值,縱坐標(biāo)表示占比。也就是說在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尺寸變化范圍非常大。

那么這種差異會帶來什么影響呢?因為在目標(biāo)檢測算法中常用基于ImageNet數(shù)據(jù)集預(yù)訓(xùn)練的模型來提取特征,也就是常說的遷移學(xué)習(xí),但是從Figure1的兩條曲線可以看出ImageNet和COCO數(shù)據(jù)集在object的尺寸分布上差異比較大,這樣在做遷移學(xué)習(xí)時可能會存在一些問題,文章中將這個問題概括為domain-shift,可以簡單理解為訓(xùn)練集和測試集分布存在較大差異,后面會有實驗來證明這種差異對效果的影響。其實去年的YOLO v2也研究了類似的問題,YOLO v2考慮到在ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練模型時輸入圖像大小是224*224,和檢測網(wǎng)絡(luò)用的尺寸差別較大(YOLO v2中常用416*416),所以就將預(yù)訓(xùn)練模型在416*416的ImageNet數(shù)據(jù)集上繼續(xù)預(yù)訓(xùn)練,然后再用到檢測模型提特征,這樣就實現(xiàn)了預(yù)訓(xùn)練模型和檢測模型的良好過渡。

其實之前就有不少算法針對數(shù)據(jù)集中不同尺寸的object檢測進行改進,比如以Feature Pyramid Network(FPN)為例的通過融合高低層特征并基于多層融合特征單獨預(yù)測的算法;以Dilated/Deformable Convolution為例的通過改變卷積核的感受野來提升檢測效果;以multi-scale training/inference為例的通過引入圖像金字塔來訓(xùn)練或驗證圖像。這篇文章基于對數(shù)據(jù)集的分析,提出一種新的訓(xùn)練模型的方式:Scale Normalization for Image Pyramids (SNIP),該算法主要包含兩個改進點:1、為了減少前面所提到的domain-shift,在梯度回傳時只將和預(yù)訓(xùn)練模型所基于的訓(xùn)練數(shù)據(jù)尺寸相對應(yīng)的ROI的梯度進行回傳。2、借鑒了multi-scale training的思想,引入圖像金字塔來處理數(shù)據(jù)集中不同尺寸的數(shù)據(jù)。

接下來詳細介紹這兩種改進。

首先是在ImageNet數(shù)據(jù)集上做關(guān)于scale variantion的實驗,換句話說就是驗證前面提到的domain-shift對模型效果的影響。實驗結(jié)果參看Figure3和Figure4,主要通過基于不同分辨率的圖像訓(xùn)練模型和用不同分辨率的圖像作為驗證集來驗證的方式評估訓(xùn)練集和測試集的尺度差異對效果的影響。

CNN-B:分類模型還是基于ImageNet數(shù)據(jù)集常規(guī)的224*224大小來訓(xùn)練,但是驗證數(shù)據(jù)做了修改,首先將ImageNet的驗證數(shù)據(jù)縮小到48*48、64*64、80*80、96*96和128*128,然后再將這些尺寸放大到224*224作為模型的輸入,可以看出放大后的圖像分辨率較低。因此這個實驗?zāi)M的就是你訓(xùn)練數(shù)據(jù)的分辨率(resolution)和驗證數(shù)據(jù)的分辨率不一致(甚至是差別很大)的時候?qū)πЧ挠绊?#xff0c;該實驗的結(jié)果可以看Figure4(a)。
CNN-S:訓(xùn)練數(shù)據(jù)的分辨率和驗證數(shù)據(jù)的分辨率保持一致,這里主要針對48*48和96*96分辨率,同時對網(wǎng)絡(luò)結(jié)構(gòu)的第一層做了修改。比如基于48*48的數(shù)據(jù)進行訓(xùn)練,將卷積核大小為7*7的卷積層換成卷積核為3*3,stride為1的卷積層。基于96*96的數(shù)據(jù)進行訓(xùn)練時,將卷積核大小為7*7的卷積層換成卷積核尺寸為5*5,stride為2的卷積層。顯然,該實驗?zāi)M的是訓(xùn)練數(shù)據(jù)分辨率和驗證數(shù)據(jù)分辨率一致時的效果,實驗結(jié)果可以看Figure4(b)(c)。
CNN-B-FT:是CNN-B在放大的低分辨率圖像上fine tune后的模型,同時輸入圖像也采用放大的低分辨率圖像。可以看出該實驗主要驗證基于高分辨率圖像訓(xùn)練的模型是否能有效提取低分辨率圖像的特征,實驗結(jié)果可以看Figure4(b)(c)。

Figure4是關(guān)于Figure3中提到的CNN-B、CNN-S和CNN-B-FT的實驗結(jié)果。從(a)可以看出如果驗證數(shù)據(jù)的分辨率和訓(xùn)練數(shù)據(jù)的分辨率差別越大,則實驗結(jié)果越差。這說明其實CNN網(wǎng)絡(luò)對尺寸變化的輸入圖像的魯棒性(robust)還不夠好。從(b)和(c)中CNN-B和CNN-S的對比可以看出當(dāng)訓(xùn)練數(shù)據(jù)的分辨率和驗證數(shù)據(jù)的分辨率相同時,效果要好很多。從(b)和(c)中CNN-B和CNN-B-FT的對比可以看出后者的效果要更好,二者的差別僅僅在于模型是否在放大的低分辨率圖像上做fine tune,因此可以得出結(jié)論:基于高分辨率圖像訓(xùn)練的模型同樣能有效提取放大的低分辨率圖像的特征。

介紹完在ImageNet數(shù)據(jù)集上的實驗,接下來就來看看在COCO數(shù)據(jù)集上關(guān)于scale-specific detector和scale invariant detector的實驗,具體實驗結(jié)果參看Table1和Figure5。

Table1是關(guān)于在小目標(biāo)驗證集上的檢測效果對比,所用的驗證圖像尺寸都是1400*2000。
800all和1400all分別表示檢測網(wǎng)絡(luò)基于800*1400和1400*2000大小的圖像進行訓(xùn)練,從二者的mAP結(jié)果對比可以看出1400all的效果要更好一些,主要原因就在于訓(xùn)練圖像的分辨率和驗證圖像的分辨率一致,這和前面基于ImageNet數(shù)據(jù)集的實驗結(jié)果也吻合,但這個提升非常小,猜測原因在于雖然基于放大圖像(原始圖像大概640*480,放大成1400*2000)訓(xùn)練的模型在訓(xùn)練過程中可以提高對小目標(biāo)物體的檢測,但是由于訓(xùn)練數(shù)據(jù)中尺寸中等或較大的目標(biāo)的尺寸太大所以難以訓(xùn)練,這就影響了模型最終的效果。檢測結(jié)果可以參考Figure5(1)。
1400<80px表示訓(xùn)練數(shù)據(jù)尺寸是1400*2000,但是訓(xùn)練過程中忽略中等尺寸和大尺寸的目標(biāo)(中等和大尺寸目標(biāo)的標(biāo)準(zhǔn)是在原始圖像中目標(biāo)寬高的像素點大于80),這就是前面所說的scale-specific detector,也就是基于單一尺寸范圍的輸入進行訓(xùn)練,這樣能夠減少所謂的domain-shift。因此做這個實驗的目的是基于前面那個實驗中的猜想:基于1400*2000大小的圖像訓(xùn)練時由于訓(xùn)練數(shù)據(jù)中尺寸中等及較大的目標(biāo)對模型訓(xùn)練有負作用,因此這里直接在訓(xùn)練過程中忽略這樣的數(shù)據(jù)。但是從Table1可以看出這個模型的效果非常差,猜想原因是忽略這些訓(xùn)練數(shù)據(jù)(占比大約30%)所帶來的數(shù)據(jù)損失對模型效果的影響更大,具體的檢測結(jié)果可以參考Figure5(2)。
Multi-Scale Training(MST)表示訓(xùn)練一個檢測器時采用不同尺度的圖像進行訓(xùn)練(包括480*800),也就是前面所說的scale invariant detector。照理來說這個實驗的效果應(yīng)該會比較好的,因為每個object都會有多種尺寸來訓(xùn)檢測模型,但是從Table1可以看出該模型的效果和800all差不多,這是為什么呢?主要原因在于訓(xùn)練數(shù)據(jù)中那些尺寸非常大或非常小的object會影響訓(xùn)練效果,因此這篇文章在引入MST思想的同時限定了不同尺寸的object在訓(xùn)練過程中的梯度回傳,這就是SNIP
Scale Normalization for Image Pyramids(SNIP)是這篇文章提出的算法,從Table1可以看出效果提升非常明顯。

Figure5是關(guān)于Table1中不同實驗的訓(xùn)練數(shù)據(jù)展示。

鋪墊了這么多,終于輪到這篇文章的主角登場了:Scale Normalization for Image Pyramids(SNIP)。

從前面的分析可以看出,我們希望有一個算法能夠既get到多尺度的目標(biāo)信息,又能減少domain-shift帶來的影響,因此就誕生了SNIP。SNIP借鑒了Multi-Scale Training(MST)的思想,在MST方法中,由于訓(xùn)練數(shù)據(jù)中尺寸極大或極小的目標(biāo)會影響實驗結(jié)果,因此SNIP的做法就是只對尺寸在指定范圍內(nèi)的目標(biāo)回傳損失(該范圍需接近預(yù)訓(xùn)練模型的訓(xùn)練數(shù)據(jù)尺寸),也就是說訓(xùn)練過程實際上只是針對這些目標(biāo)進行的,這樣就能減少domain-shift帶來的影響。又因為訓(xùn)練過程采用了類似MST的做法,所以每個目標(biāo)在訓(xùn)練時都會有幾個不同的尺寸,那么總有一個尺寸在指定的尺寸范圍內(nèi)。需要注意的是對目標(biāo)的尺寸做限制是在訓(xùn)練過程,而不是預(yù)先對訓(xùn)練數(shù)據(jù)做過濾,訓(xùn)練數(shù)據(jù)還是基于所有數(shù)據(jù)進行。實驗證明這種做法對小目標(biāo)物體的檢測非常有效,參看Table1中SNIP的mAP結(jié)果。

Figure6是SNIP算法的示意圖。不管是訓(xùn)練檢測器還是RPN網(wǎng)絡(luò),都是基于所有g(shù)round truth來定義proposal和anchor的標(biāo)簽。正如前面所述,某個ROI在某次訓(xùn)練中是否回傳梯度是和預(yù)訓(xùn)練模型的數(shù)據(jù)尺寸相關(guān)的,也就是說當(dāng)某個ROI的面積在指定范圍內(nèi)時,該ROI就是valid,也就是會在此次訓(xùn)練中回傳梯度,否則就是無效的(如Figure6中右邊的紫色框所示)。這些invalid ROI所對應(yīng)的invalid ground truth會用來決定RPN網(wǎng)絡(luò)中anchor的有效性確定。invalid anchor的定義是和invalid ground truth的IOU大于0.3的anchor就是invalid anchor,如Figure6中左邊的黑色框所示。

關(guān)于RPN網(wǎng)絡(luò)中不同標(biāo)簽的anchor比例作者也做了分析,我們知道在RPN網(wǎng)絡(luò)中,一個anchor的標(biāo)簽是根據(jù)該anchor和ground truth的IOU來決定的,只有兩種情況下才會認(rèn)為某個anchor的標(biāo)簽是正樣本(標(biāo)簽為1):1、假如該anchor和某個ground truth的IOU超過某個閾值(閾值默認(rèn)采用是0.7),那么該ancho就是正樣本。2、假如一個ground truth和所有anchor的IOU都沒超過該閾值,那么和該ground truth的IOU最大的那個anchor就是正樣本。同樣,作者將conv4的輸出作為RPN網(wǎng)絡(luò)的輸入,然后設(shè)置了15種anchor(5 scales,3 aspect ratios),接下來就有意思了,作者發(fā)現(xiàn)在COCO數(shù)據(jù)集上(圖像大小為800*1200),只有30%的ground truth滿足前面第一種情況!即便將閾值調(diào)整為0.5,也只有58%的ground truth滿足第一種情況!這說明什么?說明即便閾值等于0.5,仍有40%的正樣本anchor和ground truth的IOU小于0.5(這些anchor是因為滿足前面的情況2才被定義為正樣本)!顯然,這樣的正樣本質(zhì)量不算很高。而這篇文章因為引入多種分辨率的圖像作為輸入,所以在一定程度上緩解了這種現(xiàn)象。另外,作者也嘗試將conv4和conv5的特征做融合并預(yù)測,不過這部分文章只是一筆帶過,還需要看源碼才能知道具體是怎么做的。

實驗結(jié)果:
Table2是SNIP算法和其他算法的對比。第二行的multi-scale test顯然比第一行的single scale效果要好。第三行,在multi-scale test的基礎(chǔ)上加入multi-scale train的時候,會發(fā)現(xiàn)在大尺寸目標(biāo)(APL)的檢測效果上要比只有multi-scale test的時候差。這個原因我們在前面也介紹過了,主要是因為訓(xùn)練數(shù)據(jù)中那些尺寸極大和極小的object對訓(xùn)練產(chǎn)生了負作用。

Table4是幾個目標(biāo)檢測算法結(jié)果的對比。D-RFCN表示Deformable RFCN。D-RFCN+SNIP(RCN+RPN)表示在Deformable RFCN算法的檢測模塊和RPN網(wǎng)絡(luò)中同時加入SNIP。

總結(jié)

以上是生活随笔為你收集整理的SNIP 算法笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。