1. 程式人生 > >Faster rcnn原始碼理解(4)

Faster rcnn原始碼理解(4)

上一篇我們說完了AnchorTargetLayer層,然後我將Faster rcnn中的其他層看了,這裡把ROIPoolingLayer層說一下;

我先說一下它的實現原理:RPN生成的roi區域大小是對應與輸入影象大小(而且每一個roi大小都不同,因為先是禪城九種anchors,又經過迴歸,所以大小各不同),所以在ROIPoolingLayer層中,先將每一個roi區域對映到經過conv5的feature map上,然後roi對應於feature map上的這一塊區域再經過pooling操作對映到一個固定大小的區域,這裡我們用feature map_2表示,Faster rcnn中這個feature map_2的大小設為了6*6。而pooling操作就是feature map_2上的每一個點對應於feature map上roi區域上的一個部分中的最大值~具體看程式碼:

上面程式碼中的spatial_scale在Faster rcnn中為1/16(因為卷積層沒有改變大小,只有pool層改變了大小,所以1/16實際就是pool層的級聯),上面實現了setup()函式和reshape()函式,接下來就看前向傳播了:

               

上面程式碼中:

這一部分實現了RoiPooling中的pool操作,其實就是max操作;

最後為了理解,附上靈魂畫師的圖:

http://www.cnblogs.com/zf-blog/p/7337944.html