Tensorflow版Faster RCNN源码解析(TFFRCNN) (2)推断(测试)过程不使用RPN时代码运行流程

本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第二篇   推断(测试)过程不使用RPN时代码运行流程

作者:Jiang Wu  原文见:https://home.cnblogs.com/u/deeplearning1314/

原因:网上tensorflow版Faster RCNN代码解析较少(猜测是代码调用关系太复杂,没人愿意写),为便于交流学习,本人深入理解代码同时定期更新自己的理解,如有错误敬请指正。(吴疆   2018.7.4)

感谢:网上大神---龙哥为我释疑解惑!

(2)推断(测试)过程不使用RPN时代码运行流程

阅读时间: 2018/7/5

代码位置:E:\TFFRCNN\

调用关系:略

代码作用:梳理在不使用RPN时代码运行流程(如使用SS等外部算法获取推荐区域bbox),运行流程主要涉及的py文件有demo.pytest.pyVGGnet_test.py

主要函数及作用

(1) demo.py函数为实例程序,主函数中首先get_network()获取推断过程要用的网络结果函数(如VGGnet_test()),调用本py文件中定义的demo()函数,

 

当不使用RPN时bbox靠其他方法获取时,应对demo函数增加一个形参bbox,为demo(sess,net,im_name,bbox

bbox的shape为[none,4]、demo()中主要关注test.py中的im_detect()函数

 

此时也应增加一个bbox作为im_detect()函数的形参,即为im_detect(sess,net,im,bbox)

(2) 当使用RPNbbox=None

      

 首先调用本代码段中_get_blobsimboxes

      

当不使用RPN时,应将cfg.TEST.HAS_RPN设为false

首先构造blobs字典,内含data字段、rois字段

调用_get_image_blob()函数,确定当前im是以长边还是短边缩放,计算当前im的缩放比,默认情况下未使用图像金字塔,返回当前im缩放后的图像组成的blob(构成blobs中的data字段)以及im对应的缩放因子列表(不使用图像金字塔时列表长度为1

调用_get_rois_blob()函数,此处cfg.TEST.SCALES_BASE应为上述im_scale_factors

      

 _project_im_rois()函数产生按当前im缩放因子缩放后的rois和缩放因子列表索引,当不使用图像金字塔时,levels为全0数组,并将两者水平拼接,形成R*5的数组,最终构成blobs中的rois字段。

     

构造feed_dict馈入VGGnet_test.py中,应与VGGnet_test.py中预先定义的占位符一一照应,包含blobs[‘data’]blobs[‘rois’]keep_prob,因此需对VGGnet_test.py做部分改造

(3) VGGnet_test.py的改造

 

self.im_info改为self.rois,并占位符中shape应改为[None5],将self.layers字典中’im_info’改为’rois’,并将网络中涉及RPN的网络部分统统删去。

注意:调用关系复杂,需要静心阅读

猜你喜欢

转载自www.cnblogs.com/deeplearning1314/p/9267881.html
今日推荐