参考:mmdeploy/docs/zh_cn/01-how-to-build/linux-x86_64.md at main · open-mmlab/mmdeploy (github.com)
从零入门《openmmlab》mmdeploy[1]环境安装及简单上手_哔哩哔哩_bilibili
我的环境:
docker容器,ubuntu20.04,cuda11.7、四张3090显卡,默认以安装好PyTorch、mmcv等mmdetection需要的所有环境。
1、安装编译需要用到的库
apt update
apt install wget
apt-get install make
2、安装cuda
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
查看安装结果:
3、查看编译工具版本
cmake -version
g++ -v
保证 cmake的版本 >= 3.14.0并且gcc 7+以上的版本,如果不是,按官方说明重装mmdeploy/docs/zh_cn/01-how-to-build/linux-x86_64.md at main · open-mmlab/mmdeploy (github.com)
4、安装 MMDeploy SDK 依赖
安装OpenCV
apt-get install libopencv-dev
安装pplcv
git clone https://github.com/openppl-public/ppl.cv.git
cd ppl.cv
export PPLCV_DIR=$(pwd)
git checkout tags/v0.7.0 -b v0.7.0
./build.sh cuda
5、安装TensorRT
下载tensorrt,下载地址https://developer.nvidia.com/nvidia-tensorrt-download
我使用的版本为:TensorRT-8.6.1.6,下载并解压TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz
编译
pip install TensorRT-8.6.1.6/python/tensorrt-8.6.1-cp310-none-linux_x86_64.whl
export TENSORRT_DIR=/root/TensorRT-8.6.1.6
export LD_LIBRARY_PATH=$TENSORRT_DIR/lib:$LD_LIBRARY_PATH
cd TensorRT-8.6.1.6
pip install pycuda
6、安装cudnn
下载地址:https://developer.nvidia.com/rdp/cudnn-archive
我使用的版本为cuDNN v8.6.0,下载并解压cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
tar -xf cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz
解压后得到一个cudnn-linux-x86_64-8.6.0.163_cuda11-archive文件名,然后将其改为cudnn
设置环境变量
export CUDNN_DIR=/root/cudnn
export LD_LIBRARY_PATH=$CUDNN_DIR/lib:$LD_LIBRARY_PATH
7、下载mmdeploy并编译自定义算子
git clone https://github.com/open-mmlab/mmdeploy
cd mmdeploy/
git submodule update --init --recursive
export MMDEPLOY_DIR=$(pwd)
TensorRT 自定义算子
mkdir -p build
cmake -DCMAKE_CXX_COMPILER=g++-9 -DMMDEPLOY_TARGET_BACKENDS=trt -DTENSORRT_DIR=/root/TensorRT-8.6.1.6 -DCUDNN_DIR=/root/cudnn
make -j$(nproc) && make install
注意这里的g++-9一定要改成你g++的版本号
8、编译 SDK 和 Demos
cd mmdeploy
pip install -e .
mkdir -p build
cmake . \
-DCMAKE_CXX_COMPILER=g++-9 \
-DMMDEPLOY_BUILD_SDK=ON \
-DMMDEPLOY_BUILD_EXAMPLES=ON \
-DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
-DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \
-DMMDEPLOY_TARGET_BACKENDS=trt \
-Dpplcv_DIR=${PPLCV_DIR}/cuda-build/install/lib/cmake/ppl \
-DTENSORRT_DIR=${TENSORRT_DIR} \
-DCUDNN_DIR=${CUDNN_DIR}
make -j$(nproc) && make install
9、模型转换
以yolox为例,先下载权重文件
wget https://download.openmmlab.com/mmdetection/v2.0/yolox/yolox_tiny_8x8_300e_coco/yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth
cd mmdeploy
python tools/deploy.py configs/mmdet/detection/detection_tensorrt_dynamic-320x320-1344x1344.py ../mmdetection3/configs/yolox/yolox_tiny_8xb8-300e_coco.py ../mmdetection3/workdir/yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth ../mmdetection3/demo/demo.jpg --work-dir yolox-tiny --device cuda --dump-info
10、推理
./bin/object_detection cuda yolox-tiny/ ../mmdetection3/demo/demo.jpg
推理成功。