Tensorflow版Faster RCNN源码解析(TFFRCNN) (1) VGGnet_test.py
本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第1篇 VGGnet_test.py
----作者:Jiang Wu(吴疆),未经允许,禁止转载---
---为便于交流学习,本人深入理解代码的同时定期更新自己的理解,如有错误敬请指正---
(1)VGGnet_test.py
阅读时间: 2019/1/7
代码位置:E:\TFFRCNN\lib\networks
调用关系:
from .network import Network
代码作用:定义了测试(推断)网络和几个变量的占位符,测试阶段test.py中im_detect函数以feed_dict馈入data等图像信息,依此层层计算。(从network.py中根据内部代码看)各层计算时首先置空self.inputs输入列表,然后将本层的输入feed进来,将本层的输出保存在self.layers字典中供下一层取输入数据时使用。
主要函数及作用:
- (1)定义了VGGnet_test子类,继承自Network父类(network.py)
- 需要注意上述几个变量占位符预先定义的维度和变量各自代表什么(self.data等变量维度见下一篇分析)
- Self.layers字典和self.keep_prob与(test.py中)im_detect函数中sess.run()函数中馈入的feed_dict数据照应。
- 其中self.inputs[]为各层输入列表,在network.py中装饰器部分有对如何获取各层输入的代码。Self.layers存放各层输出字典,字典中键为层名,如‘conv1_1’,值为各层输出。
- (2)以第一层conv1_1为例,描述计算过程
feed方法继承自Network类,最开始 self.layers = dict({'data': self.data, 'im_info': self.im_info})包含data数据。首先置空self.inputs列表,以本层输入data为例,从self.layers字典中取出data数据添加到self.inputs列表中构成本层输入。返回self,链接上代码下一行.conv(xxx),在network.py中找到conv()的定义,发现@layer装饰器,用于扩展conv的功能,因此卷积运算不在conv中进行,而是在装饰器(内嵌了conv()函数)中进行。
op即为传入各种操作名,比如conv、max_pool;发现这个装饰器上还有一个装饰器,具体作用不太清楚,没去细究(如有了解的读者可以教教我)这里我们主要关注@layer这个装饰器的内部函数执行过程,首先取得name,形如conv1_1、conv1_2,本层输入长度为1,layer_input取得上述输入列表中的值,进行本层的运算,layer_output为本层返回值,将其存入self.layers字典,调用feed方法,置空输入列表,从self.layers中获取下一层输入列表 ,照此循环下去。
(3)测试(推断)网络结构
特征提取部分:13个conv,5个max pooling
RPN网络部分
其余网络处理部分,主要涉及维度转换和获取rois操作,关键是proposal_layer()层
第二阶段:类别判别+位置精修部分,输入为conv5_3和rois
注意: 需要预先了解python 装饰器(即定义各层运算时出现的@layer,为了扩充函数功能)、类的继承、类方法、链接调用(各层返回self,下一行直接.xx)、*args形参数量不固定的函数定义方式等python编程知识。
Tensorflow版Faster RCNN源码解析(TFFRCNN) (1) VGGnet_test.py的更多相关文章
- Tensorflow版Faster RCNN源码解析(TFFRCNN) (2)推断(测试)过程不使用RPN时代码运行流程
本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第二篇 推断(测试)过程不使用RPN时代码运行流程 作者:Jiang Wu 原文见:https://hom ...
- Tensorflow版Faster RCNN源码解析(TFFRCNN) (3)推断(测试)过程使用RPN时代码运行流程
本blog为github上CharlesShang/TFFRCNN版源码解析系列代码笔记第三篇 推断(测试)过程不使用RPN时代码运行流程 作者:Jiang Wu 原文见:https://hom ...
- faster rcnn 源码学习-------数据读入及RoIDataLayer相关模块解读
参考博客:::https://www.cnblogs.com/Dzhen/p/6845852.html 非常全面的解读参考:::https://blog.csdn.net/DaVinciL/artic ...
- faster rcnn源码阅读笔记1
自己保存的源码阅读笔记哈 faster rcnn 的主要识别过程(粗略) (开始填坑了): 一张3通道,1600*1600图像输入中,经过特征提取网络,得到100*100*512的feature ma ...
- faster rcnn源码阅读笔记3
- faster rcnn源码阅读笔记2
- [源码解析] TensorFlow 之 分布式变量
[源码解析] TensorFlow 之 分布式变量 目录 [源码解析] TensorFlow 之 分布式变量 1. MirroredVariable 1.1 定义 1.2 相关类 1.2.1 类体系 ...
- [源码解析] TensorFlow 分布式之 MirroredStrategy
[源码解析] TensorFlow 分布式之 MirroredStrategy 目录 [源码解析] TensorFlow 分布式之 MirroredStrategy 1. 设计&思路 1.1 ...
- [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算
[源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 目录 [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 0x1. 运行 ...
随机推荐
- Map功能简化Python并发代码
<转摘>Python 并行任务技巧 支持Map并发的包文件有两个: Multiprocessing,还有少为人知的但却功能强大的子文件 multiprocessing.dummy. Dum ...
- Qt容器组件(一)之QGroupBox、QScrollArea、QToolBox、QTabWidget
QT中有九种容器组件,分别是组合框QGroupBox.滚动区QScrollArea.工具箱QToolBox.选项卡QTabWidget.控件栈QWidgetStack.框架QFrame.组件QWidg ...
- p1020导弹拦截
传送门 P1020导弹拦截 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度 ...
- 媒体格式分析之flv -- 基于FFMPEG
本来是应该先写一个媒体文件格式的简单讲解的,还没来得及写,以后再写.今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv. FLV 是FLASH V ...
- DB2 Error Messages (Sorted by SQLCODE)
DB2 Error Messages (Sorted by SQLCODE) DB2 Error Messages (Sorted by SQLCODE) SQLCODE SQLSTATE Descr ...
- Java多线程加强
一.传统多线程 public void start() Causes this thread to begin execution; the Java Virtual Machine calls th ...
- WPF Background的设置有坑
今天帮忙同事解决在后台绑定时,动态更改控件(Grid)的Background. 有个陷阱,C#有2个命名空间有Brush和Color, 分别为System.Drawing和System.Window. ...
- 数据字典生成工具(生成Excel, Word,PDF,html)
转自:http://www.cnblogs.com/yanweidie/p/3838765.html 数据字典生成工具之旅系列文章导航 数据字典生成工具之旅系列文章导航 宣传语 数据字典生成工具.数据 ...
- thinkpad取消fn键功能
转自:https://bbs.thinkpad.com/thread-1834235-1-1.html 1就是一直觉得fn建自动开启很烦人,于是百度后得到 我们可以 控制面板 -- 键盘--think ...
- VMware10中安装centos7没有可用的网络设备
1.问题描述 centos7安装到虚拟机无法上网 2.安装环境 win7 x64 WM 10.01 iso CentOS-7-x86_64-DVD-1503-01.iso {4.01G} ...