paddle

news2024/11/25 4:26:38

paddle预测库

git config --global http.postBuffer 1048576000
git clone --recursive https://github.com/PaddlePaddle/Paddle.git

修改CMakeLists.txt

mkdir build
cd build

cmake  -DWITH_CONTRIB=OFF -DWITH_MKL=OFF -DWITH_MKLDNN=OFF  -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DWITH_INFERENCE_API_TEST=OFF -DON_INFER=ON -DWITH_PYTHON=ON -DWITH_GPU=ON -DWITH_AVX=OFF -DCUDA_ARCH_NAME=Auto ..


安装依赖

apt-get install -y patchelf

 

1.Fast

1.1)编译GPU版本的

选项支持平台描述
ENABLE_ORT_BACKENDLinux(x64)/windows(x64)默认OFF,是否集成ONNX Runtime后端
ENABLE_PADDLE_BACKENDLinux(x64)/window(x64)默认OFF,是否集成Paddle Inference后端
ENABLE_TRT_BACKENDLinux(x64)/window(x64)默认OFF,是否集成TensorRT后端
ENABLE_OPENVINO_BACKENDLinux(x64)/window(x64)默认OFF,是否集成OpenVINO后端(仅支持CPU)
ENABLE_VISIONLinux(x64)/window(x64)默认OFF,是否集成视觉模型
ENABLE_TEXTLinux(x64)/window(x64)默认OFF,是否集成文本模型
CUDA_DIRECTORYLinux(x64)/window(x64)默认/usr/local/cuda,要求CUDA>=11.2
TRT_DIRECTORYLinux(x64)/window(x64)默认为空,要求TensorRT>=8.4,例如/Download/TensorRT-8.5

第三个库的配置(可选,如果没有定义以下选项,预构建的第三个库将在构建 FastDeploy 时自动下载)。

选项描述
ORT_DIRECTORY当 ENABLE_ORT_BACKEND=ON 时,使用 ORT_DIRECTORY 指定您自己的 ONNX Runtime 库路径。
OPENCV_DIRECTORY当 ENABLE_VISION=ON 时,使用 OPENCV_DIRECTORY 指定您自己的 OpenCV 库路径。
OPENVINO_DIRECTORY当 ENABLE_OPENVINO_BACKEND=ON 时,使用 OPENVINO_DIRECTORY 指定您自己的 OpenVINO 库路径。

编译时Linux需要

  • gcc/g++ >= 5.4 (8.2 is recommended)
  • cmake >= 3.18.0
  • cuda >= 11.2
  • cudnn >= 8.2

建议手动安装OpenCV库,并定义-DOPENCV_DIRECTORY设置OpenCV库的路径(如果没有定义标志,构建FastDeploy时会自动下载一个预建的OpenCV库,但预建的OpenCV不支持读取视频文件或其他功能,例如imshow

 apt-get install libopencv-dev
git clone https://github.com/PaddlePaddle/FastDeploy.git
cd FastDeploy
mkdir buildgpu && cd buildgpu
cmake .. -DENABLE_ORT_BACKEND=ON \
         -DENABLE_PADDLE_BACKEND=ON \
         -DENABLE_OPENVINO_BACKEND=OFF \
         -DENABLE_TRT_BACKEND=ON \
         -DWITH_GPU=ON \
         -DTRT_DIRECTORY=/TensorRT-8.4.1.5 \
         -DCUDA_DIRECTORY=/usr/local/cuda \
         -DCMAKE_INSTALL_PREFIX=${PWD}/compiled_fastdeploy_sdk \
         -DENABLE_VISION=ON \
         -DOPENCV_DIRECTORY=/usr/lib/x86_64-linux-gnu/cmake/opencv4
         

make -j12
make install


DTRT_DIRECTORY的目录在于找到下面的Include和lib目录,我的tensorrt最初是安装的deb包,

系统中头文件在/usr/include/x86_64-linux-gnu,依赖库在/usr/lib/x86_64-linux-gnu

注意:

但在CMakeLists.txt中,需要用到tensorrt的include和lib

 include_directories(${TRT_DIRECTORY}/include)
  find_library(TRT_INFER_LIB nvinfer ${TRT_DIRECTORY}/lib)
  find_library(TRT_ONNX_LIB nvonnxparser ${TRT_DIRECTORY}/lib)
  find_library(TRT_PLUGIN_LIB nvinfer_plugin ${TRT_DIRECTORY}/lib)
  list(APPEND DEPEND_LIBS ${TRT_INFER_LIB} ${TRT_ONNX_LIB} ${TRT_PLUGIN_LIB})

可以在https://developer.nvidia.com/nvidia-tensorrt-8x-download下载tensorrt的tar包

否则,会报如下错误

编译报如下错误

 此处我下载了tensorrt的tar包

 

测试demo

创建fastdeploy_test,在该目录下创建3rdparty,将/baidu_paddle/FastDeploy/buildgpu/compiled_fastdeploy_sdk/include和/baidu_paddle/FastDeploy/buildgpu/compiled_fastdeploy_sdk/lib拷贝到3rdparty目录下

注意:不知道为啥直接拷贝/baidu_paddle/FastDeploy/buildgpu/compiled_fastdeploy_sdk/lib下的so无法找到某些backend,使用

cp -r /baidu_paddle/FastDeploy/buildgpu/libfastdeploy.so* ./

/baidu_paddle/FastDeploy/buildgpu

cp -r /usr/include/opencv4/opencv2/  /baidu_paddle/fastdeploy_test/3rdparty/include

1)获取模型和测试图像

