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 := 1
USE_CUDNN := 1
BLAS_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 here
cudnnStatus_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 函数名替换为 cudnnConvolutionBackwardData
cudnnConvolutionBackwardFilter_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_end2end
TRAIN:HAS_RPN: TrueIMS_PER_BATCH: 1BBOX_NORMALIZE_TARGETS_PRECOMPUTED: TrueRPN_POSITIVE_OVERLAP: 0.7RPN_BATCHSIZE: 256PROPOSAL_METHOD: gtBG_THRESH_LO: 0.0
TEST: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/里面的内容。

Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型相关推荐

  1. MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《9》

    MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)<1>:论文源地址,克隆MXNet版本的源码,安装环境与测试,以及对下载的源码的每个目录做什么用的,做个解释. MXN ...

  2. RCNN系列实验的PASCAL VOC数据集格式设置

    我们在做RCNN系列的实验时,往往需要把数据集的格式设置为和PASCAL VOC数据集一样的格式,其实当然也可以修改读取数据的代码,只是这样更为麻烦,自己的数据格式变了又得修改.  首先以VOC200 ...

  3. python数据库开发 dga_DGA detection based on Deep Learning (CNN and GRU) (基于深度学习的DGA检测)...

    DGA-detection DGA detection based on Deep Learning (CNN and GRU) (基于深度学习的DGA检测) This project impleme ...

  4. Ubuntu上用caffe的SSD方法训练Pascal VOC数据集

    实验目的 继caffe和ssd搭建完成,demo也演示完毕,了解一些基本知识后,现在开始训练自己的数据集,在给自己的训练集处理之前,先跟着官方的示例将Pascal VOC数据集训练走一遍,把可能会踩坑 ...

  5. 图像处理基本库的学习笔记5--公共数据集,PASCAL VOC数据集,NYUD V2数据集的简介与提取,COCO2017,医学影像数据集汇总

    目录 公共数据集 计算机视觉标准数据集整理-PASCAL VOC数据集 数据集文件结构 Annotation JPEGImages SegmentationClass SegmentationObje ...

  6. PASCAL VOC 数据集的标注格式

    PASCAL VOC 数据集的标注格式 PASCAL VOC 挑战赛 ( **The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛. PASCAL的全称是 ...

  7. 对PASCAL VOC 数据集进行数据增强

    对PASCAL VOC 数据集进行数据增强 1.GitHub仓库位置 目的:对VOC数据集的对象检测的数据进行数据增强.如果能帮到您请给本人一颗⭐,拜托了!!!!! https://github.co ...

  8. pascal行人voc_在Pascal VOC 数据集上训练YOLOv3模型

    上节介绍了<从零开始在Windows10中编译安装YOLOv3>,本节介绍在Pascal VOC 数据集上训练YOLOv3. 第一步,下载并安装YOLOv3训练依赖项. a.下载Pasca ...

  9. 人工智能学习:PASCAL VOC数据集读取(6)

    PASCAL VOC是一个国际的计算机视觉挑战赛,数据集包含了20个分类的3万多张图片.挑战赛及其数据集基础上涌现不少知名的目标检测模型如R-CNN,YOLO,SSD等.可以通过下载和读取的方法载入P ...

最新文章

  1. Spring-Spring4.X 概述
  2. 利用 Chef 在 Red Hat Enterprise Linux 上自动化部署 Mariadb Galera Cluster
  3. boost::put_get_helper用法的测试程序
  4. docker pull 国内镜像_MAC版 的最新Docker 2.2版本配置国内代理的解决办法
  5. jquery 插件 thickbox窗口 第一个控件获得焦点(解决第二次弹出窗口,文本不能输入数据)...
  6. eclipse、MyEclipse实现批量改动文件编码
  7. 脱单盲盒小程序源码_微信脱单盲盒源码_交友盲盒系统源码
  8. 中柏平板电脑刷linux,中柏平板电脑系统下载与安装教程
  9. 利用偏最小二乘法选出最重要的特征波段Matlab
  10. iOS友盟社会化分享完全攻略
  11. 海思vo 分屏显示总结
  12. java支付宝第三方支付前置流程
  13. linux下mkdir出现mkdir(): File exists错误
  14. 资产管理运维一体化 接入IOT、BIM的设备数字智慧化管理
  15. 面试必看的注意事项在这里!
  16. amd linux raid,RAID的详解
  17. 放弃数学专业跳槽高薪行业,如今他却后悔了
  18. RHEL5/6 加载 DVD yum源
  19. Graphx社区发现算法学习
  20. 支持多商家在线客服系统源码

热门文章

  1. boost::range_const_iterato相关的测试程序
  2. boost::remove_if相关的测试程序
  3. boost::random::const_mod相关的测试程序
  4. boost::mp11::mp_eval_or相关用法的测试程序
  5. boost::mp11::mp_at相关用法的测试程序
  6. boost::lockfree::spsc_queue用法的测试程序
  7. GDCM:gdcm::StrictScanner的测试程序
  8. VTK:InfoVis之ArrayToTable
  9. OpenCV支持向量机SVM用于非线性可分离数据
  10. Qt Creator部署到设备