专栏首页AIUAICaffe2 - Detectron 安装

Caffe2 - Detectron 安装

Detectron 安装

Detectron 项目地址

基于 Caffe2.

Detectron 项目:

基于的 Backbone 网络结构:

Mask RCNN 输出.

From Detectron README.md.

1. Detectron 安装

Detectron 现还未给出 CPU 实现,需要基于 GPU 环境.

Requirements:

  • NVIDIA GPU, Linux, Python2
  • Caffe2, various standard Python packages, and the COCO API
  • CUDA 8.0, cuDNN 6.0.21.

1.1 Caffe2 安装

参考 Caffe2 - (一)Source 安装及问题解决Caffe2 官方 Install Instructions.

由于 Detectron 需要 Caffe2 包含 Detectron module,查看是否有该模块,没有的话更新 Caffe2 版本.

将 Caffe2 的 Python package 路径添加到 PYTHONPATH 环境变量,并确保 Caffe2 安装成功:

# To check if Caffe2 build was successful
python2 -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

# To check if Caffe2 GPU build was successful
# This must print a number > 0 in order to use Detectron
python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

1.2 依赖性安装

Python 依赖项:

pip install numpy pyyaml matplotlib opencv-python>=3.0 setuptools Cython mock

COCO API 安装:

# COCOAPI=/path/to/clone/cocoapi
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd $COCOAPI/PythonAPI
# Install into global site-packages
make install
# Alternatively, if you do not have permissions or prefer
# not to install the COCO API into global site-packages
python2 setup.py install --user

1.3 Detectron 安装

  • Clone Detectron reposity: # DETECTRON=/path/to/clone/detectron git clone https://github.com/facebookresearch/detectron $DETECTRON
  • 设置 Python 模块: cd $DETECTRON/lib && make
  • 测试 Detectron 安装,如 SpatialNarrowAsOp test: python2 $DETECTRON/tests/test_spatial_narrow_as_op.py

安装完成后,即可用提供的模型进行推理测试.

2. COCO Dataset

Detectron 通过软链接将 COCO 数据集的 images 和 annotations 链接到路径 lib/datasets/data,如:

ln -s /path/to/coco $DETECTRON/lib/datasets/data/coco

更多关于 COCO 数据集和其它数据集软链接创建方法参考:lib/datasets/data/README.md.

完成以后,即可进行模型训练.

3. 定制新的 Operators

首先阅读 FAQ.md 中关于定制 operators 的部分.

方便起见,Detectron 提供 CMake 支持以编译定制的 operators. 所有的定制 operators 可以被编译成单个库,以便于 从 Python 动态的加载.

将定制的 operator 实现放在路径 lib/ops/ .

参考示例 tests/test_zero_even_op.py,关于如何从 Python 中加载定制的 operators.

  • 编译定制的 operators 库: cd $DETECTRON/lib && make ops
  • 测试定制的 operator 是否成功: python2 $DETECTRON/tests/test_zero_even_op.py ​

4. Detectron Docker 镜像

Detectron Dockerfile

  • 首先,创建 Caffe2 镜像: cd /path/to/caffe2/docker/ubuntu-16.04-cuda8-cudnn6-all-options # Use the latest Caffe2 master sed -i -e 's/ --branch v0.8.1//g' Dockerfile docker build -t caffe2:cuda8-cudnn6-all-options .
  • 然后,创建 Detecron 镜像: cd $DETECTRON/docker docker build -t detectron:c2-cuda8-cudnn6 .
  • 运行 Detectron 镜像,如 BatchPermutationOp test: nvidia-docker run --rm -it detectron:c2-cuda8-cudnn6 python2 tests/test_batch_permutation_op.py

5. 问题及解决

5.1 Caffe2 Operator Profiling

profiling 为 Caffe2 提供了有用的 operators benchmarking 和 debugging 工具,示例可参考 BatchPermutationOp test.

Profiling 不是默认编译的,可以在运行 Caffe2 CMake 时设置 -DUSE_PROF=ON 以开启.

5.2 CMake Cannot Find CUDA and cuDNN

编译 Caffe2 时如果找不到 CUDA 和 cuDNN 路径,可以在编译时指定 CMake 的 CUDA 和 cuDNN 路径:

cmake .. \
  # insert your Caffe2 CMake flags here
  -DCUDA_TOOLKIT_ROOT_DIR=/path/to/cuda/toolkit/dir \
  -DCUDNN_ROOT_DIR=/path/to/cudnn/root/dir

类似地,编译定制的 Detectron operators 时可以运行:

cd $DETECTRON/lib
mkdir -p build && cd build
cmake .. \
  -DCUDA_TOOLKIT_ROOT_DIR=/path/to/cuda/toolkit/dir \
  -DCUDNN_ROOT_DIR=/path/to/cudnn/root/dir
make

可以采用相同的方式,处理机器上同时有多个 CUDA 和 cuDNN 版本时的情况.

5.3 Protobuf Errors