wget https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz
wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg
tar xvf ppyoloe_crn_l_300e_coco.tgz

2)创建infer_demo.cc,内容如下

#include "fastdeploy/vision.h"
int main() {
  std::string model_file = "/baidu_paddle/fastdeplot_test/ppyoloe_crn_l_300e_coco/model.pdmodel";
  std::string params_file = "/baidu_paddle/fastdeplot_test/ppyoloe_crn_l_300e_coco/model.pdiparams";
  std::string infer_cfg_file = "/baidu_paddle/fastdeplot_test/ppyoloe_crn_l_300e_coco/infer_cfg.yml";
  auto option = fastdeploy::RuntimeOption();
  option.UseGpu();
  auto model = fastdeploy::vision::detection::PPYOLOE(model_file, params_file,
                                                      infer_cfg_file, option);
  if (!model.Initialized()) {
    std::cerr << "Failed to initialize." << std::endl;
    return 0;
  }

  cv::Mat im = cv::imread("../000000014439.jpg");

  fastdeploy::vision::DetectionResult res;
  if (!model.Predict(im, &res)) {
    std::cerr << "Failed to predict." << std::endl;
    return 0;
  }

  std::cout << res.Str() << std::endl;
  cv::Mat vis_im = fastdeploy::vision::VisDetection(im, res, 0.5);
  cv::imwrite("vis_result.jpg", vis_im);
  std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
  return 0;
}
r

option.UseCpu()或option.UseGpu()此处似乎没有影响

3)编写CMakeLists.txt内容如下

cmake_minimum_required(VERSION 3.20)
SET(CMAKE_CXX_STANDARD 17)

project(test)
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/3rdparty/include)
set(LIB_PATH ${CMAKE_SOURCE_DIR}/3rdparty/lib)

include_directories(${INCLUDE_PATH})
link_directories(${LIB_PATH})

add_executable(
  infer_demo
  infer_demo.cc
)
target_link_libraries(
  infer_demo
  fastdeploy
  opencv_calib3d opencv_core opencv_dnn opencv_features2d opencv_flann opencv_highgui opencv_imgcodecs opencv_imgproc opencv_ml opencv_objdetect opencv_photo opencv_stitching opencv_video opencv_videoio
)

4)编译运行

mkdir build && cd build
cmake .. && make
./infer_demo

1.2)编译CPU版本

