1 mmdeploy在jetpack4.6.1上安装流程
本文没有按照官方的教程使用conda环境,本文直接使用系统自带的python3.6.9
1.1 安装pytorch和torch-version
可以在jest zoo下载预编译好的深度学习框架,如:torch、tensorflow、mxnet等。本文使用的是torch1.10.0,对应的torch-version为0.11.1。
安装pytorch-1.10.0
pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl
安装依赖包
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev libopenblas-base libopenmpi-dev libssl-dev -y
pip3 install pillow==8.4.0
安装torch version【pytorch和vision的对应关系 】
wget https://github.com/pytorch/vision/archive/refs/tags/v0.11.1.zip
unzip vision-0.11.1.zip
cd torchvision
export BUILD_VERSION=0.11.1
pip install -e .
1.2 升级cmake
sudo apt-get purge cmake -y # 移除历史cmake
export CMAKE_VER=3.23.1
export ARCH=aarch64
wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-linux-${ARCH}.sh
chmod +x cmake-${CMAKE_VER}-linux-${ARCH}.sh
sudo ./cmake-${CMAKE_VER}-linux-${ARCH}.sh --prefix=/usr --skip-license
cmake --version # 查看是否安装成功
1.3 设置环境变量
echo -e '\n# set environment variable for TensorRT' >> ~/.bashrc
echo 'export TENSORRT_DIR=/usr/include/aarch64-linux-gnu' >> ~/.bashrc
echo -e '\n# set environment variable for CUDA' >> ~/.bashrc
echo 'export PATH=$PATH:/usr/local/cuda/bin' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64' >> ~/.bashrc
source ~/.bashrc
1.4 编译安装mmcv【大约需要1.5小时】
git clone --branch v1.4.0 https://github.com/open-mmlab/mmcv.git
cd mmcv
MMCV_WITH_OPS=1 pip3 install -e .
1.5 安装onnx
生成的onnx是通过protobuf序列化的,所以需要安装protobuf。
安装protobuf
【注意,3.20.0太新,编译时会报错,所以将版本见到3.19.4】
git clone -b v3.19.4 https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make -j$(nproc) && make install
ldconfig
protoc --version
pip3 install protobuf==3.19.4
安装onnx
pip3 install cython onnx==1.11.0
1.6 安装必须的依赖
h5py
sudo apt-get install -y pkg-config libhdf5-100 libhdf5-dev
pip3 install pkgconfig
pip3 install versioned-hdf5
spdlog
sudo apt-get install -y libspdlog-dev
PPL
git clone https://github.com/openppl-public/ppl.cv.git
cd ppl.cv
export PPLCV_DIR=$(pwd)
echo -e '\n# set environment variable for ppl.cv' >> ~/.bashrc
echo "export PPLCV_DIR=$(pwd)" >> ~/.bashrc
./build.sh cuda
1.7 安装mmdeploy
安装mmdeploy
pip3 install pycuda
git clone --recursive https://github.com/open-mmlab/mmdeploy.git
cd mmdeploy
export MMDEPLOY_DIR=$(pwd)
mkdir -p build && cd build
cmake .. -DMMDEPLOY_TARGET_BACKENDS="trt"
make -j$(nproc) && make install
cd ${MMDEPLOY_DIR}
pip3 install -v -e . 或者 python3 -m pip install -v -e .
安装转换需要的C/C++推理SDK
mkdir -p build && cd build
cmake .. \
-DMMDEPLOY_BUILD_SDK=ON \
-DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
-DMMDEPLOY_BUILD_EXAMPLES=ON \
-DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \
-DMMDEPLOY_TARGET_BACKENDS="trt" \
-DMMDEPLOY_CODEBASES=all \
-Dpplcv_DIR=${PPLCV_DIR}/cuda-build/install/lib/cmake/ppl \
-DPYTHON_EXECUTABLE=/usr/bin/python3.6
make -j$(nproc) && make install
安装mmdetection
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip3 install -r requirements/build.txt
pip3 install -v -e . # or "python3 setup.py develop"
1.8 转换并测试模型
测试转化模型
python3 tools/deploy.py /data/models/spaie_132_5997/132_5997/0/model_deploy_config.py \
/data/models/spaie_132_5997/132_5997/0/mmdet_model_config.py \
/data/models/spaie_132_5997/132_5997/0/latest.pth \
/data/models/spaie_132_5997/132_5997/0/demo.jpg \
--test-img /model/demo.jpg \
--work-dir /model/convert \
--device cuda:0 \
--log-level INFO --dump-info
测试推理 C++ SDK
./object_detection cuda ${directory/to/the/converted/models} ${path/to/an/image}
- cuda为设备
- ${directory/to/the/converted/models} 转换后的模型路径【注意是路径不是文件】
- ${path/to/an/image}推理的图片文件路径
测试推理 Python SDK
export PYTHONPATH=$PYTHONPATH:"/root/george/mmdeploy/build/lib" # 设置环境变量
python3 -c "import mmdeploy_python;print(dir(mmdeploy_python))" # 测试是否可以引入mmdeploy_python
2 mmdeploy在jetson上安装时遇到的坑
问题1:安装过程中遇到的坑,我使用的是torch-1.7.0的版本,对应的torch版本可以直接到jetson zoo上下载,所有步骤都安装完成之后,编译mmdeploy时,出现下面的错误。
./csrc/mmdeploy/backend_ops/torchscript/optimizer/bind.cpp: In function ‘void mmdeploy::torch_jit::pybind11_init_ts_optimizer(pybind11::module&)’:
./csrc/mmdeploy/backend_ops/torchscript/optimizer/bind.cpp:36:13: error: ‘module_’ is not a member of ‘pybind11’
pybind11::module_ onnx_module = m.def_submodule("onnx");
^~~~~~~
./csrc/mmdeploy/backend_ops/torchscript/optimizer/bind.cpp:36:13: note: suggested alternative: ‘module’
pybind11::module_ onnx_module = m.def_submodule("onnx");
^~~~~~~
module
./csrc/mmdeploy/backend_ops/torchscript/optimizer/bind.cpp:37:3: error: ‘onnx_module’ was not declared in this scope
onnx_module.def("_jit_pass_merge_shape_concate", MergeShapeConcate, pybind11::arg("graph"));
尝试了重装onnx、onnxruntime、pybind11等都无法解决上述问题,最终通过升级torh1.7.0(version0.8.2)到torch1.10.0(version0.11.1),完美解决上述问题。
问题2:CMake Error at third_party/pybind11/tools/FindPythonLibsNew.cmake:133
出现上面的错误,是因为我之前使用conda安装了python3.7,收到了干扰,把conda卸载,同时把pybind11卸载,然后重新安装pybind11即可。
mmdeploy转engine后,使用C++ SDK或者Python SDK
问题1:mmdeploy转换后,使用python和C++的SDK,mask_rcnn的预测精度都非常低。修正前后预测结果对比如下:
![]() 修正前1
|
![]() 修正后1
|
---|---|
![]() 修正前2
|
相关推荐
技术文档
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式
|