mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-06 17:17:14 +08:00
first commit
This commit is contained in:
110
docs/cpp/README.md
Normal file
110
docs/cpp/README.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# C++部署
|
||||
|
||||
## 准备预测库
|
||||
|
||||
参考编译文档[FastDeploy编译](../compile/README.md)进行编译,或直接使用如下预编译库
|
||||
|
||||
| 编译库 | 平台 | 支持设备 | 说明 |
|
||||
|:------ | :---- | :------- | :----- |
|
||||
|[fastdeploy-linux-x64-0.0.3.tgz](https://bj.bcebos.com/paddle2onnx/fastdeploy/fastdeploy-linux-x64-0.0.3.tgz) | Linux | CPU | 集成ONNXRuntime |
|
||||
|[fastdeploy-linux-x64-gpu-0.0.3.tgz](https://bj.bcebos.com/paddle2onnx/fastdeploy/fastdeploy-linux-x64-gpu-0.0.3.tgz) | Linux | CPU/GPU | 集成ONNXRuntime, TensorRT |
|
||||
|[fastdeploy-osx-x86_64-0.0.3.tgz](https://bj.bcebos.com/paddle2onnx/fastdeploy/fastdeploy-osx-x86_64-0.0.3.tgz) | Mac OSX Intel CPU | CPU | 集成ONNXRuntime |
|
||||
|[fastdeploy-osx-arm64-0.0.3.tgz](https://bj.bcebos.com/paddle2onnx/fastdeploy/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
|
||||
```
|
Reference in New Issue
Block a user