目標探測:r-cnn, fast-rcnn, faster-rcnn, yolo, mask-rcnn


目標探測:r-cnn, fast-rcnn, faster-rcnn, yolo, mask-rcnn

作者:尼箍納斯凱奇
鏈接: https://www.zhihu.com/question/57403701/answer/153447728 
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

第一篇r-cnn是rcnn是ross girshick在UCB Darrell組的時候的工作,這篇論文主要是先selective search去選出若干proposals,然后resize到同一個scale放入alexnet類似的網絡抽特征,加k個svm或者softmax得到分類結果。然后測試階段走個非極大值抑制的算法去得到結果。整個網絡是最初始化的rcnn,很多人都覺得思路很簡單,不過在那個時候算是最開始利用CNN做detection的一批。

selective search:在目標檢測時,為了定位到目標的具體位置,通常會把圖像分成許多子塊(sub-regions / patches),然后把子塊作為輸入,送到目標識別的模型中。分子塊的最直接方法叫滑動窗口法(sliding window approach)。滑動窗口的方法就是按照子塊的大小在整幅圖像上窮舉所有子圖像塊。這種方法產生的數據量想想都頭大。和滑動窗口法相對的是另外一類基於區域(region proposal)的方法。selective search就是其中之一!參考這篇:https://blog.csdn.net/guoyunfei20/article/details/78723646

非極大值抑制:感覺可以理解為同一個物體可能檢測出多個框,故將這些框排序,選出得分最高的框。參考這篇:https://blog.csdn.net/shuzfan/article/details/52711706

 

第二篇fast-rcnn RBG去了MSR,然后單手擼了一篇改進版fast rcnn。看看paper作者那欄,一個人孤單寂寞的編曲。。。還是基於ss得到的proposals,這篇論文重點在roipool那部分,怎么做呢?參考論文2.1求得sub-windows大小之后,划分為7*7的grid。這樣無論你的RoI的scale多大,都可以map到同一個size。這樣你可以把之前2000次前向,縮減到只有一次前向就可以得到若干個roi部分的特征,然后跟兩個sibling layers,一個做分類,一個回歸bb。這樣測試階段比第一篇節省了很多很多時間。

roipool(ROI pooling):一種pooling方式,輸入特征圖尺寸不固定,輸出特征圖尺寸固定

 

第三篇faster-rcnn論文Ross開始和MSRA的學者合作了,shaoqing、kaiming、jian sun等。終於不再孤單的編曲。。。這篇論文基於fast rcnn干了這么一個事情,把selective search那種很傻很笨的辦法用RPN的網絡取代了。然后這個RPN網絡可以直接在一個完整的網絡中給ROIpool那塊提供proposal的信息。訓練過程中,RPN的region proposal的task和object detection的task部分實際上是交替訓練的。另外看論文圖三那個最重要的圖示,他在top的conv feature maps那里接一個3*3的sliding windows。這部分本身receptive fields比較大嘛~然后作者在這里加了9種anchors的變化,對應圖一c中的multi scale。這樣之后再sibling layers然后做是不是object的score和坐標回歸。整個思路就是加了這些。

RPN網絡:區域推薦網絡。主要解決從一張圖片中獲取proposal。見這篇https://blog.csdn.net/wfei101/article/details/77150573

 

第四篇mask-rcnn論文,也就是知乎提問的mask rcnn。此時此刻,RBG去了FAIR,而kaiming又和RBG重逢了,滿滿的基情就是你在哪,我的paper就跟你一起掛在哪。實際上本篇就在第三篇faster rcnn基礎上加了roialign部分【這一部分實際上是對roipool的改進】,以及加了一個segmentation的branch。為什么roipool不好呢?因為在你roi縮到7*7的過程中,如果你roi剛好是8*7的大小,那么你按w/W,h/H取整縮小是不是漏了幾個pixel,這幾個pixel對應的receptive field確是很大的,帶來所謂的misalignment。那么怎么辦?好,借鑒STN論文里面的雙線性插值,我把8*7的大小擴大到14*14,然后再做聚合,到7*7的大小。這樣就充分利用了那個被忽略了的部分。(這部分細節上可能我理解不對,具體要等ross源碼公布了再能確定,如有錯誤,希望指出)。然后看論文圖三,就可以分出一個branch給segmentation的部分,這部分deconv做到28*28之后,直接resize到roi的大小,然后參考第三頁左下角,用per-pixel sigmoid和binary loss的方式優化。

roialign:roipooling中的最近鄰插值改為雙線性插值后得到的pooling方式

雙線性插值:即對f(x,y)二元函數的x和y兩個方向上進行線性插值,是圖片放縮中的常用技術,同樣的圖片放縮技術還有雙三次插值等。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM