针对Faster RCNN具体细节以及源码的解读之RoIPooling层

从今天开始,阅读faster rcnn的相关代码,并记录我对faster rcnn中特别的层的理解。本篇主要是对RoiPooling进行解读。

RBG大神认为CPU版本的太慢了,故有些操作CPU版压根就没有实现。RoI Pooling就是实现从原图区域映射到conv5区域最后pooling到固定大小的功能。

输入,b0 为卷积的feature map,b1 为rois。

LayerSetUp

将参数赋值。

Reshape

将top reshape成num_b1(num of rois) c_b0 pooled_height pooled_width,将max_idx_ reshape与top一样。

Forward

首先计算rois映射到feature map的坐标,即原始坐标*spacial_scale(大小为所有stride的乘积分之一),然后针对每个输出来进行计算,即每个输出点都代表原先的一块区域,这个区域大小为bin_h= roi_height / pooled_ height, bin_w=roi_width / pooled_width.遍历所有top的点所映射回feature map的区域,并找到最大值,记录最大值所在的位置。

backward

backward直接写成gpu的形式,不过开头可以看出是遍历feature map并记录n, c, h, w,为之后记录bottom_diff做准备,然后计算每个roi映射到feature map的坐标,接下来我就认为有个小问题了,作者的意思是表达如果h,w如果不在roi区域内的话,可以直接continue了,这点不难理解,某个点在roi中可能对这个roi所对应的top产生贡献(在某个bin中为最大),如果点不在那个区域中,一定不会对top产生贡献。而某一点可能对多个区域产生贡献,故loss返回来时,同一点的loss累加。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值