mkdir buildcpu && cd buildcpu
cmake .. -DENABLE_ORT_BACKEND=ON \
         -DENABLE_PADDLE_BACKEND=ON \
         -DENABLE_OPENVINO_BACKEND=ON \
         -DCMAKE_INSTALL_PREFIX=${PWD}/compiled_fastdeploy_sdk \
         -DENABLE_VISION=ON \
         -DOPENCV_DIRECTORY=/usr/lib/x86_64-linux-gnu/cmake/opencv4 

make -j12
make install

-DWITH_TESTING=ON目的在于开启单元测试

在make -j12时遇到了如下错误

解决方法如下:

##检查python
root@hpcinf02:/baidu_paddle/FastDeploy# type python python2 python3
bash: type: python: not found
bash: type: python2: not found
python3 is hashed (/usr/bin/python3)

发现存在python3,要做的就是将python链接到python3


在.bashrc文件中创建一个永久别名
alias python='python3'
这样,运行Python命令,系统运行python3
多数情况下都起作用,除非某些程序期望运行/usr/bin/python.现在,你可以在 ​​/usr/bin/python​​ 和 ​​/usr/bin/python3​​ 之间建立符号链接,但对于 Ubuntu 用户来说,存在一个更简单的选择。

对于 Ubuntu 20.04 和更高版本,如果你安装了 ​​python-is-python3​​ 软件包,你有一个软件包可以自动完成所有链接创建。这也是原始错误信息所提示的。
apt-get install python-is-python3

然后重新编译,成功后头文件和lib文件在/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk目录下

 

添加环境变量

export LD_LIBRARY_PATH=/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk/third_libs/install/paddle2onnx/lib:/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk/third_libs/install/opencv/lib:/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk/third_libs/install/onnxruntime/lib:/baidu_paddle/FastDeploy/buildcpu:${LD_LIBRARY_PATH}

测试demo

创建fastdeploy_test,在该目录下创建3rdparty,将/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk/include和/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk/lib拷贝到3rdparty目录下

注意:不知道为啥直接拷贝/baidu_paddle/FastDeploy/buildcpu/compiled_fastdeploy_sdk/lib下的so无法找到某些backend,使用

cp -r /baidu_paddle/FastDeploy/buildcpu/libfastdeploy.so* ./

/baidu_paddle/FastDeploy/buildcpu

cp -r /usr/include/opencv4/opencv2/  /baidu_paddle/fastdeploy_test/3rdparty/include

1)获取模型和测试图像

wget https://bj.bcebos.com/paddlehub/fastdeploy/ppyoloe_crn_l_300e_coco.tgz
wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg
tar xvf ppyoloe_crn_l_300e_coco.tgz

2)创建infer_demo.cc,内容如下

#include "fastdeploy/vision.h"
int main() {
  std::string model_file = "/baidu_paddle/fastdeplot_test/ppyoloe_crn_l_300e_coco/model.pdmodel";
  std::string params_file = "/baidu_paddle/fastdeplot_test/ppyoloe_crn_l_300e_coco/model.pdiparams";
  std::string infer_cfg_file = "/baidu_paddle/fastdeplot_test/ppyoloe_crn_l_300e_coco/infer_cfg.yml";
  auto option = fastdeploy::RuntimeOption();
  option.UseCpu();
  auto model = fastdeploy::vision::detection::PPYOLOE(model_file, params_file,
                                                      infer_cfg_file, option);
  if (!model.Initialized()) {
    std::cerr << "Failed to initialize." << std::endl;
    return 0;
  }

  cv::Mat im = cv::imread("../000000014439.jpg");

  fastdeploy::vision::DetectionResult res;
  if (!model.Predict(im, &res)) {
    std::cerr << "Failed to predict." << std::endl;
    return 0;
  }

  std::cout << res.Str() << std::endl;
  cv::Mat vis_im = fastdeploy::vision::VisDetection(im, res, 0.5);
  cv::imwrite("vis_result.jpg", vis_im);
  std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl;
  return 0;
}
r

option.UseCpu()或option.UseGpu()此处似乎没有影响

3)编写CMakeLists.txt内容如下

cmake_minimum_required(VERSION 3.20)
SET(CMAKE_CXX_STANDARD 17)

project(test)
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/3rdparty/include)
set(LIB_PATH ${CMAKE_SOURCE_DIR}/3rdparty/lib)

