mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-05 16:48:03 +08:00
C++部署
准备预测库
参考编译文档FastDeploy编译进行编译,或直接使用如下预编译库
编译库 | 平台 | 支持设备 | 说明 |
---|---|---|---|
fastdeploy-linux-x64-0.0.3.tgz | Linux | CPU | 集成ONNXRuntime |
fastdeploy-linux-x64-gpu-0.0.3.tgz | Linux | CPU/GPU | 集成ONNXRuntime, TensorRT |
fastdeploy-osx-x86_64-0.0.3.tgz | Mac OSX Intel CPU | CPU | 集成ONNXRuntime |
fastdeploy-osx-arm64-0.0.3.tgz | Mac OSX M1 CPU | CPU | 集成ONNXRuntime |
使用
FastDeploy提供了多种领域内的模型,可快速完成模型的部署,本文档以YOLOv5在Linux上的部署为例
# 下载库并解压
wget https://bj.bcebos.com/paddle2onnx/fastdeploy/fastdeploy-linux-x64-0.0.3.tgz
tar xvf fastdeploy-linux-x64-0.0.3.tgz
# 下载模型和测试图片
wget https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.onnx
wget https://raw.githubusercontent.com/ultralytics/yolov5/master/data/images/bus.jpg
YOLOv5预测代码
准备如下yolov5.cc
代码
#include "fastdeploy/vision.h"
int main() {
typedef vis = fastdeploy::vision;
auto model = vis::ultralytics::YOLOv5("yolov5s.onnx"); // 加载模型
if (!model.Initialized()) { // 判断模型是否初始化成功
std::cerr << "Initialize failed." << std::endl;
return -1;
}
cv::Mat im = cv::imread("bus.jpg"); // 读入图片
vis::DetectionResult res;
if (!model.Predict(&im, &res)) { // 预测图片
std::cerr << "Prediction failed." << std::endl;
return -1;
}
std::cout << res.Str() << std::endl; // 输出检测结果
return 0;
}
编译代码
编译前先完成CMakeLists.txt的开发,在yolov5.cc
同级目录创建CMakeLists.txt
文件,内容如下
PROJECT(yolov5_demo C CXX)
CMAKE_MINIMUM_REQUIRED (VERSION 3.16)
# 在低版本ABI环境中,可通过如下代码进行兼容性编译
# add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
# 在下面指定下载解压后的fastdeploy库路径
set(FASTDEPLOY_INSTALL_DIR /ssd1/download/fastdeploy-linux-x64-0.0.3/)
include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake)
# 添加FastDeploy依赖头文件
include_directories(${FASTDEPLOY_INCS})
add_executable(yolov5_demo ${PROJECT_SOURCE_DIR}/yolov5.cc)
message(${FASTDEPLOY_LIBS})
# 添加FastDeploy库依赖
target_link_libraries(yolov5_demo ${FASTDEPLOY_LIBS})
~
此时当前目录结构如下所示
- demo_directory
|___fastdeploy-linux-x64-0.0.3/ # 预测库解压
|___yolov5.cc # 示例代码
|___CMakeLists.txt # cmake文件
|___yolov5s.onnx # 模型文件
|___bus.jpeg # 测试图片
执行如下命令进行编译
cmake .
make -j
编译后可执行二进制即为当前目录下的yolov5_demo
,使用如下命令执行
./yolov5_demo
即会加载模型进行推理,得到结果如下
DetectionResult: [xmin, ymin, xmax, ymax, score, label_id]
223.395126,403.948669, 345.337189, 867.339050, 0.856906, 0
668.301758,400.781372, 808.441772, 882.534973, 0.829716, 0
50.210758,398.571289, 243.123383, 905.016846, 0.805375, 0
23.768217,214.979355, 802.627869, 778.840820, 0.756311, 5
0.737200,552.281006, 78.617218, 890.945007, 0.363471, 0