Faster RCNN流程图

最近在看Faster RCNN的源码,按照数据的计算过程,绘制了数据的流程图
根据一下内容:

  • CSDN讲解文章:睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台
    *视频讲解: 手把手带你实战操作,Faster-RCNN(代码解析+理论集合+多年累积的经验)先到先得噢!人工智能/计算机视觉/深度学习/机器学习

  • github源码: faster-rcnn-pytorch

下面是根据源码绘制的Faster RCNN的数据流程图

训练过程

  1. 输入图像img首先被resize为 ( 3 , 600 , 600 ) (3,600,600) (3,600,600)
  2. ResNet50网络如下图所示,在Faster-RCNN中被分成两块 e x t r a c t o r ( 3 , 4 , 5 ) extractor(3,4,5) extractor(3,4,5) c l a s s i f i e r ( 3 ) classifier(3) classifier(3).
    Faster RCNN流程图_第1张图片
  3. img经过 e x t r a c t o r extractor extractor特征提取后,得到基础特征 b a s e _ f e a t u r e base\_feature base_feature,接着进行处理,得到 r p n _ l o c s rpn\_locs rpn_locs r p n _ s c o r e s rpn\_scores rpn_scores r p n _ l o c s rpn\_locs rpn_locs与anchors进行函数名为 l o c 2 b b o x loc2bbox loc2bbox计算,就可以得到Faster RCNN的ROI区域,即建议框proposal。在这一步可以有两种方法,单独训练这部分,然后在Faster RCNN训练的时候固定这一部分,另一种方法是先单独训练这一部分,然后在Faster RCNN训练的时候同时训练这一部分,Faster RCNN数据流程图中的loss1和loss2就是为了训练这部分的损失函数。
    这一步中需要注意, r p n _ l o c s rpn\_locs rpn_locs与anchors进行函数名为 l o c 2 b b o x loc2bbox loc2bbox计算,就可以得到Faster RCNN的ROI区域,那反过来说,anchors和ROI区域进行反向 b b o x 2 l o c bbox2loc bbox2loc计算,就可以得到 r p n _ l o c s rpn\_locs rpn_locs,而我们希望的是ROI区域和真实的预测框相同,所以在计算损失函数时,ROI区域用真实的bbox来代替。
  4. 得到ROI之后,就是进行一堆计算,包括NMS、剔除掉超过图像大小的预测框等步骤,选出前600或者前300的proposal框(训练时选择前600个,预测时选择前300个),然后按照数据流程图中的顺序,进行一系列的处理,得到了roi_loc。roi_loc和proposal进行 l o c 2 b b o x loc2bbox loc2bbox计算,就可以得到最终的bbox了。
    在这一步中,我们将proposal当做了anchor,而最终的输出roi_loc对anchor进行偏移、放缩等一系列的处理(loc2bbox)处理,就可以得到最终的bbox了。

预测过程

1.首先得到图像的ROI区域,接着对ROI区域进行处理,得到roi_loc。roi_loc和ROI区域进行loc2bbox处理,就得到了bbox。
整个过程中的输出rpn_loc和roi_loc都是输出,但是这些输出是作用在anchor和roi区域框上,才可以得到bbox

需要注意的一点是,训练过程的图像被resize为(600,600),但是预测过程中的图像尺寸是多种多用的。例如输入图像的尺寸为(1024,2048),Faster RCNN的策略是选择短边,将其变为600,然后维持原图的长宽比,将长边也进行变换,在这个例子中,原图的长宽比ratio = 1024/2048=1/2,短边变成600,那么长边就需要变成1200。因此原图被resize为(600,1200)进行处理,得到的bbox是相对于(600,1200)的图像的,因此需要将其按比例变成(1024,2048)下的bbox。

你可能感兴趣的:(目标检测论文,FasterRCNN,目标检测,人工智能)