include_directories(${INCLUDE_PATH})
link_directories(${LIB_PATH})

add_executable(
  infer_demo
  infer_demo.cc
)
target_link_libraries(
  infer_demo
  fastdeploy
  opencv_calib3d opencv_core opencv_dnn opencv_features2d opencv_flann opencv_highgui opencv_imgcodecs opencv_imgproc opencv_ml opencv_objdetect opencv_photo opencv_stitching opencv_video opencv_videoio
)

4)编译运行

mkdir build && cd build
cmake .. && make
./infer_demo

 

 

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

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

相关文章

DBCO-PEG-Ferrocene,Ferrocene-PEG-DBCO,DBCO偶联修饰二茂铁

DBCO-PEG-Ferrocene &#xff0c;Ferrocene-PEG-DBCO&#xff0c;二苯并环辛炔-聚乙二醇-二茂铁&#xff0c;DBCO偶联修饰二茂铁产品规格&#xff1a; 1.CAS号&#xff1a;N/A 2.分子量MV&#xff1a;1000、2000、3400、5000、10000、20000等可按需进行定制 3.包装规格&#xf…

数据结构与算法_空间复杂度

同时间复杂度一样&#xff0c;空间复杂度也是数学的函数表达式。 空间复杂度不是程序占用了多少 bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是运行的过程中临时的、额外的变量的个数。 空间复杂度计算规则基本跟实践 复杂度类似&#xff0c…

Flutter For App——一个简单的豆瓣APP

一个简单的豆瓣APP效果视频功能简述功能第三方库接口简述底部导航栏效果图实现初始化BottomNavigationBarItembottomNavigationBar切换页面导致bottomNavigationBar子页面重绘Top250榜单效果图实现Widget树FutureBuilder异常ListView上拉加载电影详情效果图实现高斯模糊网络数据…

设计模式原则 - 单一职责原则(一)

单一职责原则一 官方定义基本介绍二 案例演示普通方式实现解决方案解决方案一解决方案案例分析解决方案二解决方案案例分析案例总结三 注意事项&细节四 如何遵守单一职责原则&#xff1f;一 官方定义 单一职责原则&#xff08;Single Responsibility Principle, SRP&#x…

用Spark写入Mysql的特别注意事项

相信有部分刚入门的小伙伴对于spark写入Mysql的过程不太熟悉。特意写一篇文章讲一下这个注意事项&#xff0c;以免“上大当” 我们先看一个小伙伴写的一段spark写入mysql的代码 public static void trans(SparkSession spark,String pro_table, String pro_url, String pro_dr…

微服务框架 SpringCloud微服务架构 服务异步通讯 52 惰性队列 52.1 消息堆积问题

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 服务异步通讯 文章目录微服务框架服务异步通讯52 惰性队列52.1 消息堆积问题52.1.1 消息堆积问题52 惰性队列 52.1 消息堆积问题 52.1.1 消…

11基于主从博弈理论的共享储能与综合能源微网优化运行研究(MATLAB程序)

参考文献&#xff1a; 基于主从博弈理论的共享储能与综合能源微网优化运行研究——帅轩越&#xff08;2022电网技术&#xff09; 主要内容; 代码主要做的是基于主从博弈理论的共享储能与综合能源微网优化运行研究&#xff0c;首先介绍了系统运行框架&#xff0c;分析了系统内…

一文了解各种高精度室内定位技术

在消费需求和创新技术驱动下&#xff0c;可穿戴设备和物联网产品的发展驶入了快车道&#xff0c;GNSS定位功能在无人驾驶、智能设备、资产追踪等日趋智能化中广泛应用&#xff0c;而随着万物互联时代的到临&#xff0c;物联网技术围绕人员、资产的室内位置服务需求也愈加强烈。…

vue使用

