一.主体框架
编辑
添加图片注释,不超过 140 字(可选)
1.Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。feature maps被共享用于后续RPN层和全连接层。
2.Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals。
3.Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
4.Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
1.先缩放至固定大小MxN,然后将MxN图像送入网络;
2.而Conv layers中包含了13个conv层+13个relu层+4个pooling层;
3.RPN网络首先经过3x3卷积,再分别生成positive anchors和对应bounding box regression偏移量,然后计算出proposals;
4.而Roi Pooling层则利用proposals从feature maps中提取proposal feature送入后续全连接和softmax网络作classification(即分类proposal到底是什么object)。
1.1Conv layers
编辑切换为居中
添加图片注释,不超过 140 字(可选)
在Conv layers中:
1.所有的conv层都是:kernel_size=3,pad=1,stride=1
2.所有的pooling层都是:kernel_size=2,pad=0,stride=2
在Faster RCNN Conv layers中对所有的卷积都做了扩边处理( pad=1,即填充一圈0),导致原图变为 (M+2)x(N+2)大小,再做3x3卷积后输出MxN 。正是这种设置,导致Conv layers中的conv层不改变输入和输出矩阵大小。
二.Region Proposal Networks(RPN)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
Faster R-CNN的巨大优势之一,能极大提升检测框的生成速度:
1.上面一条通过softmax分类anchors获得positive和negative分类
2.下面一条用于计算对于anchors的bounding box regression偏移量,以获得精确的proposal。
3.最后的Proposal层则负责综合positive anchors和对应bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。
2.1Anchor
编辑切换为居中
添加图片注释,不超过 140 字(可选)
Anchor的本质是在原图大小上的一系列的矩形框.这些区域的中心点都相同.
在作者的论文中,默认在每一个点上抽取了9种Anchors,具体Scale为{8, 16, 32}, Ratio为{0.5, 1, 2},将这9种Anchors的大小反算到原图上,即得到不同的原始Proposal,实际上通过anchors就引入了检测中常用到的多尺度方法。
2.2RPN
编辑
添加图片注释,不超过 140 字(可选)
1.Conv Layers中最后的conv5层num_output=256,对应生成256张特征图,所以相当于feature map每个点都是256-dimensions.
2.做了rpn_conv/3x3卷积且num_output=256,相当于每个点又融合了周围3x3的空间信息,同时256-d不变
3.conv5 feature map中每个点上有k个anchor(默认k=9),而每个anhcor要分positive和negative,所以每个点由256d feature转化为cls=2•k scores;而每个anchor都有(x, y, w, h)对应4个偏移量,所以reg=4•k coordinates.
4.全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练
2.3softmax判定positive与negative
编辑切换为居中
添加图片注释,不超过 140 字(可选)
2.4对proposals进行bounding box regression
编辑切换为居中
添加图片注释,不超过 140 字(可选)
编辑切换为居中
添加图片注释,不超过 140 字(可选)
1.num_output=36,即经过该卷积输出图像为WxHx36.
2.相当于feature maps每个点都有9个anchors,每个anchors又都有4个用于回归的变换量。
VGG输出 50x38x512 的特征,对应设置 50x38xk anchors,而RPN输出:
大小为 50x38x2k 的positive/negative softmax分类特征矩阵
大小为 50x38x4k 的regression坐标回归特征矩阵
恰好满足RPN完成positive/negative分类+bounding box regression坐标回归.
2.5Proposal Layer
编辑
添加图片注释,不超过 140 字(可选)
1.Proposal Layer有3个输入:positive vs negative anchors分类器结果rpn_cls_prob_reshape,对应的bbox reg的 变换量rpn_bbox_pred,以及im_info;另外还有参数feat_stride=16.
2.im_info。对于一副任意大小PxQ图像,传入Faster RCNN前首先reshape到固定MxN,im_info=[M, N, scale_factor]则保存了此次缩放的所有信息。然后经过Conv Layers,经过4次pooling变为WxH=(M/16)x(N/16)大小,其中feature_stride=16则保存了该信息
RPN网络结构总结起来就是:
生成anchors -> softmax分类器提取positvie anchors -> bbox reg回归positive anchors -> Proposal Layer生成proposals
3.RoI pooling
编辑切换为居中
添加图片注释,不超过 140 字(可选)
对于传统的CNN(如AlexNet和VGG),当网络训练好后输入的图像尺寸必须是固定值,同时网络输出也是固定大小的vector or matrix。如果输入图像大小不定,这个问题就变得比较麻烦。有2种解决办法:
1.从图像中crop一部分传入网络.
2.将图像warp成需要的大小后传入网络
3.Faster R-CNN中提出了RoI Pooling解决这个问题.
3.RoI pooling
编辑
添加图片注释,不超过 140 字(可选)
编辑
添加图片注释,不超过 140 字(可选)
1.由于proposal是对应MxN尺度的,所以首先使用spatial_scale参数将其映射回(M/16)x(N/16)大小的feature map尺度;
2.再将每个proposal对应的feature map区域水平分为 pool_w*pool_h 的网格;
3.对网格的每一份都进行max pooling处理。
4.这样处理后,即使大小不同的proposal输出结果都是 pool_w*pool_h 固定大小,实现了固定长度输出。