FastDeploy之hello world(C++)

news2024/9/21 12:35:23

文章目录

  • 环境准备
  • 获取模型和测试图像
  • 准备CMakeList.txt
  • 准备C++推理代码
  • 编译可执行程序
  • 运行可执行程序
  • 可能遇到的问题
  • 参考

环境准备

  • CUDA >= 11.2
  • cuDNN >= 8.0
  • python >= 3.6
  • Linux(x64)

下载FastDeploy C++ SDK

wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-x64-gpu-1.0.6.tgz
tar -xzvf fastdeploy-linux-x64-gpu-1.0.6.tgz

获取模型和测试图像

wget https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz
wget https://bj.bcebos.com/fastdeploy/tests/test_det.jpg
tar xvf ppyoloe_crn_l_300e_coco.tgz

准备CMakeList.txt

cmake_minimum_required(VERSION 3.0.0)
project(ppyoloe VERSION 0.1.0)

include(CTest)
enable_testing()

include(/mnt/c/yp/lib/fastdeploy_cpp_sdk/FastDeploy.cmake)
# 添加FastDeploy依赖头文件
include_directories(${FASTDEPLOY_INCS})

# opencv
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(ppyoloe main.cpp)

target_link_libraries(ppyoloe ${FASTDEPLOY_LIBS} ${OpenCV_LIBS})

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

准备C++推理代码

main.cpp

#include <stdio.h>
#include <iostream>
#include <string>

#include "fastdeploy/vision.h"
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main() {
  std::string model_file = "/mnt/c/yp/fastDeploy/ppyoloe/ppyoloe_crn_l_300e_coco/model.pdmodel";
  std::string params_file = "/mnt/c/yp/fastDeploy/ppyoloe/ppyoloe_crn_l_300e_coco/model.pdiparams";
  std::string infer_cfg_file = "/mnt/c/yp/fastDeploy/ppyoloe/ppyoloe_crn_l_300e_coco/infer_cfg.yml";
  // 模型推理的配置信息
  fastdeploy::RuntimeOption option;
  auto model = fastdeploy::vision::detection::PPYOLOE(model_file, params_file, infer_cfg_file, option);

  assert(model.Initialized()); // 判断模型是否初始化成功

  cv::Mat im = cv::imread("/mnt/c/yp/fastDeploy/ppyoloe/test_det.jpg");
  fastdeploy::vision::DetectionResult result;
  
  assert(model.Predict(&im, &result)); // 判断是否预测成功

  std::cout << result.Str() << std::endl;

  cv::Mat vis_im = fastdeploy::vision::Visualize::VisDetection(im, result, 0.5);
  // 可视化结果保存到本地
  cv::imwrite("vis_result.jpg", vis_im);
  std::cout << "Visualized result save in vis_result.jpg" << std::endl;
  return 0;
}

编译可执行程序

mkdir build && cd build && cmake .. && make -j8

运行可执行程序

./ppyoloe 

PS:执行时如提示error while loading shared libraries: libxxx.so: cannot open shared object file: No such file…,说明程序执行时没有找到FastDeploy的库路径,可通过执行如下命令,将FastDeploy的库路径添加到环境变量之后,重新执行二进制程序。

source /Path/to/fastdeploy_cpp_sdk/fastdeploy_init.sh

在这里插入图片描述
在这里插入图片描述

可能遇到的问题

/usr/bin/ld: warning: libcudnn.so.8, needed by
/mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so,
not found (try using -rpath or -rpath-link)
/usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnGetErrorString@libcudnn.so.8' /usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnCreateTensorDescriptor@libcudnn.so.8’
/usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnDestroy@libcudnn.so.8' /usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnCreate@libcudnn.so.8’
/usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnSetStream@libcudnn.so.8' /usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnBatchNormalizationForwardTraining@libcudnn.so.8’
/usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnDestroyTensorDescriptor@libcudnn.so.8' /usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnSetTensorNdDescriptor@libcudnn.so.8’
/usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnSetTensor4dDescriptor@libcudnn.so.8' /usr/bin/ld: /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib/libnvinfer_plugin.so: undefined reference to cudnnDeriveBNTensorDescriptor@libcudnn.so.8’

