FasterRcnn 原理解析

FasterRcnn

 

FasterRCNN主体步骤

1:首先对图像缩放至固定的大小M*N,然后将图像送入到网络中。

2:通过VGG或者Resnet等其他网络提取特征图(Feature Map)。另外进行初始化anchors并找出有效的anchors(Step1)。

3: 特征图(Feature Map)通过RPN网络(Region Proposal Networks)获得有效的Anchor 置信度和与预测框的坐标系数。2K(正样本和负样本x K个anchor系数)个scores和4K(anchor的坐标偏移系数x K个anchor系数 )个coordinates。

 4:将特征图以及预测框计算出的Proposal通过ROI Pooling获取固定尺寸的预测目标特征图,即利用预测框,从特征图中将目标扣取出。

 

 参考上面参数

  •  proposal是对应这M*N尺度的,所以首先使用Spatial_Scale将其映射回(M/16)*(N/16)大小的Feature Map。
  • 再将其特征图Feature Map 均分为Pooled_w*Pooled_H尺寸的的网格大小
  • 再对每一个网络进行max pooling的操作进行输出。
  • 这样就可以保证输出的尺寸大小是统一的。

5:固定尺寸的Feature Map送入到全连接层和softmax中进行分别预测BOX_Pred以及Cls_Prob

详细推导举例

Step1:输入图片Reshape为800*800尺寸大小。

现将图片划分为网格。设每个网格像素面积为16*16  那么网格划分为800/16=50,那么网格大小为50*50。同时每一个网格生成K=9的anchros 。那么一张图片同时生成22500个anchors。

同时因为anchors因为具有不同的尺寸大小,必定会有部分anchors 超过边界框或者为负值。那么需要将此部分的边界框进行剔除。

经过剔除后还剩8940个anchors。获取边界框的坐标值,完成初始化

 再将所有的anchors与真实的GT进行IOU的计算。并筛选一定比例的正样本与负样本。

Step2: 进行VGG得到特征图,再将特征图送入到RPN网络中。重复step1中的一步

现将图片划分为网格。设每个网格像素面积为16*16  那么网格划分为800/16=50,那么网格大小为50*50。同时每一个网格生成K=9的anchros 。那么一张图片同时生成22500个anchors。

对于这22500个anchors 分别得到每个anchors的2个(正样本1负样本0)置信度以及每个anchors相对于原始图片的四个坐标偏移值。

Step3:计算RPN损失(有效的anchors和预测anchors之间的损失-坐标&置信度)

通过Step1中的目标anchors信息和Step2中的pred_anchors信息。主要计算step1中正样本的anchors和step2中对应的anchors 的损失值。

Step4: IOUNMS

根据anchors和预测的anchors系数,计算预测框ROI以及坐标系数和所属类别。得到的ROI预测框再经过NMS(非极大值抑制)做进一步的过滤精简。

Step5:ROI Pooling

一:从特征图中根据ROI把相应的预测目标扣取处理

二:将扣取处理的预测目标通过adaptive_max_pool方法,输出为固定尺寸,方便后续批处理。

STep6&Step7:计算损失

分别计算预测框的类别置信度和转换为目标框的平移缩放系数以及分类损失

猜你喜欢

转载自blog.csdn.net/weixin_43852823/article/details/127629059