9个版本 (破坏性更新)

0.9.0 2022年10月9日
0.8.0 2022年9月22日

#338机器学习

每月31次 下载

Apache-2.0

5MB
681

crates.io

简介

安全的MMDeploy Rust包装器。

新闻

先决条件

为了确保此仓库构建成功,您应安装一些预安装包。

以下指南已在x86设备上的Ubuntu操作系统上测试过。

步骤0。 如果您还没有安装,请安装Rust。

apt install curl
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

步骤1。 安装Clang和Rust所需的Bindgen

apt install llvm-dev libclang-dev clang

步骤2。 下载并安装预构建的mmdeploy包。目前,mmdeploy-sys是基于预构建的mmdeploy包构建的,所以此仓库仅支持OnnxRuntime和TensorRT后端。不要失望,从源代码构建的脚本正在开发中,完成之后我们可以在Rust中使用mmdeploy支持的所有后端部署模型。

apt install wget

如果您想使用OnnxRuntime部署模型

# Download and link to MMDeploy-onnxruntime pre-built package
wget https://github.com/open-mmlab/mmdeploy/releases/download/v0.9.0/mmdeploy-0.9.0-linux-x86_64-onnxruntime1.8.1.tar.gz
tar -zxvf mmdeploy-0.9.0-linux-x86_64-onnxruntime1.8.1.tar.gz
pushd mmdeploy-0.9.0-linux-x86_64-onnxruntime1.8.1
export MMDEPLOY_DIR=$(pwd)/sdk
export LD_LIBRARY_PATH=$MMDEPLOY_DIR/sdk/lib:$LD_LIBRARY_PATH
popd

# Download and link to OnnxRuntime engine
wget https://github.com/microsoft/onnxruntime/releases/download/v1.8.1/onnxruntime-linux-x64-1.8.1.tgz
tar -zxvf onnxruntime-linux-x64-1.8.1.tgz
cd onnxruntime-linux-x64-1.8.1
export ONNXRUNTIME_DIR=$(pwd)
export LD_LIBRARY_PATH=$ONNXRUNTIME_DIR/lib:$LD_LIBRARY_PATH

如果您想使用TensorRT部署模型

请注意cuda的版本:11。因此,此脚本仅支持具有cuda-11.x的机器。

# Download and link to MMDeploy-tensorrt pre-built package
wget https://github.com/open-mmlab/mmdeploy/releases/download/v0.9.0/mmdeploy-0.9.0-linux-x86_64-cuda11.1-tensorrt8.2.3.0.tar.gz
tar -zxvf mmdeploy-0.9.0-linux-x86_64-cuda11.1-tensorrt8.2.3.0.tar.gz
pushd mmdeploy-0.9.0-linux-x86_64-cuda11.1-tensorrt8.2.3.0
export MMDEPLOY_DIR=$(pwd)/sdk
export LD_LIBRARY_PATH=$MMDEPLOY_DIR/sdk/lib:$LD_LIBRARY_PATH
popd

# Download and link to TensorRT engine
# !!! Download TensorRT-8.2.3.0 CUDA 11.x tar package from NVIDIA, and extract it to the current directory. This link maybe helpful: https://developer.nvidia.com/nvidia-tensorrt-8x-download.
export TENSORRT_DIR=$(pwd)/TensorRT-8.2.3.0
export LD_LIBRARY_PATH=${TENSORRT_DIR}/lib:$LD_LIBRARY_PATH

# Download and link to CUDA and cuDNN libraries
# !!! Download cuDNN 8.2.1 CUDA 11.x tar package from NVIDIA, and extract it to the current directory. This two links are maybe helpful: CUDA: https://developer.nvidia.com/cuda-downloads; cuDNN: https://developer.nvidia.com/rdp/cudnn-download.
export CUDNN_DIR=$(pwd)/cuda
export LD_LIBRARY_PATH=$CUDNN_DIR/lib64:$LD_LIBRARY_PATH