解决方法
查找libcudnn.so.8 find / -name libcudnn.so.8
拷贝到/mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib中去
cp /xxx/ libcudnn.so.8 /mnt/c/yp/lib/fastdeploy_cpp_sdk/third_libs/install/tensorrt/lib

参考

https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/quick_start/models/cpp.md

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

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

相关文章

Unity 判断物体是否在阴影中

文章目录 前言效果视频原理步骤源码总结&#x1f4a2;&#x1f4a2;版权声明 前言 如题所示&#xff0c;今天接到的需求是&#xff1a;Unity 判断物体是否在阴影中 效果视频 链接&#xff1a;https://www.bilibili.com/video/BV1wc411N7KF/?vd_source75bbe3d71b926e90fdfca6…

关于argparse和sys.argv的补充

1: sys.argv参考&#xff1a;(10条消息) Python 中 sys.argv 用法详解_ys.journey的博客-CSDN博客 从命令行输入的参数会被保存到sys.argv 2: argparse: 参考&#xff1a;python命令行解析模块argparse用法小结 - 朴素贝叶斯 - 博客园 (cnblogs.com) 除此以外&#xff1a; …

SpringCloud概述

前言 什么是微服务&#xff1f; ​ 微服务是一种面向服务的架构(SOA)风格&#xff0c;其中&#xff0c;应用程序被构建为多个不同的小型服务的集合而不是单个应用程序。与单个程序不同的是&#xff0c;微服务让你可以同时运行多个独立的应用程序&#xff0c;而这些独立的应用…

js文件上传和下载的进度处理

发起请求的方式有Axios、XMLHttpRequest、Fetch Axios Axios下载进度演示-onDownloadProgress <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEe…

【zmq】zguide和cppzmq及windows测试程序

官方的zguide还是有更新的c++例子zguide构建的工程没更新 官方文档说支持3.2   Updated and revised for ZeroMQ/3.2 (older text for ZeroMQ/2.2 still available).libzmq 本身是c++实现的 我现在的libzmq版本是4.3.4,头文件#include <zmq.hpp>

STM32开发(十九)STM32F103 数据手册 —— 低功耗模式解析

文章目录 低功耗介绍stm32 供电框图低功耗模式睡眠模式停止模式待机模式低功耗模式汇总低功耗介绍 系统复位或上电复位后,微控制器进入运行模式。在运行模式下,CPU通过HCLK提供时钟,并执行程序代码。 系统提供多种低功耗模式,可以在CPU不需要运行时进入低功耗模式节省功耗…

一看就会的React入门

目录 简介 入门案例 直接创建 函数式创建 类实例创建 组件实例三大核心属性 state 代码演示 props refs 简介 1). Facebook开源的一个js库 2). 一个用来动态构建用户界面的js库 3). React的特点 Declarative(声明式编码) Component-Based(组件化编码) Le…

生物医学神经网络的方向感

文章目录 A Sense of Direction in Biomedical Neural Networks摘要本文方法Rotation Mechanism 实验结果 A Sense of Direction in Biomedical Neural Networks 摘要 本文描述了一种使模型不仅知道强度&#xff0c;还知道特征方向和尺度等特性的方法。当分析包含诸如血管或纤…

PID单环控制(位置环)

今天我们来聊一聊pid如果控制轮子转动位置 前期准备调试过程 前期准备 需要准备的几个条件&#xff1a; 1.获取实时编码器的计数值 2.写好pid控制算法的函数 3.设定好时间多久执行一次pid计算&#xff0c;并设置限幅输出。 4.多久执行一次pid输出 接下来我们看看这几个部分的…

Vue(ajax、插槽)

