py-faster-rcnn之从solver文件创建solver对象,建立pythonlayer
2016-12-12 17:36
435 查看
faster-rcnn在训练阶段,根据一个solver的prototxt文件创建相应的网络。仅凭一个prototxt就创建网络?其实还涉及到自定义的PythonLayer. 比如lib/rpn/anchor_target_layer.py,一开始感觉它只定义了一个AnchorTargetLayer类但是没有使用过(grep查找找不到),仔细分析源码执行过程才发现,是因为使用了Boost.Python混编相关的技术,是在trainval.prototxt中有定义'python'类的层,并且指定到AnchorTargetLayer,而通过caffe的python接口,实例化solver成员的时候通过solver的prototxt引入trainval.prototxt,随后逐层初始化,涉及到PythonLayer的时候则调用Boost.Python代码来实例化它。
以end2end方式的代码分析,自顶向下逐步解析。假定处于py-faster-rcnn目录。
以end2end方式的代码分析,自顶向下逐步解析。假定处于py-faster-rcnn目录。
experiments/scripts/faster_rcnn_end2end.sh 指定了solver_prototxt tools/train_net.py 根据solver_prototxt执行训练任务 lib/fast_rcnn/train.py -> train_net()函数 -> SolverWrapper类实例 -> SolverWrapper构造函数,以solver_prototxt作为参数 caffe-fast-rcnn/python/caffe/_caffe.cpp -> #include的sgd_solvers.hpp 引入了SGDSolver caffe-fast-rcnn/src/caffe/solver.cpp 构造函数 -> InitTrainNet() -> 调用Net()的构造函数 -> Net()的Init()函数 caffe-fast-rcnn/src/caffe/lyaer_factory.cpp及对应的hpp文件 -> layer的实例化 -> 对于自定义的PythonLayer类,实例化它
相关文章推荐
- 用flask开发个人博客(26)—— 利用config.py配置文件动态的创建不同的Flask对象
- python里面建立类创建对象继承类
- cs231n:assignment2——python文件:layer_utils.py
- Python中创建了与已有模块同名的.py文件
- Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用
- Faster RCNN proposal_layer.py
- faster rcnn 中anchor_target_layer.py
- 关于python-flask中规范创建项目的几个关键py项目文件
- Faster RCNN 源码解析(3.3) -- proposal_layer.py
- cs231n:assignment2——python文件:cnn.py
- faster rcnn python layer学习
- Faster RCNN anchor_target_layer.py
- py-faster-rcnn中的solver文件
- 如何只在heap上创建对象,如何只在stack上建立对象?
- IO 创建文件夹 及文本的文件的建立
- QuickCSharp框架开发(11)------建立Configuration项目(ClassLibrary)、建立ProviderFactory(提供者工厂创建任何对象的实例)抽象对象
- 读取配置文件动态创建对象[C++]
- Python建立Web文件服务
- Python模块包中__init__.py文件的作用
- python基础6--文件操作--对象的读写