步骤3。 (可选)安装示例所需的OpenCV。

apt install libopencv-dev

步骤4。 (可选)通过mmdeploy-converted-models下载转换后的onnx模型

apt install git-lfs
git clone https://github.com/liu-mengyang/mmdeploy-converted-models --depth=1

快速入门

在开始使用此crate之前,请确保已安装所有所需软件包,请参阅上一节。

更新您的Cargo.toml

mmdeploy = "0.9.0"

MM代码库的API

好消息:现在,您可以使用Rust语言构建由MMDeploy驱动的精彩应用程序!运行一些示例来看看!在这些示例中,CPU是默认的推理设备。如果您选择在GPU上部署模型,您将用cuda替换测试命令中的所有cpu

转换模型

您可以

  • 直接使用此处可用的转换模型 ^_^
  • 或者按照MMDeploy文档安装和转换适当的模型

分类器API

部署由MMDeploy转换的图像分类模型。

示例中,在一个CPU设备上部署了由ONNXRUNTIME目标转换的ResNet模型。

cargo run --example classifier cpu ../mmdeploy-converted-models/resnet ./images/demos/mmcls_demo.jpg

检测器API

部署由MMDeploy转换的目标检测模型。

示例中,在一个CPU设备上部署了由ONNXRUNTIME目标转换的FasterRCNN模型。

cargo run --example detector cpu ../mmdeploy-converted-models/faster-rcnn-ort ./images/demos/mmdet_demo.jpg

渲染结果位于当前目录,命名为output_detection.png

分割器API

部署由MMDeploy转换的目标分割模型。

示例中,在一个CPU设备上部署了由ONNXRUNTIME目标转换的DeepLabv3模型。

cargo run --example segmentor cpu ../mmdeploy-converted-models/deeplabv3 ./images/demos/mmseg_demo.png

渲染结果位于当前目录,命名为output_segmentation.png

姿态检测器API

部署由MMDeploy转换的姿态检测模型。

示例中,在一个CPU设备上部署了由ONNXRUNTIME目标转换的HRNet模型。

cargo run --example pose_detector cpu ../mmdeploy-converted-models/hrnet ./images/demos/mmpose_demo.jpg

渲染结果位于当前目录,命名为output_pose.png

旋转检测器API

部署由MMDeploy转换的旋转检测模型。

示例中,在一个CPU设备上部署了由ONNXRUNTIME目标转换的RetinaNet模型。

cargo run --example rotated_detector cpu ../mmdeploy-converted-models/retinanet ./images/demos/mmrotate_demo.jpg

渲染结果位于当前目录,命名为output_rotated_detection.png

OCR API

部署由MMDeploy转换的文字检测和文字识别模型。

示例中,部署了用于检测的DBNet模型和用于识别的CRNN模型,两者都由ONNXRUNTIME目标在CPU设备上转换。

cargo run --example ocr cpu ../mmdeploy-converted-models/dbnet ../mmdeploy-converted-models/crnn ./images/demos/mmocr_demo.jpg

渲染结果位于当前目录,命名为output_ocr.png

恢复器API

部署由MMDeploy转换的恢复模型。

示例中,部署了用于恢复的EDSR模型,由ONNXRUNTIME目标在CPU设备上转换。

cargo run --example restorer cpu ../mmdeploy-converted-models/edsr ./images/demos/mmediting_demo.png

渲染结果位于当前目录,命名为output_restorer.png

TOSupport列表

  • 分类器
  • 检测器
  • 分割器
  • 姿态检测器
  • 旋转检测器
  • 文字检测器
  • 文字识别器
  • 恢复器

待办事项列表

  • 将rust-mmdeploy-CI贡献给MMDeploy的PR
  • 使用TensorRT预构建包进行测试
  • rust-mmdeploy和rust-mmdeploy-sys的文档
  • rust-mmdeploy教程

依赖关系

~2–5MB
~58K SLoC