理解Faster-RCNN 中的Anchor


先上圖看一下Faster R-CNN操作流程:

 

 


 圖片說明:Faster R-CNN=Fast R-CNN+RPN,其中Fast R-CNN結構不變;RPN負責生成proposals,配合最后一層的feature map,使用ROI Pooling,生成fixed length的feature vector。我們詳細討論一下RPN的操作過程 


圖片說明,紅框只是一個滑窗的操作過程,注意這里的anchor是原圖像像素空間,而不是feature map上的。這樣
anchor是RPN的核心:

       假設我們現在得到的feature map為W * H * C(13 * 13 * 256就是feature map的width=13,height=13,channel=256),我們如何產生網絡需要的proposals呢?我們在feature map使用滑動窗口的操作方式(stride=1,padding=1),當前滑窗的中心在原像素空間的映射點稱為anchor,以此anchor為中心,生成k(paper中default k=9, 3 scales and 3 aspect ratios)個proposals。
在此feature map滑動一個mini-network,這個network輸入是3 * 3 * 256,經過3 * 3 * 256 * 256的卷積,得到1 * 1 * 256的低維向量;接下來進行分類:①Classification:經過1 * 1 * 256 * 18的卷積核,得到1 * 1 * 18的feature vector,分別代表9個proposals的是/不是Object的概率(這里有一個疑惑,為什么要生成一對?生成一個是Object的概率不就好了?也許是為了設計方便?);②Regression:經過1 * 1 * 256 * 36的卷積核,得到1 * 1 * 36的feature vector,分別代表9個proposals的(center_x,center_y,w,d)。
上述操作只是一個3 * 3的滑動窗口的操作過程,實際操作過程中,必須將13 * 13的feature map均執行一邊;於是在RPN中,產生了兩個損失函數:①Classification loss②Regression loss。
這樣的話,通過滑動窗口和anchor機制,我們就可以找到固定比例、一定大小的proposals:①物體大小不同導致的proposal被覆蓋②物體aspects ratios不同導致proposals也被覆蓋
由上可知,NRP可以代替Selective Search產生proposals,而且最關鍵的一點是RPN 更快
ROI pooling V.S. SSP Pooling 
ROI是只有一層的

SSP Pooling:ROI Pooling將proposal在feature map上的對應區域分為W * H 份,每一份取Max/Avg 將其放到固定位置
SSP Pooling是將proposal分為(4 * 4 / 2 * 2 / 1 * 1份,然后進行拼接,得到fixed length=21的feature vector)

 

對於Faster-RCNN的解讀:https://zhuanlan.zhihu.com/p/31426458

 


免責聲明!

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



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