FastDeploy部署(C++ Win10)

news2024/11/24 22:45:01

参考链接:FastDeploy C++部署保姆级教程

FastDeploy是百度为了解决AI部署落地难题,发布的新一代面向产业实践的推理部署工具。它旨在为AI开发者提供模型部署最优解,具备全场景、简单易用、极致高效三大特点。项目地址:FastDeploy项目地址

部署环境:

  • 系统:Windows10
  • VS版本:Visual Studio 2017
  • CUDA:11.6
  • cuDNN:8.9.0

Win10环境下FastDeploy C++部署:

  1. 下载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

  1. 解压C++ SDK预编译库

对下载的fastdeploy-win-x64-gpu-1.0.2.zip进行解压,我的解压路径:D:\FastDeploy,解压后文件内容如下:
在这里插入图片描述
注意:参考链接中,作者说解压路径中最好不要有空格等特殊字符,原因是后续使用fastdeploy_init.bat抽取.dll文件时找不到路径。

  1. 数据准备

下载模型:https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz
用于测试的图像:
在这里插入图片描述

  1. 开发代码

创建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读取的图像文件名要和测试图像的文件名一致。

  1. 配置编译链接环境

可以使用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. 编译生成解决方案

    (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文件夹下
在这里插入图片描述

  1. 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文件夹内容如下:
在这里插入图片描述

  1. 项目运行
    双击release下的FastDeploy_Test.exe文件,等待程序执行,完成后检测结果将出现在release文件夹。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/913048.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊调制解调器

目录 1.什么是调制解调器 2.调制解调器的工作原理 3.调制解调器的作用 4.调制解调器未来发展 1.什么是调制解调器 调制解调器(Modem)是一种用于在数字设备和模拟设备之间进行数据传输的设备。调制解调器将数字数据转换为模拟信号进行传输,…

ArcGIS:如何给栅格数据创建属性表

问题描述:使用ArcMap加载栅格数据后发现没有属性表,如下图,如何创建属性表 解决方法: 方法一: 鼠标右键点击栅格数据,然后选择【属性】,接着点击【符号系统】–【唯一值】,选择计算…

如何提升IT业务安全性?收藏起来照着做!

UPS作为一种关键设备,能够在电力中断时为电子设备提供临时的电力支持,从而防止数据丢失、设备损坏以及生产中断。因此,UPS系统的正常运行对于持续的监控和管理至关重要。 UPS监控不仅仅是关于监视UPS系统的运行状态,更是一项综合性…

微信开发之一键发布群公告的技术实现

简要描述: 设置群公告 请求URL: http://域名地址/setChatRoomAnnouncement 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必…

深度学习入门(三):卷积神经网络(CNN)

引入 给定一张图片,计算机需要模型判断图里的东西是什么? (car、truck、airplane、ship、horse) 一、卷积神经网络整体架构 CONV:卷积计算层,线性乘积求和RELU:激励层,激活函数P…

css选择器,选择div标签里的span标签,选最后一个span

CSS3 :last-child 选择器 | 菜鸟教程 CSS 6种选择器(超详细)_scss 选择器_想念的博客-CSDN博客

人大金仓(kingbase8)安装与初始化超详细教程

人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址 - 博客文章 - 任霏的个人博客网站 人大金仓Kingbase8安装与基本使用_码农茶叶蛋的博客-CSDN博客 80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等) 禁用防火墙 systemctl stop fi…

uni-app的nvue文件国际化不翻译问题解决办法

官网上的nvue国际化方式介绍的实在是太简单了&#xff0c;记得要引入下message文件&#xff0c;还要用uni.setLocale()设置下&#xff0c;但是不管我怎么引入都会报错。 所以我直接把文件拿过来了&#xff0c;通过对象的方式去取。 <!-- index.nvue 文件 --> <view&g…

Spring复习:(55)ApplicationContext中BeanFactoryPostProcessor是怎么添加到容器的?

容器创建时会调用AbstractApplicationContext的refresh方法&#xff0c;其中会调用invokeBeanFactoryPostProcessor方法&#xff0c;如下图 invokeBeanFactoryPostProcessors代码如下&#xff1a; 其中调用的PostProcessorRegistrationDelegate的invokeBeanFactoryPostProcess…

【Linux】线程篇Ⅰ:线程和task_struct 执行流的理解、相关接口命令、线程异常、线程的私有和共享

线程Ⅰ 一、概念0. 线程1. 线程的优缺点2. 页框和页帧3. 页表的设计、虚拟地址的解析方式、以及块为什么设计成 4kb4. 对进程的一些整体理解 二、一些接口 和 命令1. ps -aL - - 查看执行流2. pthread_create 函数&#xff1a;创建线程3. ptread_join 线程等待4. ptread_exit 线…

5G随身wifi如何选择?简单分类一下

最近5g随身wifi越来越多了&#xff0c;价格也一直走低&#xff0c;根据我的观察和总结&#xff0c;5g随身wifi可以分为这几档&#xff1a;&#xff08;普遍来说&#xff09; 1&#xff0c;紫光udx710基带芯片&#xff08;也叫v510&#xff09; 代表产品&#xff1a;r106&#x…

Sulfo-CY5 NH2荧光光谱特性-激发波长与发射波长【星戈瑞】

​欢迎来到星戈瑞荧光stargraydye&#xff01;小编带您盘点&#xff1a;Sulfo-CY5 NH2荧光光谱特性-激发波长与发射波长 Sulfo-CY5 NH2是一种荧光染料&#xff0c;其荧光特性使其在生物标记、细胞成像和其他荧光应用中得到诸多应用。荧光是一种发光现象&#xff0c;当Sulfo-CY…

Web容器简介

容器与组件 Java EE&#xff08;Java Platform Enterprise Edition&#xff09;是一种企业级的Java版本。 Java EE是SUN公司提出来的企业版Java开发中间件&#xff0c;它主要用于企业级互联网系统的搭建。 Java EE的本质是一种容器加组件技术&#xff0c;这句话里包含了两个…

1.2亿成都市城市安全风险综合监测预警平台建设项目

导读&#xff1a;原文《1.2亿&#xff01;成都市城市安全风险综合监测预警平台建设项目WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 部分页面&#xff1a; …

牛股预测器V1.0实战(工银瑞信金融科技挑战赛排名第二)

全代码和数据关注公众号《三个篱笆三个班》免费提供&#xff01;一键可跑&#xff0c;每日选股。 对AI炒股感兴趣的小伙伴可加WX群&#xff1a; 赛题概述&#xff1a; 基于人工智能的量化选股投资策略建模挑战 任务描述&#xff1a; 通过数学和计算机技术分析市场数据&…

随身wifi刷超频版Debian系统教程-随身wifi折腾入门

本人折腾Debian的一些记录&#xff0c;有需要的可以参考一下。本文所用到的命令&#xff0c;请先确保已获得root权限执行。 1.更新和升级系统中已安装的软件包 apt-get update && apt-get upgrade &&; apt-get update --fix-missing •apt-get update&#xff…

解锁人工智能项目开发的关键:Python 基础库详解与进阶学习

“ Python 是一种通用的编程语言&#xff0c;广泛用于人工智能项目开发。它有很多可用的库&#xff0c;可以帮助开发人员构建各种人工智能应用程序&#xff0c;如自然语言处理和机器学习。在本文中&#xff0c;我们将介绍一些最流行的 Python 库&#xff0c;以及它们在人工智能…

【机密计算实践】支持 Intel SGX 的 LibOS 项目介绍(二)

续上一篇 【机密计算实践】支持 Intel SGX 的 LibOS 项目介绍(一) 四、Mystikos Mystikos 是一个运行库和一组工具,用于在硬件可信执行环境(TEE)中运行 Linux 应用程序。当前版本支持英特尔 SGX,而未来版本可能支持其他 TEE。 4.1 目标 通过使用硬件 TEE,在…

校园后勤如何实现数字化管理?的修报修系统有哪些产品优势?

数字化时代背景下&#xff0c;校园后勤管理同样需要向智能化方向迈进。随着科技的飞速发展&#xff0c;我们应该充分利用数字化技术和智能化设备来提升校园后勤管理的效率和质量。通过引入可视化、数字化的流程管控系统&#xff0c;我们可以实现在线报修、快速响应处理、全流程…