py-R-FCN-multiGPU, 在caffe中,用于在多个gpu上训练rcnn和 py R FCN的代码

分享于 

12分钟阅读

GitHub

  繁體 雙語
Code for training py-faster-rcnn and py-R-FCN on multiple GPUs in caffe
  • 源代码名称:py-R-FCN-multiGPU
  • 源代码网址:http://www.github.com/bharatsingh430/py-R-FCN-multiGPU
  • py-R-FCN-multiGPU源代码文档
  • py-R-FCN-multiGPU源代码下载
  • Git URL:
    git://www.github.com/bharatsingh430/py-R-FCN-multiGPU.git
    Git Clone代码到本地:
    git clone http://www.github.com/bharatsingh430/py-R-FCN-multiGPU
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/bharatsingh430/py-R-FCN-multiGPU
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    py-R-FCN-multiGPU

    r fcn: 完全卷积网络的区域对象检测

    py-R-FCN现在支持联合培训和备选优化。

    py-R-FCN-multiGPU支持对检测器进行multiGPU训练,如快速rcnn和 py-R-FCN

    在COCO中,软网管系统获得更好的结果,所以请参考。

    Soft-NMS+D-RFCN 存储库获取COCO的40.9 % 映射。

    免责声明

    官方的r fcn代码( 用MATLAB编写) 在这里提供了

    通过使用py-faster-rcnn代码和代码修改了 py-R-FCN,使用与 py-faster-rcnn非常相似。

    py-R-FCN-multiGPU是 py-R-FCN的修改版本。 因为它包含了运行这个分支所必需的大部分信息,所以我重用了它的README文件。

    在py-R-FCN和官方的fcn实现之间存在细微的差异。

    • 由于在py-R-FCN中执行某些操作( 比如,90 ms/映像 vs 99 ms/映像),所以在测试时较慢
    • py-R-FCN支持连接训练和r fcn的备选优化。

    多gpu培训r fcn

    
    python./tools/train_net_multi_gpu.py --gpu 0,1 --solver models/pascal_voc/ResNet-101/rfcn_end2end/solver_ohem.prototxt --weights data/imagenet_models/ResNet-101-model.caffemodel --imdb voc_2007_trainval+voc_2012_trainval --iters 110000 --cfg experiments/cfgs/rfcn_end2end_ohem.yml
    
    
    
    

    或者

    
    ./experiments/scripts/rfcn_end2end_ohem_multi_gpu.sh 0 pascal_voc
    
    
    
    

    多gpu培训更快的rcnn

    
    ./experiments/scripts/faster_rcnn_end2end_multi_gpu.sh 0 VGG16 pascal_voc
    
    
    
    

    这将使用 2个gpu进行训练。 我将iter_size设置为 1,因这里在本例中,使用 2个 gpu,结果应该相似。 注意,随着更多的gpu被添加,批处理大小将会增加,因为在Caffe的默认multiGPU培训中。 shell script 中的GPU_ID标志只用于测试,如果你想使用更多的gpu,请在脚本中编辑它。

    一些修改

    原始py-faster-rcnn使用类感知边界框回归。 然而,fcn使用类无关的边界框回归来降低模型复杂性。 所以我在 fast_rcnn/config。py中添加了一个配置不可知,缺省值是 false。 如果你想使用class培训和测试,你应该将它设置为 true 和测试阶段的。

    为了选择硬示例,OHEM需要所有 roi,所以我更改了示例策略,为OHEM设置 BATCH_SIZE: -1,否则OHEM不会生效。

    总之:

    类不可知边界框回归需要 AGNOSTIC: True

    OHEM需要 BATCH_SIZE: -1

    我已经为你提供了两个( w/OHEM和w/o OHEM ) 文件夹的配置文件,你可以在 experiments/cfgs 文件夹中不改变任何内容。

    训练数据测试数据 mAP@ [0.5:0.95 ]的结果
    r fcn,ResNet-101可可 2014 train+val -minival可可 2014 minival30.8 %
    r fcn,ResNet-101可可 2014 train+val -minivalCOCO 2015测试开发31.1 %

    如果你想使用/培训这个模型,请使用这个仓库的coco分支。 火车模型可以在这里找到,这里是 将coco分支的配置文件用于这里模型。 没有进行多尺度训练或者测试来获取这里数字。 图像大小设置为 800,最大大小为 1200,使用 5比例。 this获得 1.6 % 比在原始纸张中报告的效果更好。 在 8位gpu上进行了训练,iter_size的为 2.

    许可证

    r fcn是在MIT许可证( 有关详细信息,请参阅许可证文件) 下发布的。

    引用r fcn

    如果你发现fcn在你的研究中有用,请考虑:

    
    @article{dai16rfcn,
    
    
     Author = {Jifeng Dai, Yi Li, Kaiming He, Jian Sun},
    
    
     Title = {{R-FCN}: Object Detection via Region-based Fully Convolutional Networks},
    
    
     Journal = {arXiv preprint arXiv:1605.06409},
    
    
     Year = {2016}
    
    
    }
    
    
    
    

    请使用 Important,请使用这里存储库的caffe上传版本。 我已经在最新版本的Caffe和py-R-FCN之间合并了许多文件。

    Caffepycaffe的要求( 请参见: Caffe安装说明( )

    注意:Caffe 必须通过支持 python 层构建 !

    # In your Makefile.config, make sure to have this line uncommentedWITH_PYTHON_LAYER := 1# Unrelatedly, it's also recommended that you use CUDNNUSE_CUDNN := 1USE_NCCL := 1
    • 你可能没有的python 软件包: cythonpython-opencveasydict
    • 用于多gpu培训的nvidia库的NCCL,可以用于多图形处理器
    • 仅对正式的official PASCAL VOC评估需要使用 [Optional] MATLAB。 代码现在包含非官方的python 评估代码。

    需求:硬件

    任何具有 6GB 或者更大内存的NVIDIA GPU都可以使用( 4gb 对于 resnet-50 来说足够了)。

    安装

    • 克隆fcn存储库
    git clone --recursive https://github.com/bharatsingh430/py-R-FCN-multiGPU/

    ( 我只测试这个提交,并且我不确定这个Caffe是否仍然与这里存储库中的prototxt兼容)

    如果遵循上述指令,python 代码将自动添加 $RFCN_ROOT/caffe/pythonPYTHONPATH,否则需要自己添加 $CAFFE_ROOT/python,你可以检查 $RFCN_ROOT/tools/_init_paths.py 以获得更多细节。

    构建Cython模块

    cd$RFCN_ROOT/lib
    make

    生成Caffe和 pycaffe

    cd$RFCN_ROOT/caffe# Now follow the Caffe installation instructions here:# http://caffe.berkeleyvision.org/installation.html# If you're experienced with Caffe and have all of the requirements installed# and your Makefile.config in place, then simply do:make -j8 && make pycaffe

    演示

    使用演示你需要下载 pretrained r fcn模型,请从 OneDrive 手动下载模型,并将它的置于 $RFCN/data。!

    确保它如下所示:

    $RFCN/data/rfcn_models/resnet50_rfcn_final.caffemodel$RFCN/data/rfcn_models/resnet101_rfcn_final.caffemodel

    运行演示

    $RFCN/tools/demo_rfcn.py

    演示使用 ResNet-101 2007检测到的网络进行检测。

    培训&测试准备

    下载培训。验证。测试数据和 VOCdevkit

    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
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

    将所有这些tars提取到一个名为 VOCdevkit的目录中

    tar xvf VOCtrainval_06-Nov-2007.tar
    tar xvf VOCtest_06-Nov-2007.tar
    tar xvf VOCdevkit_08-Jun-2007.tar
    tar xvf VOCtrainval_11-May-2012.tar

    它应该有这种基本结构

    $VOCdevkit/# development kit$VOCdevkit/VOCcode/# VOC utility code$VOCdevkit/VOC2007 # image sets, annotations, etc.$VOCdevkit/VOC2012 # image sets, annotations, etc.#.. . and several other directories.. .

    由于py-faster-rcnn不支持多个训练数据集,所以我们需要手动合并 2007个数据和 VOC 2012数据。 创建一个名为 VOC0712的新目录,将除 ImageSets 以外的所有子文件夹放入 VOC0712 (。你将合并一些文件夹) 中,并将它的放入中。 我为你提供了一个合并版本 ImageSets 文件夹,请将它的放入 VOCdevkit/VOC0712/

    那么文件夹结构应该如下所示

    $VOCdevkit/# development kit$VOCdevkit/VOCcode/# VOC utility code$VOCdevkit/VOC2007 # image sets, annotations, etc.$VOCdevkit/VOC2012 # image sets, annotations, etc.$VOCdevkit/VOC0712 # you just created this folder#.. . and several other directories.. .

    为 PASCAL VOC数据集创建符号符号

    cd$RFCN_ROOT/data
    ln -s $VOCdevkit VOCdevkit0712

    请手动下载 ImageNet-pre-trained ResNet-50 和 ResNet-100 模型,并将它们放入 $RFCN_ROOT/data/imagenet_models

    然后一切都完成了你可以训练你自己的模型。

    用法

    要使用近似联合训练方法训练和测试fcn检测器,请使用 experiments/scripts/rfcn_end2end.sh 输出在 $RFCN_ROOT/output 下面写。

    要使用 approximate的近似联合训练方法训练和测试r fcn探测器,请使用 experiments/scripts/rfcn_end2end_ohem.sh 输出在 $RFCN_ROOT/output 下面写。

    要使用 alternative alternative alternative方法对r 检测detector测试和测试r,请使用experiments/scripts/rfcn_alt_opt_5stage_ohem.sh 输出在 $RFCN_ROOT/output 下面写

    cd$RFCN_ROOT./experiments/scripts/rfcn_end2end[_ohem].sh [GPU_ID] [NET] [DATASET] [--set.. .]# GPU_ID is the GPU you want to train on# NET in {ResNet-50, ResNet-101} is the network arch to use# DATASET in {pascal_voc, coco} is the dataset to use(I only tested on pascal_voc)# --set.. . allows you to specify fast_rcnn.config options, e.g.# --set EXP_DIR seed_rng1701 RNG_SEED 1701

    培训的r fcn网络保存在以下位置:

    
    output/<experiment directory>/<dataset name>/
    
    
    
    

    测试输出保存在以下位置:

    
    output/<experiment directory>/<dataset name>/<network snapshot name>/
    
    
    
    

    使用 Titan X 和 Intel Xeon E5-2683 v4 @ 2.10 GHz测试红帽


    cod  fast  faster  GPU  Caffe  CAF  
    相关文章