Caffe2与Detectron的安装笔记与Mask-RCNN的测试

本笔记主要记录个人安装caffe2与Detectron中出现的安装问题,并在安装完成后测试了FAIR官方的Mask-RCNN。

主要内容:

        ① caffe2的安装和测试;

        ② Detectron的安装和测试;

        ③ Mask-RCNN模型的下载和测试命令;

测试平台配置简述:

        ① 主板平台:x-99

        ② CPU:i7-5820k

        ③ GPU:2块(1080ti,TITAN Xp)

        ④ 系统:ubuntu 16.04.4 LTS

        ⑤ CUDA:CUDA-8.0,cudnn-7.1.2

一、caffe2的安装实践与测试

      首先我们开始caffe2的安装,caffe2的官方网站给出了安装的相关教程,从安装类型上主要分为四个类型:①Pre-Build Binaries(conda install),②Build From Source(从GitHub上clone下来,cmake),③Docker Images,④Cloud;后两种由于平台限制没有研究,主要对前两种方式进行了尝试,最后实际安装使用了第②种安装方式。

       注释:为什么不使用第①种方式?  解答:第①种安装方式(conda install xxx)从操作的难度上来说确实比较简便,但是,在随后的安装完整性测试中发现(caffe2安装成功测试与GPU运行支持),GPU运行支持无法通过,即caffe2只能使用CPU进行计算,这种计算方式显然无法发挥平台的性能,具体原因尚未探究,只能迭代其他安装方式。

       在我们选定使用的第②种安装方式,也并不是完全按照官方网站的标准方式,而是参考了官网上其他的安装示例进行改进,目标是为caffe2的运行构造出一个独立的运行环境,为了达到这点参考了官方网站的Custom Anaconda Install ,从名字就可以看出,要实现独立运行环境需要安装Anaconda。为caffe2创造独立的运行环境可以①保证不影响现有的python配置;②可以重新搭配python的版本2&3及对应的库文件;③一旦安装失败,可以全部删除配置的环境及库文件,并且对于现有的配置和库文件没有影响。

       下面开始介绍安装的步骤和需要注意的问题:

       ① 首先需要检测依赖库Eigen的版本,Eigen的版本至少需要3.3.0以上,否则在caffe2  make install  阶段会出现

                #error Caffe2 requires Eigen to be at least 3.3.0  

        检测版本的命令是

         cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION

       如果版本不满足或者未安装,则可以按照以下步骤更新或安装Eigen库,其实只是替换文件的过程:

                1. 从Eigen库官网下载最新版本的库

                2. 解压文件并将重命名文件夹为eigen3

                3. 打开目标安装路径: cd /usr/include 

                4. 删除旧版本: sudo rm -rf eigen3/  

                5. 将解压后重命名的文件移动到目标安装路径: sudo mv path/of/eigen3 /usr/include/ 

                6. 重新检测Eigen版本: cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION

                7. 如果安装的版本是3.3.4则会出现:   

EIGEN_WORLD_VERSION 3

          EIGEN_MAJOR_VERSION 3

          EIGEN_MINOR_VERSION 4          

        此时新版本的Eigen库安装成功,本安装参考stackoverflow的指导

        ② 安装caffe2,采用源代码编译、安装的方式

            1. 使用conda命令建立新的环境:

conda create -yn caffe2_env python=2.7

            其中caffe2_env可以根据自己的命名习惯进行更改,代表独立运行环境的名字,python=2.7代表指定该独立运行环境中使用的python版本,即不管默认环境中的python版本如何,一旦通过source命令激活了该运行环境,则该运行环境就会使用创建时指定的python版本。在创建新的运行环境的同时,可以增加同步安装的库文件,具体参考conda的手册。安装caffe2的过程中我使用了python2的版本,这可能和我默认的Anaconda2的版本

            2. 激活创建的运行环境:source activate caffe2_env

            这之前的两步和安装anaconda2与anaconda3的并存是一样的步骤,只不过新的环境中没有anaconda的包,需要自己安装

            3. 安装依赖包:

            conda install -y \ 
                    future \
                    gflags \
                    leveldb \
                    mkl \
                    mkl-include \
                    numpy \
                    opencv \
                    protobuf \ 
                    six
            同时,还需要安装
pip install \
    flask \
    graphviz \ 
    hypothesis \ 
    jupyter \
    matplotlib \ 
    pydot \
    pyyaml \
    requests \ 
    scikit-image \
    scipy \
    setuptools \
    tornado 
            4. 下载代码到本地
cd ~ && git clone --recursive https://github.com/pytorch/pytorch.git && cd pytorch
git submodule update --init

            caffe2已经整合到pytorch的源代码中,下载速度较慢的推荐安装并使用proxychains在终端中下载。

            5. 在pytorch的根目录中创建build文件夹,并利用cmake编译             

rm -rf build && mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=~/anaconda2/envs/caffe2_env -DCMAKE_INSTALL_PREFIX=~/anaconda2/envs/caffe2_env -DUSE_NATIVE_ARCH=ON ..
make install

            -DCMAKE_PREFIX_PATH 和 -DCMAKE_INSTALL_PREFIX 两个参数必须是创建的新的运行环境的路径。

            6. 检测caffe2安装

            在运行环境中输入

###Test Install Success
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

            可以检测caffe2是否安装成功,之后再输入

###Test GPU Support
python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

            应该返回可用的GPU数量,即代表GPU支持安装完成,我的返回 2 。

            或者在进入ipython或python控制台后,输入

import caffe2.python.core

            无任何返回数据即代表GPU支持安装完成。

二、Detectron安装

        Detectron的安装比较简单,分为下载源代码,编译,测试

        ① 下载源代码:

# DETECTRON=/path/to/clone/detectron 
git clone https://github.com/facebookresearch/detectron $DETECTRON 

        ② 编译:

cd $DETECTRON/lib 
make

        ③ 测试,其采用的测试框架是unittest:

python2 $DETECTRON/tests/test_spatial_narrow_as_op.py

        到了这一步已经足够我们进行Mask-RCNN的测试了,如果需要Detectron来训练自己的检测模型,请参考这篇博文,编译ops运算符库。

三、Mask-RCNN测试

        ① 测试Mask-RCNN同样在下载的Detectron的源代码里,使用Detectron中tools/infer_simple.py完成Mask-RCNN的测试,而在开始测试最好先下载两个测试会用的参数模型,但是如果你认为你的网速足够快,线路足够好,可以直接测试运行测试。

        线路稳定的测试代码:

python2 tools/infer_simple.py \
    --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
    --output-dir /tmp/detectron-visualizations \
    --image-ext jpg \
    --wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
    demo

        ② 如果网络线路不好(大部分时候),需要下载两个模型,网址分别是

https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl
https://s3-us-west-2.amazonaws.com/detectron/ImageNetPretrained/MSRA/R-101.pkl

        第一个模型是训练好的Mask-RCNN模型,对应的参数--wts,第二模型需要放在

/tmp/detectron-download-cache/ImageNetPretrained/MSRA/R-101.pkl

        路径下。

        独立下载模型的测试代码是

python2 tools/infer_simple.py \
    --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
    --output-dir output/detectron-visualizations \
    --image-ext jpg \
    --wts model/MaskRCNN/e2e_mask_rcnn_R-101-FPN_2x_model_final.pkl \
    demo

至此,全部构建结束。   

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值