9个版本 (破坏性更新)
0.9.0 | 2022年10月9日 |
---|---|
0.8.0 | 2022年9月22日 |
#338 在 机器学习
每月31次 下载
5MB
681 行
简介
安全的MMDeploy Rust包装器。
新闻
- (2022.9.29) 此仓库已添加到 OpenMMLab生态系统。
- (2022.9.27) 此仓库已添加到 MMDeploy CI。
先决条件
为了确保此仓库构建成功,您应安装一些预安装包。
以下指南已在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