【深度教程】Ubuntu 安装环境配置 (PyTorch+Caffe2+torchvision+ONNX+MMdnn)

Table of Content

  1. Overview
  2. PyTorch + Caffe2
  3. torchvision (optional)
  4. ONNX (optional)
  5. MMdnn (optional)

Overview

服务器环境:Ubuntu 16.04 Linux media50 4.10.0-30-generic Wed Aug 2 02:13:56 UTC 2017 x86_64 GNU/Linux

所用版本:(PyTorch + Caffe2) 1.0.0 + torchvision 0.2.1 + ONNX 1.3.0 + MMdnn 0.2.3


PyTorch + Caffe2

PyTorch:动态/灵活/简洁的神经网络/深度学习框架

Caffe2:多平台部署的轻量化深度学习框架

安装

安装 Python,OpenCV,numpy,具体步骤可参见 Google

安装其他附加依赖项:

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

sudo pip install \
    future \
    protobuf \
    typing \
    hypothesis

# for Ubuntu 14.04
sudo apt-get install --no-install-recommends \
    libgflags2 \
    cmake3

# for Ubuntu 16.04
sudo apt-get install --no-install-recommends \
    libgflags-dev \
    cmake

安装 CUDA 和 cuDNN,另 NCCL 可选,具体步骤可参见 Google 或 CUDA-cuDNN-NCCL-OpenCV-Caffe_setup

注意:如果 CUDA 版本为 8.0,则需要 cuDNN 6.0,否则编译过程中会报错

编译安装 PyTorch + Caffe2:

git clone https://github.com/pytorch/pytorch.git
cd pytorch
git submodule update --init --recursive
# 复制文件至系统目录需要 sudo 权限
sudo python setup.py install

测试

测试是否安装成功:

cd ~ && python -c 'import pytorch' 2>/dev/null && echo "Success" || echo "Failure"
cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

cd ~
python
>> import pytorch
>> from caffe2.python import core

注意:

切换目录是必要操作,因为源代码路径下已存在 caffe2 路径

@ Ref[2]

Don’t set PYTHONPATH to your build folder

Don’t run python from the pytorch/build directory, or from the pytorch root directory, or from the upper directory

Since you have Anaconda you should use ./scripts/build_anaconda.sh , which correctly installs Caffe2 into Anaconda’s python

@ Ref[3]

测试 GPU support:

cd $PYTORCH_ROOT
cd caffe2/python/operator_test/
python activation_ops_test.py

如有问题,运行后会在顶部提示 [使用 CPU 而非 GPU]、[缺失一些必要的库] 等警告

其他常见问题另可参见:FAQ / Troubleshooting Help | Caffe2


torchvision

torchvision:自身独立但主要服务于 PyTorch 深度学习框架,用于生成图片、视频数据集,同时提供一些流行的模型类和预训练模型

Datasets, Transforms and Models specific to Computer Vision

安装

sudo pip install torchvision

测试

cd ~
python
>> import torchvision

ONNX

Open Neural Network Exchange (ONNX) format

ONNX 作为一种共享模型文件格式,为 AI models 提供了一种开源格式

在不同的框架之间实现模型交互,并简化从研究到产品化的过程,以提高人工智能社区的创新速度

Caffe2, PyTorch, Microsoft Cognitive Toolkit, Apache MXNet 和其他一些框架都已支持 ONNX

安装

sudo apt-get install protobuf-compiler libprotoc-dev
sudo pip install onnx onnx-caffe2

测试

cd ~
python
>> import onnx

转换 ONNX 模型到 Caffe2 模型

onnx-caffe2 绑定了一个 shell 命令 convert-onnx-to-caffe2,用于将 ONNX 模型转换为 Caffe2 模型:

$ convert-onnx-to-caffe2 model.onnx --output predict_net.pb --init-net-output init_net.pb

注意:

在 ONNX 格式中,参数和网络结构存储于同一个模型文件

在 Caffe2 中,通常存储于独立的两个文件 init_net.pb (参数) 和 predict_net.pb (网络结构)


MMdnn

MMdnn:一套能让用户在不同深度学习框架间做相互操作的工具,如模型的转换和可视化,可转换的模型格式包括 Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch、ONNX 和 CoreML

MMdnn is a set of tools to help users inter-operate among different deep learning frameworks, e.g. model conversion and visualization. Convert models between Caffe, Keras, MXNet, Tensorflow, CNTK, PyTorch, ONNX and CoreML.

安装

# Stable version
sudo pip install mmdnn

# Latest version
sudo pip install -U git+https://github.com/Microsoft/MMdnn.git@master

测试

cd ~
python
>> import mmdnn

简单使用示例

mmdownload -h # 显示帮助信息
mmdownload -f tensorflow -n resnet_v2_152 -o ./

mmconvert -h # 显示帮助信息
mmconvert -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNodeName MMdnn_Output -df pytorch -om tf_resnet_to_pth.pth
  • usage:
mmconvert [-h]

[--srcFramework {caffe,caffe2,cntk,mxnet,keras,tensorflow,tf,pytorch}]
                
[--inputWeight INPUTWEIGHT]

[--inputNetwork INPUTNETWORK]

--dstFramework {caffe,caffe2,cntk,mxnet,keras,tensorflow,coreml,pytorch,onnx}

--outputModel OUTPUTMODEL

[--dump_tag {SERVING,TRAINING}]
  • optional arguments:
-h, --help          show this help message and exit

--srcFramework {caffe,caffe2,cntk,mxnet,keras,tensorflow,tf,pytorch}, -sf  {caffe,caffe2,cntk,mxnet,keras,tensorflow,tf,pytorch}          Source toolkit name of the model to be converted.

--inputWeight INPUTWEIGHT, -iw INPUTWEIGHT          Path to the model weights file of the external tool (e.g caffe weights proto binary, keras h5 binary

--inputNetwork INPUTNETWORK, -in INPUTNETWORK          Path to the model network file of the external tool (e.g caffe prototxt, keras json

--dstFramework {caffe,caffe2,cntk,mxnet,keras,tensorflow,coreml,pytorch,onnx}, -df  {caffe,caffe2,cntk,mxnet,keras,tensorflow,coreml,pytorch,onnx}          Format of model at srcModelPath (default is to auto-detect).

--outputModel OUTPUTMODEL, -om OUTPUTMODEL          Path to save the destination model

--dump_tag {SERVING,TRAINING}          Tensorflow model dump type

注意:

在转换 Caffe 模型至其他格式时,一般需要额外指定 --inputShape,如 --inputShape 224,224,3,否则容易转换失败

If you want to assume a fixed input shape, you can use “–inputShape” like “–inputShape 224,224,3”


希望能够对大家有所帮助 ~ 转载请注明出处 ~

BACK to TOP

References

[1] Caffe2 and PyTorch join forces to create a Research + Production platform PyTorch 1.0

[2] FAQ / Troubleshooting Help | Caffe2

[3] [Caffe2] CRITICAL:root:Cannot load caffe2.python

[4] GitHub - ysh329/deep-learning-model-convertor

[5] MMdnn Visualizer

[6] tutorials/OnnxCaffe2Import.ipynb at master · onnx/tutorials · GitHub

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值