RPN網路的錨是如何生成的

2021-08-09 06:36:08 字數 1174 閱讀 1313

anchor這個問題,我最初也沒弄懂。剛剛看完rbg大神的原始碼,終於明白了,來回答一發,如果有不對的地方請大家指出。

以vgg-16改造的faster r-cnn為例。py-faster r-cnn的/model/pascal-voc/vgg16/faster_rcnn_alt_opt/faster_rcnn_test.pt的rpn部分。這部分是在原來的vgg16的conv5_3之後新增的。

1、conv5_3->rpn_conv/3*3->rpn_relu對應於文中進行n*n的卷積。這裡輸出的維數(output)為512,高h和寬w為輸入的影象原始大小的1/16。(1,512,h,w)

2、rpn_relu->rpn_cls_score->rpn_cls_score_reshape->rpn_cls_prob->rpn_cls_prob_reshape

這裡是**每個點的前景背景概率。rpn_cls_score實際上就是乙個1*1的卷積層而已。

如果有a個anchor,每個anchor都有乙個前景概率乙個背景概率(2*a),輸出的大小為(1,2*a,h,w)。

這裡的reshape只是為了利用softmax層進行概率的計算而已。

3、rpn_relu->rpn_bbox_pred

這裡就是**每個點的boundingbox。同樣的,rpn_bbox_pred也是乙個1*1的卷積層而已。輸出大小為(1,4*a,h,w) 。

關鍵在此,這裡輸出的並不是乙個boundingbox的左上右下座標,而是乙個修改量(boundingbox regression)。在r-cnn的supplementary material中,給出了下面幾個公式

這裡的proposal_layer就完成了上述修正,並且進行nms(非極大抑制)以及概率排序等獲得最終的boundingbox。這樣就完成了在同乙個點上獲得不同尺度不同比例的包圍盒。

輸出大小為:(n,4),這裡的 n與nms以及概率排序閾值有關,得到的就是boundingbox的四個座標。

RPN網路的anchor機制

anchors是一組大小固定的參考視窗 三種尺度 三種長寬比,如下圖所示,表示rpn網路中對特徵圖滑窗時每個滑窗位置所對應的原圖區域中9種可能的大小,相當於模板,對任意影象任意滑窗位置都是這9中模板。繼而根據影象大小計算滑窗中心點對應原圖區域的中心點,通過中心點和size就可以得到滑窗位置和原圖位置...

如何正確的理解RPN網路的train和test

剛開始學faster rcnn時,遇到些困惑不知其他人有沒有 1 rpn網路訓練的輸出是什麼?2 rpn網路在train中的作用是什麼?3 rpn網路在test中的作用是什麼?其實這些我們如果不看原始碼都很難真正理解!以faster rcnn tf的原始碼為例,以下 取自.lib networks ...

python生成詞向量 詞向量是如何生成的

遇到這個問題的時候,網上有個很經典的 word2vec的數學原理 上面一文解釋得很詳細,但小白入門會看得很蒙逼,不知道初始向量值是怎麼來的,全域性來呼叫是怎樣執行的。所以我就希望寫一篇文章,舉一些例子,去闡述這個詞向量到底是怎樣產生的。word2vec的數學原理 傳送門 word2vec數學原理 這...