Caffe2 使用 protobuf 作为序列化格式,并需要其版本高于 3.2.0.

如果 protobuf 版本较低,可以从 Caffe2 的 protobuf 子模块编译 protobuf,来代替旧版本.

  • 编译 Caffe2 protobuf 子模块: # CAFFE2=/path/to/caffe2 cd $CAFFE2/third_party/protobuf/cmake mkdir -p build && cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=$HOME/c2_tp_protobuf \ -Dprotobuf_BUILD_TESTS=OFF \ -DCMAKE_CXX_FLAGS="-fPIC" make install
  • 指定 Caffe2 CMake 到新版本的 protobuf: cmake .. \ # insert your Caffe2 CMake flags here -DPROTOBUF_PROTOC_EXECUTABLE=$HOME/c2_tp_protobuf/bin/protoc \ -DPROTOBUF_INCLUDE_DIR=$HOME/c2_tp_protobuf/include \ -DPROTOBUF_LIBRARY=$HOME/c2_tp_protobuf/lib64/libprotobuf.a

5.4 Caffe2 Python Binaries

如果在编译 Caffe2 Python binaries时,不能找到需要的 Python 路径,如 virtualenv 环境,可以指定 Caffe2 CMake 到 python library 库路径和 include 路径:

cmake .. \
  # insert your Caffe2 CMake flags here
  -DPYTHON_LIBRARY=$(python2 -c "from distutils import sysconfig; print(sysconfig.get_python_lib())") \
  -DPYTHON_INCLUDE_DIR=$(python2 -c "from distutils import sysconfig; print(sysconfig.get_python_inc())")

5.5 Caffe2 with NNPACK Build

Detectron 不需要 Caffe2 的 NNPACK 支持.

如果编译时遇到 NNPACK 相关的问题,可以关闭 NNPACK,设置 CMake -DUSE_NNPACK=OFF .

5.6 Caffe2 with OpenCV Build

Detectron 也不需要 Caffe2 的 OpenCV 的支持,也可以关闭,设置 CMake -DUSE_OPENCV=OFF.

5.7 COCO API Undefined Symbol Error

如果遇到由于 undefined symbol 原因,出现的 COCO API import error,类似与 cocoapi - Import error,则需要确定 Python 版本是够混淆,如 both system and conda numpy installed 则会导致该问题.

5.8 CMake Cannot Find Caffe2

如果在编译定制的 operators 时,CMake 出现不能找到 Caffe2 package 的问题,则需要确定在 Caffe2 安装时运行了 make install.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Caffe 与 Caffe2

    Caffe: - 适用于large-scale product - unparalleled performance - well tested C...

    AIHGF
  • C++ 定义和调用函数

    无参函数定义的一般形式为:     类型标识符 函数名([void])     {         声明部分         语句     } 有参函数定义...

    AIHGF
  • Caffe2 - (十三) 基于 Python 创建 Operator

    类似于 Caffe 基于 Python 定制 CaffeLayers, Caffe2 也提供了使用 Python 来自定义 Caffe2 Operators.

    AIHGF
  • Caffe2正式发布!新框架有何不同?贾扬清亲自解答

    王新民 若朴 发自 凹非寺 量子位 报道 | 公众号 QbitAI ? △ 图左为Caffe2作者贾扬清 今天凌晨召开的F8大会上,Facebook正式发布C...

    量子位
  • Facebook 开源深度学习框架 Caffe2,让 AI 从云端走向终端

    AI 研习社按:在昨晚开幕的 F8 年度开发者大会上,Facebook 发布了一款全新的开源深度学习框架 Caffe2。按照官网介绍,它最大的特点就是轻量、模块...

    AI研习社
  • 【重磅】Facebook 开源产业级深度学习框架 Caffe2,带来跨平台机器学习工具

    【新智元导读】Facebook 开发者大会今天召开。同时,Facebook 宣布开源 production-ready 的深度学习框架 Caffe2,轻量级、模...

    新智元
  • 回顾 | Facebook开源产业级深度学习框架 Caffe2

    AI 模型的训练和部署通常与大量数据中心或超级计算机相关联,原因很简单。从大规模的图像、视频、文本和语音等各种信息中持续处理、创建和改进模型的能力不是小型计算擅...

    IT派
  • 开发 | Facebook 开源全新深度学习框架 Caffe2,让 AI 从云端走向终端

    AI科技评论消息,在昨晚开幕的 F8 年度开发者大会上,Facebook 发布了一款全新的开源深度学习框架 Caffe2。按照官网介绍,它的最大特点就是轻量、模...

    AI科技评论
  • CentOS 6.X 安装中文字体

    由于业务需要,需要对CentOS6.9添加中文字体支持 安装工具包 yum install -y fontconfig mkfontscale 安装完成后...

    shaonbean
  • Caffe 与 Caffe2

    Caffe: - 适用于large-scale product - unparalleled performance - well tested C...

    AIHGF

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动