目录 路由History模式打包页面空白 项目放根目录 -- 配置 项目放二级目录 -- 配置 路由History模式打包页面空白 项目放根目录 -- 配置 router > index.js 修改 base const router new VueRouter({mode: history,// base: process.env.BASE_URL,base: /,routes, }) ngi…

【Redis集群专题】「集群技术三部曲」介绍一下常用的Redis集群机制方案的原理和指南(入门篇)

集群化的方案 Redis的Sentinel解决了主从复制故障不能自动迁移的问题&#xff0c;但是主节点的写性能和存储能力依然是受到了Redis单机容量有限的限制&#xff0c;所以使用Redis集群去解决这个问题&#xff0c;将Redis的数据根据一定的规则分配到多台机器。 Redis集群方案 R…

【git】

目录第一章 简介 1&#xff0e;1 版本控制 1.1.1 本地版本控制1.1.2 集中式版本控制1.1.3 分布式版本控制 第二章 基础篇 2.1 下载代码 2.2 更新代码 2.2.1 清空本地未被跟踪内容2.2.2更新代码使之与库上同步 2.3 修改 2.3.1 Vim2.3.2 Sed2.3.3 Awk 2.4 查看状态 2.5 保存代…

通俗易懂的java设计模式(3)-观察者设计模式

什么是观察者设计模式 观察者模式主要应用在对象存在一对多关系的情况下&#xff0c;那么如果一个对象&#xff0c;依赖于另一个对象&#xff0c;那个被依赖的对象一旦被修改&#xff0c;依赖于他的那个对象也会被观察者所告知。 观察者模式又被称作为发布-订阅模式&#xff0c…

2022 UUCTF

目录 <1> Web (1) websign(禁用js绕过) (2) ez_rce(?>闭合 rce) (3) ez_unser(引用传递) (4) ez_upload(apache后缀解析漏洞) (5) ezsql(union注入) (6) funmd5(代码审计 %0a绕过preg_replace) (7) phonecode(伪随机数漏洞) (8) ezpop(反序列化字符串逃逸) …

[附源码]Nodejs计算机毕业设计教师业绩考核和职称评审系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

[附源码]Nodejs计算机毕业设计教务管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

燃尽图——项目管理中的必备工具

燃尽图可以使项目经理和团队可以快速查看其工作负荷的进度以及项目按计划完成的情况。 在项目管理中&#xff0c;通过燃尽图不仅能了解项目进度&#xff0c;还能分析出项目中问题&#xff0c;及时进行风险控制。 燃尽图是用于表示剩余工作量的工作图表&#xff0c;由横轴&…

WebDAV之葫芦儿•派盘+RS文件管理器

RS文件管理器 支持WebDAV方式连接葫芦儿派盘。 手机本地文件,网盘、共享文件,如何集中管理?推荐您使用Rs文件管理器,还支持WebDAV等功能。 Rs文件管理器是一款功能强大的手机文件管理器。有强大的本地和网络文件管理功能,让您更方便的管理你的手机、平板、电脑和网盘。…

MOMO CODE SEC INSPECTOR-Java项目静态代码安全审计idea插件工具

工具地址 https://github.com/momosecurity/momo-code-sec-inspector-java安装 1、确认IDE版本&#xff1a;Intellij IDEA ( Community / Ultimate ) > 2018.32、IDEA插件市场搜索"immomo"安装。使用方式 被动&#xff1a;装完愉快的打代码&#xff0c;一边它会提…

AI作画的背后是怎么一步步实现的?一文详解AI作画算法原理+性能评测

前言 “AI作画依赖于多模态预训练&#xff0c;实际上各类作画AI模型早已存在&#xff0c;之所以近期作品质量提升很多&#xff0c;可能是因为以前预训练没有受到重视&#xff0c;还达不到媲美人类的程度&#xff0c;但随着数据量、训练量的增多&#xff0c;最终达到了现在呈现…

无约束优化:线搜索最速下降

文章目录无约束优化&#xff1a;线搜索最速下降无约束优化问题线搜索最速下降精确线搜索非精确线搜索Armijo准则Goldstein准则Wolfe准则参考文献无约束优化&#xff1a;线搜索最速下降 无约束优化问题 线搜索最速下降 对于光滑函数f(x)f(x)f(x)&#xff0c;沿着函数负梯度方向…