faster rcnn理解

  • AnchorTargetCreator : 负责在训练 RPN 的时候,从上万个 anchor 中选择一些 (比如 256) 进行训练,以使得正负样本比例大概是 1:1. 同时给出训练的位置参数目标。 即返回gt_rpn_locgt_rpn_label

  • ProposalTargetCreator: 负责在训练 RoIHead/Fast R-CNN 的时候,从 RoIs 选择一部分 (比如 128 个) 用以训练。同时给定训练目标, 返回(sample_RoIgt_RoI_locgt_RoI_label

  • ProposalCreator: 在 RPN 中,从上万个 anchor 中,选择一定数目(2000 或者 300),调整大小和位置,生成 RoIs,用以 Fast R-CNN 训练或者测试。

其中AnchorTargetCreator和是为了生成训练的目标,只在训练阶段用到,ProposalCreator是 RPN 为 Fast R-CNN 生成 RoIs,在训练和测试阶段都会用到。三个共同点在于他们都不需要考虑反向传播(因此不同框架间可以共享 numpy 实现)3.4 感受野与 scale从直观上讲,感受野(receptive field)就是视觉感受区域的大小。在卷积神经网络中,感受野的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。我的理解是,feature map 上的某一点f对应输入图片中的一个区域,这个区域中的点发生变化,f可能随之变化。而这个区域外的其它点不论如何改变,f的值都不会受之影响。VGG16 的 conv4_3 的感受野为 228,即 feature map 上每一个点,都包含了原图一个 228×228 区域的信息。Scale:输入图片的尺寸比上 feature map 的尺寸。比如输入图片是 3×224×224,feature map 是 512×14×14,那么 scale 就是 14/224=1/16。可以认为 feature map 中一个点对应输入图片的 16 个像素。由于相邻的同尺寸、同比例的 anchor 是在 feature map 上的距离是一个点,对应到输入图片中就是 16 个像素。在一定程度上可以认为anchor 的精度为 16 个像素。不过还需要考虑原图相比于输入图片又做过缩放(这也是 dataset 返回的scale参数的作用,这个的scale指的是原图和输入图片的缩放尺度,和上面的 scale 不一样)。 4 实现方案其实上半年好几次都要用到 Faster R-CNN,但是每回看到各种上万行,几万行代码,简直无从下手。而且直到 罗若天大神( )的 ruotianluo/pytorch-faster-rcnn( )之前,PyTorch 的 Faster R-CNN 并未有合格的实现(速度和精度)。最早 PyTorch 实现的 Faster R-CNN 有 longcw/faster_rcnn_pytorch( )和 fmassa/fast_rcn( ) 后者是当之无愧的最简实现(1,245 行代码,包括空行注释,纯 Python 实现),然而速度太慢,效果较差,fmassa 最后也放弃了这个项目。前者又太过复杂,mAP 也比论文中差一点(0.661VS 0.699)。当前 github 上的大多数实现都是基于py-faster-rcnn,RBG 大神的代码很健壮,考虑的很全面,支持很丰富,基本上 git clone 下来,准备一下数据模型就能直接跑起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值