参考链接:FastDeploy C++部署保姆级教程
FastDeploy是百度为了解决AI部署落地难题,发布的新一代面向产业实践的推理部署工具。它旨在为AI开发者提供模型部署最优解,具备全场景、简单易用、极致高效三大特点。项目地址:FastDeploy项目地址
部署环境:
- 系统:Windows10
- VS版本:Visual Studio 2017
- CUDA:11.6
- cuDNN:8.9.0
Win10环境下FastDeploy C++部署:
- 下载C++ SDK预编译库,下载地址:C++ SDK预编译库
GPU部署官方环境要求:
- CUDA >= 11.2
- cuDNN >= 8.0
下载FastDeploy的GPU版本,下载地址(1.0.2版本):https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-win-x64-gpu-1.0.2.zip
- 解压C++ SDK预编译库
对下载的fastdeploy-win-x64-gpu-1.0.2.zip进行解压,我的解压路径:D:\FastDeploy,解压后文件内容如下:
注意:参考链接中,作者说解压路径中最好不要有空格等特殊字符,原因是后续使用fastdeploy_init.bat抽取.dll文件时找不到路径。
- 数据准备
下载模型:https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz
用于测试的图像:
- 开发代码
创建1个文件夹FastDeploy_Test(路径最好为全英文),在文件夹下创建文件FastDeploy_Test.cpp,可使用记事本或VS打开,打开后复制以下内容至FastDeploy_Test.cpp:
// 包含vision.h文件
#include "fastdeploy/vision.h"
// main函数程序主入口
int main(int argc, char* argv[]) {
// 声明命名空间
namespace vision = fastdeploy::vision;
// opencv读取推理图片
auto im = cv::imread("000000014439.jpg");
// 加载部署模型
auto model = vision::detection::PPYOLOE("ppyoloe_crn_l_300e_coco/model.pdmodel",
"ppyoloe_crn_l_300e_coco/model.pdiparams",
"ppyoloe_crn_l_300e_coco/infer_cfg.yml");
// 声明检测结果
vision::DetectionResult res;
// 模型预测获取检测结果
model.Predict(&im, &res);
// 设置阈值过滤检测结果
auto vis_im = vision::VisDetection(im, res, 0.5);
// opencv将检测结果保存为图像
cv::imwrite("vis_image.jpg", vis_im);
// 程序结束
return 0;
}
注意:imread读取的图像文件名要和测试图像的文件名一致。
- 配置编译链接环境
可以使用CMakeLists.txt配置或visual studio新建项目手动配置包含目录和库目录(试了一下,确实不如CMakeLists.txt配置来的方便)。在FastDeploy_Test.cpp的同级目录下,新建CMakeLists.txt,打开后复制以下内容:
PROJECT(FastDeploy_Test C CXX)
CMAKE_MINIMUM_REQUIRED (VERSION 3.10)
# 指定下载解压后的fastdeploy库路径
option(FASTDEPLOY_INSTALL_DIR "Path of downloaded fastdeploy sdk.")
include(${FASTDEPLOY_INSTALL_DIR}/FastDeploy.cmake)
# 添加FastDeploy依赖头文件
include_directories(${FASTDEPLOY_INCS})
add_executable(FastDeploy_Test ${PROJECT_SOURCE_DIR}/FastDeploy_Test.cpp)
target_link_libraries(FastDeploy_Test ${FASTDEPLOY_LIBS})
-
编译生成解决方案
(1)打开x64 Native Tools Command Prompt for VS 2017命令工具
点击开始菜单,找到x64 Native Tools Command Prompt for VS 2017命令工具(也可能叫做 “适用于 VS 2017 的 x64 本机工具命令提示”),并使用cd命令切换到项目目录FastDeploy_Test
(2)编译FastDeploy_Test
创建build文件夹并cd到该文件夹:
mkdir build && cd build
编译项目FastDeploy_Test:
cmake .. -G "Visual Studio 15 2017" -A x64 -DFASTDEPLOY_INSTALL_DIR="D:\fastdeploy\fastdeploy-win-x64-gpu-1.0.2" -DCUDA_DIRECTORY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6"
注意:DFASTDEPLOY_INSTALL_DIR指定你的FastDeploy预编译库目录,DCUDA_DIRECTORY指定你的cuda目录。
运行结果如下:
build文件夹内容如下:
(3)生成exe文件:
msbuild FastDeploy_Test.sln /m:4 /p:Configuration=Release /p:Platform=x64
运行结果:
build文件夹内容更新:
生成的exe文件在release文件夹中,但是现在还无法运行,因为没有模型和数据。
(4)拷贝模型和数据
将ppyoloe_crn_l_300e_coco文件夹(推理模型)和000000014439.jpg文件(推理图片)拷贝到release文件夹下
-
dll文件抽取
(1)查看dll文件
进入FastDeploy预编译类目录,执行以下命令
fastdeploy_init.bat show “D:/fastdeploy/fastdeploy-win-x64-gpu-1.0.2”
(2)抽取项目所需dll文件到指定目录
进入FastDeploy预编译类目录,执行命令
fastdeploy_init.bat install "D:/FastDeploy/fastdeploy-win-x64-gpu-1.0.2" "D:/FastDeploy/FastDeploy_Test/build/Release"
点击 “y” 后,再按下任意键后开始抽取dll文件,完成后release文件夹内容如下:
- 项目运行
双击release下的FastDeploy_Test.exe文件,等待程序执行,完成后检测结果将出现在release文件夹。