Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型
来源:互联网 发布:天津日报大厦知乎 编辑:程序博客网 时间:2024/06/05 21:15
0 说明
系统环境为Ubuntu14.04, 已经安装好了CUDA和cuDNN以及Python等基础包。
1 设置和编译py-faster-rcnn
1.1 下载py-faster-rcnn
$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git$ git submodule update --init --recursive 或者下载github上最新版本的caffe-fast-rcnn:$ git clone https://github.com/rbgirshick/caffe-fast-rcnn.git 然后切换到对应的commit
- 1
- 2
- 3
- 1
- 2
- 3
1.2 编译Cython模块
$ cd py-faster-rcnn/lib$ make
- 1
- 2
- 1
- 2
1.3 编译caffe和pycaffe
$ cd py-faster-rcnn/caffe-fast-rcnn$ cp Makefile.config.example Makefile.config# 修改 Makefile.config, 去掉注释WITH_PYTHON_LAYER := 1USE_CUDNN := 1BLAS_INCLUDE := /usr/include/atlas# 根据你的需求修改Makefile.config , 比如设置GPU 支持, cuDNN, CUDA 版本, Anaconda, OpenCV, 等等。# 修改完Makefile.config后$ make all -j32 # -j32 编译加速. 32 CPU核数目,根据你的电脑的CP核数目来修改,或者直接make all -j也可以 # 假设你已经安装好了PyCaffe相关依赖, 否则请重新去参考Caffe安装教程$ make pycaffe -j32
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
1.4 py-faster-rcnn各文件夹说明
.├── caffe-fast-rcnn # caffe目录│ ├── build -> .build_release│ ├── caffe.cloc│ ├── cmake│ ├── CMakeLists.txt│ ├── CONTRIBUTING.md│ ├── CONTRIBUTORS.md│ ├── data│ ├── distribute│ ├── docs│ ├── examples│ ├── include│ ├── INSTALL.md│ ├── LICENSE│ ├── Makefile│ ├── Makefile.config # 编译caffe配置文件│ ├── Makefile.config.example│ ├── matlab│ ├── models│ ├── python│ ├── README.md│ ├── scripts│ ├── src│ └── tools├── data # 存放训练数据文件夹│ ├── cache│ ├── demo│ ├── faster_rcnn_models│ ├── imagenet_models│ ├── pylintrc│ ├── README.md│ ├── scripts│ ├── VOCdevkit # VOC2007数据集│ ├── VOCdevkit2007 -> VOCdevkit├── experiments│ ├── cfgs│ ├── logs│ ├── README.md│ └── scripts # 包含端对端训练脚本├── lib │ ├── datasets # 包含数据库读取工厂类│ ├── fast_rcnn # 包含config.py│ ├── Makefile│ ├── nms│ ├── pycocotools│ ├── roi_data_layer│ ├── rpn│ ├── setup.py│ ├── transform│ └── utils├── LICENSE├── models # 大中小[VGG16,VGGCNNM1024,ZF]模型文件│ ├── coco│ ├── pascal_voc│ └── README.md├── output # 训练输出模型 ├── README.md└── tools # 包含训练py脚本和运行demo脚本 ├── compress_net.py ├── demo.py ├── eval_recall.py ├── _init_paths.py ├── _init_paths.pyc ├── README.md ├── reval.py ├── rpn_generate.py ├── test_net.py ├── train_faster_rcnn_alt_opt.py ├── train_net.py └── train_svms.py
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
问题:
faster rcnn 代码默认是使用的cudnn v4, 但是为了体验最新的v5, 或者使用GTX1080 ,我们编译faster rcnn的时候就会报错In file included from ./include/caffe/util/cudnn.hpp:5:0,from ./include/caffe/util/device_alternate.hpp:40,from ./include/caffe/common.hpp:19,from src/caffe/data_reader.cpp:6:/usr/local/cuda/include/cudnn.h:799:27: note: declared herecudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
解决办法:
用最新caffe源码的以下文件替换掉faster rcnn 中caffe-fast-rcnn里面的对应文件include/caffe/layers/cudnn_relu_layer.hpp, src/caffe/layers/cudnn_relu_layer.cpp, src/caffe/layers/cudnn_relu_layer.cuinclude/caffe/layers/cudnn_sigmoid_layer.hpp, src/caffe/layers/cudnn_sigmoid_layer.cpp, src/caffe/layers/cudnn_sigmoid_layer.cuinclude/caffe/layers/cudnn_tanh_layer.hpp, src/caffe/layers/cudnn_tanh_layer.cpp, src/caffe/layers/cudnn_tanh_layer.cuinclude/caffe/util/cudnn.hpp将 faster rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu 文件中的所有cudnnConvolutionBackwardData_v3 函数名替换为 cudnnConvolutionBackwardDatacudnnConvolutionBackwardFilter_v3函数名替换为 cudnnConvolutionBackwardFilter修改完后,git status下,确保修改了指定的文件:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
然后重新编译:
$ make all -j$ make pycaffe -j
- 1
- 2
- 1
- 2
到此就可以使用py-faster-rcnn了。
2 测试py-faster-rcnn demo
2.1 下载预先训练好的Faster-rcnn模型
$ cd py-faster-rcnn$ ./data/scripts/fetch_faster_rcnn_models.sh# 如果下载失败,可以通过这个种子来下载:# http://academictorrents.com/download/cca56021739c8a75af3b58f536d4930266c25d5e.torrent# 然后将faster_rcnn_models.tgz解压到data目录下
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
2.2 运行demo
$ cd py-faster-rcnn$ ./tools/demo.py
- 1
- 2
- 1
- 2
3 基于PASCAL VOC数据集训练模型
3.1 准备数据集和预训练模型
$ cd py-faster-rcnn/data# 注意链接可能会失效,网上可以另找资源$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar$ tar xvf VOCdevkit_08-Jun-2007.tar $ tar xvf VOCtrainval_06-Nov-2007.tar$ tar xvf VOCtest_06-Nov-2007.tar$ ln -s VOCdevkit VOCdevkit2007 #create a softlink$ cd py-faster-rcnn$ ./data/scripts/fetch_imagenet_models.sh$ ./data/scripts/fetch_faster_rcnn_models.sh
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
3.2 训练
$ cd py-faster-rcnn# ./experiments/scripts/faster_rcnn_end2end.sh [GPU_ID] [NET] [DATASET]$# # Directly run this command might have an error "AssertionError: Selective search data not found at:". For the solution, please refer to Part 4.$ ./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascavcc
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
训练完成后,见py-faster-rcnn/output文件夹。
3.3 说明
faster_rcnn_end2end.sh
整个处理的最上层,包括对输入参数的处理,涉及到GPU id, 网络结构(ZF-net, VGG, 或者其他),数据集(PASCAL VOC, COCO或者其他数据集),和一些其他的配置输入参数。然后它会调用两个程序,一个是train_net.py,紧跟着的是test_net.py,train_net.py是用来训练模型的,而test_net.py是用来评估训练出来的模型的性能的。
- 1
- 2
- 1
- 2
faster_rcnn_end2end.yml
# 我们可以从faster_rcnn_end2end.sh看到,cfg来自faster_rcnn_end2end.yml,# 这意味着这个文件存储着很多重要的配置,下面显示了一些原始的配置:EXP_DIR: faster_rcnn_end2endTRAIN: HAS_RPN: True IMS_PER_BATCH: 1 BBOX_NORMALIZE_TARGETS_PRECOMPUTED: True RPN_POSITIVE_OVERLAP: 0.7 RPN_BATCHSIZE: 256 PROPOSAL_METHOD: gt BG_THRESH_LO: 0.0TEST: HAS_RPN: True
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
但是,如果要添加自己的配置,例如在训练时进行模型快照的迭代次数,可以参考py-faster-rcnn / lib / fast_rcnn / config.py。此文件包含所有配置参数。不需要在此config.py中设置配置,但只需在faster_rcnn_end2end.yml中添加语句。程序可以自动解析参数。当然,如果没有声明.yml文件中的项目,则会采用存在的默认值。
train_net.py
这个py文件主要是读取数据并训练数据,它连接着py-faster-rcnn/lib/database/
里面的内容。
阅读全文
0 0
- Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型
- Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型
- Faster-RCNN+VGG用自己的数据集训练模型
- Faster-RCNN+VGG用自己的数据集训练模型
- Faster RCNN实现所用PASCAL VOC数据集内容剖析
- 用py-faster-rcnn训练自己的VOC数据集
- Faster-RCNN+ZF用自己的数据集训练模型(Matlab版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- [置顶] Faster-RCNN+ZF用自己的数据集训练模型(Matlab版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Matlab版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本and MATLAB版本)
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- Faster-RCNN+ZF用自己的数据集训练模型 转
- Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
- 登录页面回车键的实现
- ui-grid 常用操作
- 在eclipse中启动tomcat报404错误
- 织梦内容管理系统模板标签代码参考
- Idea Debug 常用快捷键
- Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型
- HDU
- nginx 安装
- GuideView 引导库的使用
- echarts3 + 百度地图API展示自定义地图
- 食物链------种类并查集
- 你知道本地项目是如何上传到github的吗?一起来看看Git和github如何配合关联实现的吧!
- Strings Homomorphism
- 以一种访问权限不允许的方式做了一个访问套接字的尝试