一、ajax请求 1. 实现ajax请求方式&#xff1a; xhr&#xff1a;原生 jquery封装xhr axios&#xff1a;属于promise fetch 2. axios实现步骤&#xff1a; 1.首先安装axios //安装 npm i axios 2. 在本地准备两个服务端 //student const express require(express) const a…

一级缓存和二级缓存问题

介绍 MyBatis 中的缓存&#xff0c;主要分为一级缓存和二级缓存。 一级缓存是 SqlSession 级别的缓存&#xff0c;也叫本地缓存。当执行一个 SqlSession 的查询时&#xff0c;查询到的结果会被保存在 SqlSession 的缓存中。同一个 SqlSession 内执行相同的 SQL 语句&#xff…

C语言CRC-16 CCITT-FALSE格式校验函数

C语言CRC-16 CCITT-FALSE格式校验函数 CRC-16校验产生2个字节长度的数据校验码&#xff0c;通过计算得到的校验码和获得的校验码比较&#xff0c;用于验证获得的数据的正确性。基本的CRC-16校验算法实现&#xff0c;参考&#xff1a; C语言标准CRC-16校验函数。 不同应用规范…

【MySQL】浅谈事务

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 谈起 “事务”&#xff0c;可能大家都会在心中出现一个大大的 &#xff1f;&#xff0c;博主的理解——事务就是解决 MySql数据库在应对多线程环境下针对同一存储空间的数据修改引起的数据安全问题的一种机制…

JMeter入门配置

目录 场景&#xff1a; 环境及工具 &#xff1a; JMeter中文配置&#xff1a; 配置登录接口&#xff1a; 配置响应结果&#xff1a; 配置json提取器 测试json提取器 配置Beanshell后置处理器&#xff1a; http请求右键-->添加---->后置处理器--->Beanshell后置处理…

pta(浙大第四版)五道经典练习题②

目录 ①、递归正序输出整数 ②、递归逆序整数并返回 ③、递归实现十进制转二进制 ④、英语单词排序&#xff08;​编辑&#xff09; ⑤、输出月份英文名 ①、递归正序输出整数 题述&#xff1a;给一个正整数n&#xff0c;请利用递归按顺序输出它的每位数&#xff0c;输出一…

【NovelAI 小说SD批量生成 文生图/视频克隆】环境配置和使用方法

【样品】《谜影之夜》文生图全自动版SD一键成片 操作步骤&环境配置地址&#xff1a; 【NovelAI】月产10000全自动批量原创小说短视频支持文生图和视频克隆 该文章面向购买脚本的付费用户&#xff0c;提供所有问题以及解决办法。使用 notepad 打开对应的文件即可&#xff0c…

深度学习部署(Pytorch+windows)

目录 NVIDA GPU驱动 NVIDA GPU驱动 查看电脑显卡类型&#xff08;电脑——属性——设备管理器——显示适配器&#xff09; 进入NVIDA官方网站&#xff08;官方驱动 | NVIDIA&#xff09;下载对应驱动&#xff0c; 接下来默认安装即可。 安装完成之后&#xff0c;查看自己的…

GitHub项目免费教你提示工程,全中文教学,小白也能懂

转载自 | 量子位 量子位 | 公众号 QbitAI 这个GitHub开源项目&#xff0c;打算手把手教你成为一名提示工程师。 理论与实例结合&#xff0c;浅显易懂&#xff0c;可以免费学习&#xff0c;关键还是中文&#xff01; 如果觉得GitHub界面看起来不方便&#xff0c;还可以到搭建…

文心领航走进大模型时代,从Q1财报看百度价值重估机遇

大模型风头不减&#xff0c;真正的“灵魂选手”在此刻交出了一季度成绩单&#xff0c;让市场看到了“AI巨头”的本色。 北京时间5月16日美股盘前&#xff0c;百度发布了2023Q1财报。财报显示&#xff0c;其营收和利润双双超市场预期&#xff0c;整体经营质量大幅度提高。在经济…

基于卷积的图像分类识别(四):GoogLeNet (V1~V4 Xception)

本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileNet&#xff0c…