使用python的fastdeploy库部署yolov5lite模型非常简单,只需要pip命令安装即可,但其运行速度慢,不适合在生产环境中使用,因此本文使用C++ fastdeploy库部署yolov5lite模型。

运行官方demo

clone官方源码

1
git clone https://github.com/PaddlePaddle/FastDeploy.git

进入yolov5lite example目录

1
cd ./FastDeploy/examples/vison/detection/yolov5lite

下载预编译Fastdeploy库,需要在根据自己的硬件平台下载相应版本

1
2
3
4
mkdir build
cd build
wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-aarch64-1.0.0.tgz
tar xvf fastdeploy-linux-aarch64-1.0.0.tgz

编译demo程序

1
2
cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-linux-aarch64-1.0.0.tgz
make -j

下载官方提供的模型与文件(也可以自己准备)

1
2
wget https://bj.bcebos.com/paddlehub/fastdeploy/v5Lite-g-sim-640.onnx
wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg

运行程序

1
./infer_demo v5Lite-g-sim-640.onnx 000000014439.jpg 0

如果运行程序后出现了这个错误:

1
./infer_demo: error while loading shared libraries: libonnxruntime.so.1.12.0: cannot open shared object file: No such file or directory

通过执行如下命令,将FastDeploy的库路径添加到环境变量之后,重新执行二进制程序。

1
source /home/user/FastDeploy/build/compiled_fastdeploy_sdk/fastdeploy_init.sh

编译Fastdeploy

官方提供的Fastdeploy库自带的opencv库无法支持Video的读取,以及imshow等可视化界面功能。若要使用这些功能,则需要自行编译,编译时通过-DOPENCV_DIRECTORY来指定环境中的OpenCV。

使用包管理器下载Opencv库,opencv库的地址一般在/usr/lib/aarch64-linux-gnu/cmake/opencv4下,需要根据自己的硬件平台切换。

1
sudo apt install libopencv-dev

开始编译,本文只需要实现视觉功能,更多编译参数参考官方文档

1
2
3
4
5
6
cmake .. -DENABLE_ORT_BACKEND=ON \
-DCMAKE_INSTALL_PREFIX=${PWD}/compiled_fastdeploy_sdk \
-DENABLE_VISION=ON \
-DOPENCV_DIRECTORY=/usr/lib/aarch64-linux-gnu/cmake/opencv4
make -j1
make install

根据编译出的sdk位置编译demo程序

1
2
cmake .. -DFASTDEPLOY_INSTALL_DIR=/home/user/FastDeploy/build/compiled_fastdeploy_sdk/
make -j

踩坑点

官方提供的demo程序只支持以640结尾的模型,即只支持640输入,因为model类的默认size为640,若要改用320模型,需要在代码模型对象中进行修改:

1
2
auto model = fastdeploy::vision::detection::YOLOv5Lite(model_file);
model.size = {320, 320}; #添加这一行