caffe2与Detectron安装及使用教程

caffe2与Detectron已经放出很久,但由于相关教程较少,并且代码不稳定,一直没有使用,但伴随着相关开源代码增多,不得已安装与学习,做个简要的教程。

step1:

   caffe2安装(caffe2的安装比较麻烦,有可能会出现各种问题):

   主要环境要求:python2,cuda-8.0,cudnn6.0,Ubuntu16.04 ,按照装caffe的传统方式安装显卡驱动,cuda8与cudnn6即可。

   安装官网:

https://caffe2.ai/docs/getting-started.html?platform=ubuntu&configuration=compile

安装官网中提供了具体的安装步骤,其中在Install with GPU Support一节中提供了安装cuda以及cudnn的方法。

安装依赖:

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
      build-essential \
      cmake \
      git \
      libgoogle-glog-dev \
      libgtest-dev \
      libiomp-dev \
      libleveldb-dev \
      liblmdb-dev \
      libopencv-dev \
      libopenmpi-dev \
      libsnappy-dev \
      libprotobuf-dev \
      openmpi-bin \
      openmpi-doc \
      protobuf-compiler \
      python-dev \
      python-pip                          
sudo pip install \
      future \
      numpy \
      protobuf

 

sudo apt-get install -y --no-install-recommends libgflags-dev

 

  下载代码并安装:

git clone --recursive https://github.com/pytorch/pytorch.git && cd pytorch

  这个过程会比较长,会下载很多东西在third_party文件夹下。

git submodule update --init
mkdir build && cd build
cmake ..
sudo make install 

Tips :在cmake之前以及cmake .. 之后,可利用ccmake .  指令查看编译选项,利用sudo apt-get install cmake-curses-gui 安装

               ccmake指令,然后利用ccmake .   查看编译选项以及路径是否正确。

            如果不想或没有超级用户权限,可在将sudo make install 变为 make 指令,然后在~/.bashrc里添加必要的路径信息

            在 ~/.bashrc里添加如下内容:

export PYTHONPATH=/path_to_pytorvh/pytorch/build:$PYTHONPATH
export PATH=/path_to_pytorch/pytorch/build/bin:$PATH
export LIBRARY_PATH=$LIBRARY_PATH:/path_to_pytorvh/pytorch/build/lib:$LIBRARY_PATH

             注意修改上面的路径,之后 source ~/.bashrc使其生效。

可能会出现的错误:

安装过程中有可能会报出以下错误:

/usr/local/cuda/include/crt/common_functions.h:64:24: error: token ""__CUDACC_VER__ is no longer supported.  Use __CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, and __CUDACC_VER_BUILD__ instead."" is not valid in preprocessor expressions

报这个错误的原因是eigen的版本的问题,编译的过程中会首先寻找系统中的eigen,但系统中的版本有可能不合适,其实在third_party中已经有了,解决这个问题,只需要修改相关的cmake文件即可。

进入cmake文件夹,打开Dependencies.cmake文件,修改以下部分:

if(BUILD_CAFFE2)
  # Due to license considerations, we will only use the MPL2 parts of Eigen.
  set(EIGEN_MPL2_ONLY 1)
  message(STATUS "Did not find system Eigen. Using third party subdirectory.")
  set(EIGEN3_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/eigen)
  ##$$$$$$$$$%%%%CHANGED$%$%$%$%$^$

  #find_package(Eigen3)

  #if(EIGEN3_FOUND)
  #  message(STATUS "Found system Eigen at " ${EIGEN3_INCLUDE_DIR})
  #else()
  #  message(STATUS "Did not find system Eigen. Using third party subdirectory.")
  #  set(EIGEN3_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/eigen)
  #endif()
  include_directories(${EIGEN3_INCLUDE_DIR})
endif()

如果在编译的过程中报里nccl与libcudart.so.8的错误,在 ~/.bashrc里添加如下内容:

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-8.0/lib64

  之后source ~/.bashrc 使其生效。到这里基本没有什么问题了。 

 检查是否安装正确,打开python,执行 from caffe2.python import core, 如果报出以下错误:

File "caffe2/proto/caffe2_pb2.py", line 23, in <module>
    t\x12\x17\n\x0freport_interval\x18\x08 \x01(\x05\x12\x14\n\x0crun_every_ms\x18\x0b \x01(\x03\x12\x1b\n\x13\x63oncurrent_substeps\x18\x06 \x01(\x08\x12\x18\n\x10should_stop_blob\x18\t \x01(\t\x12\x11\n\tonly_once\x18\n \x01(\x08\x12\x18\n\x10\x63reate_workspace\x18\x0c \x01(\x08\x12 \n\x18num_concurrent_instances\x18\r \x01(\x05\"g\n\x07PlanDef\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1f\n\x07network\x18\x02 \x03(\x0b\x32\x0e.caffe2.NetDef\x12-\n\x0e\x65xecution_step\x18\x03 \x03(\x0b\x32\x15.caffe2.ExecutionStep\"\xba\x01\n\tBlobProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12#\n\x06tensor\x18\x03 \x01(\x0b\x32\x13.caffe2.TensorProto\x12\x0f\n\x07\x63ontent\x18\x04 \x01(\x0c\x12%\n\x07qtensor\x18\x05 \x01(\x0b\x32\x14.caffe2.QTensorProto\x12\x1a\n\x12\x63ontent_num_chunks\x18\x06 \x01(\x05\x12\x18\n\x10\x63ontent_chunk_id\x18\x07 \x01(\x05\"K\n\rDBReaderProto\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\t\x12\x0f\n\x07\x64\x62_type\x18\x03 \x01(\t\x12\x0b\n\x03key\x18\x04 \x01(\t*\x90\x01\n\nDeviceType\x12\x07\n\x03\x43PU\x10\x00\x12\x08\n\x04\x43UDA\x10\x01\x12\n\n\x06MKLDNN\x10\x02\x12\n\n\x06OPENGL\x10\x03\x12\n\n\x06OPENCL\x10\x04\x12\t\n\x05IDEEP\x10\x05\x12\x07\n\x03HIP\x10\x06\x12!\n\x1d\x43OMPILE_TIME_MAX_DEVICE_TYPES\x10\x07\x12\x14\n\rONLY_FOR_TEST\x10\xc5\xde\xfb\t')
TypeError: __init__() got an unexpected keyword argument 'syntax'

则是因为protobuf的版本问题,源于protobuf的python版本与protoc的版本不符,利用

protoc --version

 查看protoc的版本,安装合适的python包:

sudo pip install protobuf==对应版本

至此caffe2基本安装完成。

之后按照Detectron的安装顺序安装Detectron,这个基本不会有太大的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值