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.py、test.py、VGGnet_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) 当不使用RPN时bbox=None中none应去掉
首先调用本代码段中_get_blobs(im,boxes)
当不使用RPN时,应将cfg.TEST.HAS_RPN设为false
首先构造blobs字典,内含data字段、rois字段
data字段维度应为[none,none,none,3],分别代表当前图像经过图像金字塔后共有多上张(默认为1),图像宽、高、通道数
与VGGnet_test.py中占位符定义的data维度照应
调用_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应改为[None,5],将self.layers字典中’im_info’改为’rois’,并将网络中涉及RPN的网络部分统统删去。
注意:调用关系复杂,需要静心阅读
Tensorflow版Faster RCNN源码解析(TFFRCNN) (2)推断(测试)过程不使用RPN时代码运行流程的更多相关文章
- Tensorflow版Faster RCNN源码解析(TFFRCNN) (3)推断(测试)过程使用RPN时代码运行流程
本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第三篇 推断(测试)过程不使用RPN时代码运行流程 作者:Jiang Wu 原文见:https://hom ...
- Tensorflow版Faster RCNN源码解析(TFFRCNN) (1) VGGnet_test.py
本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第1篇 VGGnet_test.py ----作者:Jiang Wu(吴疆),未经允许,禁止转载--- -- ...
- faster rcnn 源码学习-------数据读入及RoIDataLayer相关模块解读
参考博客:::https://www.cnblogs.com/Dzhen/p/6845852.html 非常全面的解读参考:::https://blog.csdn.net/DaVinciL/artic ...
- Flink 源码解析 —— JobManager 处理 SubmitJob 的过程
JobManager 处理 SubmitJob https://t.zsxq.com/3JQJMzZ 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1 ...
- Flink 源码解析 —— TaskManager 处理 SubmitJob 的过程
TaskManager 处理 SubmitJob 的过程 https://t.zsxq.com/eu7mQZj 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink ...
- Netty 源码解析(九): connect 过程和 bind 过程分析
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第九篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一): 开始 Netty 源 ...
- faster rcnn源码阅读笔记1
自己保存的源码阅读笔记哈 faster rcnn 的主要识别过程(粗略) (开始填坑了): 一张3通道,1600*1600图像输入中,经过特征提取网络,得到100*100*512的feature ma ...
- 【转】aiohttp 源码解析之 request 的处理过程
[转自 太阳尚远的博客:http://blog.yeqianfeng.me/2016/04/01/python-yield-expression/] 使用过 python 的 aiohttp 第三方库 ...
- Fabric1.4源码解析:客户端创建通道过程
在使用Fabric创建通道的时候,通常我们执行一条命令完成,这篇文章就解析一下执行这条命令后Fabric源码中执行的流程. peer channel create -o orderer.example ...
随机推荐
- appium 特殊操作
一.触摸操作 1.driver.tap([坐标],持续点击时间) 除了定位到元素的点击外,也可以通过tab实现坐标的点击 driver.tap(driver.tap([(216,1776)], ...
- 每天一个linux命令(1):man命令
版权声明 更新:2017-04-19博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下命令man. 2 ...
- Eclipse设置:背景与字体大小、xml文件中字体大小调整和自动提示 SVN插件安装
Eclipse中代码编辑背景颜色修改: 代码编辑界面默认颜色为白色.对于长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以改变workspace的背景色,可以使眼睛舒服一些.设置方法如下: 1.打开 ...
- fabric添加多主机ssh互信
最近折腾fabric,把服务器ssh互信用fabric写了一遍,单向互信,master可以无密码访问client,具体如下: 执行:fab -f ./copyrsa.py allsshkey 即可, ...
- maven学习九 关于maven一些參數
一 maven profile: 不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基 ...
- Programming With Objective-C---- Introduction ---- Objective-C 学习(一)
About Objective-C Objective-C is the primary programming language you use when writing software for ...
- Cinder服务使用
Cinder环境 Cinder配置 重新创建卷组cinder-volumes [root@openstack centos]# vgremove cinder-volumes Configuratio ...
- cf777D(贪心&&c_str()函数)
题目链接:http://codeforces.com/contest/777/problem/D 题意:给出n行以#开头的字符串,从原字符串尾部删除尽量少的字符串,使其为非降序排列. 思路:我们可以从 ...
- poj 2407 欧拉函数裸题
http://poj.org/problem?id=2407 题意:多组数据,每次输入一个数 ,求这个数的欧拉函数 int euler_phi(int n){//单个欧拉函数 int m=(int)s ...
- uoj#335. 【清华集训2017】生成树计数(prufer序列+生成函数+多项式)
传送门 好神仙的题目--又一次有了做一题学一堆的美好体验 据说本题有第二类斯特林数+分治\(FFT\)的做法,然而咱实在看不懂写的是啥,题解贴这里,有兴趣的可以自己去瞅瞅,看懂了记得回来跟咱讲讲 前置 ...