编译安装飞桨fastdeploy@FreeBSD(失败)

news2025/1/4 18:27:28

FastDeploy是一款全场景易用灵活极致高效的AI推理部署工具, 支持云边端部署。提供超过 🔥160+ TextVisionSpeech跨模态模型📦开箱即用的部署体验,并实现🔚端到端的推理性能优化。包括 物体检测、字符识别(OCR)、人脸、人像扣图、多目标跟踪系统、NLP、Stable Diffusion文图生成、TTS 等几十种任务场景,满足开发者多场景、多硬件、多平台的产业部署需求。官网:GitHub - PaddlePaddle/FastDeploy: ⚡️An Easy-to-use and Fast Deep Learning Model Deployment Toolkit for ☁️Cloud 📱Mobile and 📹Edge. Including Image, Video, Text and Audio 20+ main stream scenarios and 150+ SOTA models with end-to-end optimization, multi-platform and multi-framework support.

遗憾的是在FreeBSD下没有装成。

发现fastdeploy需要opencv-python,所以花了很大的精力来安装,但是也没有装上。opencv可以用Pillow代替,但是后面还是碰到没法解决的问题。

编译安装opencv-python

编译安装没完成,估计还是用pkg install opencv-python装成的。

需要安装opencv-pyhton

安装opencv-python

pip install opencv-python,但是装不上,所以选择源代码编译安装

先安装pip install scikit-build

然后下载opencv-python源代码

可以用git clone https://github.com/opencv/opencv-python

也可以在pip安装的时候拿到下载链接,然后wget下载

https://mirror.baidu.com/pypi/packages/25/72/da7c69a3542071bf1e8f65336721b8b2659194425438d988f79bc14ed9cc/opencv-python-4.9.0.80.tar.gz

解压源代码:

tar -xzvf opencv-python-4.9.0.80.tar.gz

设置编译多线程:

set MAX_JOBS=8
export MAX_JOBS=8

开始编译

进入 opencv-python-4.9.0.80 目录并编译

cd  opencv-python-4.9.0.80
python setup.py install 

编译失败,见后面的记录。

安装FastDeploy

标准流程是cpu安装:pip install numpy opencv-python fastdeploy-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html

我们使用命令

pip install fastdeploy-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html

这样跳过了opencv部分,先把fastdeploy装好了。

推理

Python 推理示例

准备模型和图片

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

 python推理

# GPU/TensorRT部署参考 examples/vision/detection/paddledetection/python
import cv2
import fastdeploy.vision as vision

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")
im = cv2.imread("000000014439.jpg")
result = model.predict(im)
print(result)

vis_im = vision.vis_detection(im, result, score_threshold=0.5)
cv2.imwrite("vis_image.jpg", vis_im)

opencv-python这里实在装不上, 用Pillow代替,但是报错:

# GPU/TensorRT部署参考 examples/vision/detection/paddledetection/python
# import cv2
from PIL import Image
import fastdeploy.vision as vision

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")
# im = cv2.imread("000000014439.jpg")
im =   Image.open("000000014439.jpg")
result = model.predict(im)
print(result)

vis_im = vision.vis_detection(im, result, score_threshold=0.5)
# cv2.imwrite("vis_image.jpg", vis_im)
vis_im.save("vis_image.jpg")

结论:python推理失败

C++推理

预编译环境

Release版本

平台文件说明
Linux x64fastdeploy-linux-x64-1.0.7.tgzg++ 8.2编译产出
Windows x64fastdeploy-win-x64-1.0.7.zipVisual Studio 16 2019编译产出
Mac OSX x64fastdeploy-osx-x86_64-1.0.7.tgzclang++ 10.0.0编译产出

没有FreeBSD的,所以我们要自己编译。

进入FastDeploy目录进行编译:

cd FastDeploy
mkdri build && cd build 
cmake ..
make 

可以根据自己cpu的核数x,加上-j 2*x参数 ,如4核cpu  make -j 8

老规矩,编译好之后加入PATH路径,而不是放入/usr/bin目录,以免污染整个系统。

发现目录结构远比想像的要复杂,还是用make install 安装吧 。切换root账户,

cmake .. -DCMAKE_INSTALL_PREFIX=/home/xxx/work/fd
make -j 8 
make install 

最终使用的语句是在root账户下,在FastDeploy目录执行:

mkdir build
cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/home/skywalk/work/fd -DWITH_CAPI=ON
make -j 8
make install # 第一次运行报错,所以把下面的patch库挪到install
mkdir third_libs/install
cp -rf third_libs/patchelf/ third_libs/install/
make install

这里参数漏掉一个D ,加上之后编译不过去,也是就是DWITH_CAPI=ON编译不过去,ENABLE_PADDLE_BACKEND和ENABLE_ORT_BACKEND也都过不去。

把参数全删掉可以过去,但那样就没有用了啊!

结论:编译环境失败

准备图片

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

推理

源码

// GPU/TensorRT部署参考 examples/vision/detection/paddledetection/cpp
#include "fastdeploy/vision.h"

int main(int argc, char* argv[]) {
  namespace vision = fastdeploy::vision;
  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");
  auto im = cv::imread("000000014439.jpg");

  vision::DetectionResult res;
  model.Predict(im, &res);

  auto vis_im = vision::VisDetection(im, res, 0.5);
  cv::imwrite("vis_image.jpg", vis_im);
  return 0;
}

把文件保存为infer_demo.c, 用gcc编译报错。

到FastDeploy/examples/runtime/cpp 目录,编译

mkdir build && cd build
cmake .. -DFASTDEPLOY_INSTALL_DIR=/home/skywalk/work/fd
make -j 8

(在没有任何参数的编译出来的环境下)编译出来一个runtime_demo文件,执行直接崩了。

结论

目前fastdeploy在FreeBSD没有调通。当然在linux下是极其好用的。

调试

pip install opencv-python报错

搞不定,下载源代码手动编译安装python setup.py install

编译时报错 No module named 'skbuild'

  File "/usr/home/skywalk/work/opencv-python-headless-4.9.0.80/setup.py", line 10, in <module>
    from skbuild import cmaker, setup
ModuleNotFoundError: No module named 'skbuild'

pip install scikit-build

编译安装时报错

[ 31%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/misc/caffe/opencv-caffe.pb.cc.o
In file included from /usr/home/skywalk/work/opencv-python-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.cc:4:
In file included from /usr/home/skywalk/work/opencv-python-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:10:
/usr/local/include/google/protobuf/port_def.inc:210:1: error: static_assert failed due to requirement '201103L >= 201402L' "Protobuf only supports C++14 and newer."
static_assert(PROTOBUF_CPLUSPLUS_MIN(201402L), "Protobuf only supports C++14 and newer.");
^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/home/skywalk/work/opencv-python-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.cc:4:
/usr/home/skywalk/work/opencv-python-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:17:2: error: This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
 ^
/usr/home/skywalk/work/opencv-python-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:18:2: error: incompatible with your Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
  pip install protobuf==3.20试试

不行,用opencv-python4.4.

到openv目录 手工cmke .. make -j 报错

/usr/local/include/absl/strings/internal/has_absl_stringify.h:46:8: error: no template named 'enable_if_t' in namespace 'std'; did you mean simply 'enable_if_t'?
    T, std::enable_if_t<std::is_void<decltype(AbslStringify(
       ^~~~~
[  2%] Built target gen_opencv_python_source
/usr/local/include/absl/meta/type_traits.h:656:1: note: 'enable_if_t' declared here
using enable_if_t = typename std::enable_if<B, T>::type;
^
[  2%] Building CXX object 3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/generated_message_table_driven_lite.cc.o
In file included from /home/skywalk/work/opencv-python-4.4.0.42/opencv/3rdparty/protobuf/src/google/protobuf/arena.cc:31:
In file included from /usr/local/include/google/protobuf/arena.h:53:
In file included from /usr/local/include/google/protobuf/arena_align.h:85:
/usr/local/include/google/protobuf/port_def.inc:210:1: error: static_assert failed due to requirement '201103L >= 201402L' "Protobuf only supports C++14 and newer."
static_assert(PROTOBUF_CPLUSPLUS_MIN(201402L), "Protobuf only supports C++14 and newer.");

尝试升级gcc:pkg upgrade gcc,但是也只升级到gcc13 还是不到14

尝试使用opencv-python3.4.17版本

报错

[ 45%] Building CXX object modules/dnn/CMakeFiles/opencv_dnn.dir/misc/caffe/opencv-caffe.pb.cc.o
In file included from /usr/home/skywalk/work/opencv-python-3.4.17.63/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.cc:4:
/usr/home/skywalk/work/opencv-python-3.4.17.63/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:17:2: error: This file was generated by an older version of protoc which is
#error This file was generated by an older version of protoc which is
 ^
/usr/home/skywalk/work/opencv-python-3.4.17.63/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:18:2: error: incompatible with your Protocol Buffer headers.  Please
#error incompatible with your Protocol Buffer headers.  Please
 ^
/usr/home/skywalk/work/opencv-python-3.4.17.63/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:19:2: error: regenerate this file with a newer version of protoc.
#error regenerate this file with a newer version of protoc.

搞不定。

不过可喜的是,

import cv2没有报错,也就是opencv可以用啊!

后来测试,发现不行

编译opencv-python-headless报错

In file included from /usr/home/skywalk/work/opencv-python-headless-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.cc:4:
In file included from /usr/home/skywalk/work/opencv-python-headless-4.9.0.80/opencv/modules/dnn/misc/caffe/opencv-caffe.pb.h:10:
/usr/local/include/google/protobuf/port_def.inc:210:1: error: static_assert failed due to requirement '201103L >= 201402L' "Protobuf only supports C++14 and newer."
static_assert(PROTOBUF_CPLUSPLUS_MIN(201402L), "Protobuf only supports C++14 and newer.");
^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在root账户下fastdeploy c编译,make install 报错

-- Installing: /root/work/fd/include/fastdeploy/utils/path.h
CMake Error at cmake_install.cmake:81 (file):
  file INSTALL cannot find
  "/home/skywalk/github/FastDeploy/build/third_libs/install": No such file or
  directory.

尝试

cd ~/github/FastDeploy/build/third_libs

mkdir install
cp -rf patchelf/ install/
然后再make install

c推理例子编译报错:

skywalk@x250:~/github/FastDeploy/examples/runtime/cpp % gcc infer_demo.cc
In file included from /usr/local/include/fastdeploy/vision/visualize/visualize.h:17,
                 from /usr/local/include/fastdeploy/vision.h:78,
                 from infer_demo.cc:2:
/usr/local/include/fastdeploy/vision/common/result.h:16:10: fatal error: opencv2/core/core.hpp: No such file or directory
   16 | #include "opencv2/core/core.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
skywalk@x250:~/github/FastDeploy/examples/runtime/cpp %

examples/runtime/cpp目录编译生成的demo 文件runtime_demo执行报错:

./runtime_demo
[ERROR] fastdeploy/runtime/runtime.cc(105)::AutoSelectBackend    The candiate backends for ModelFormat::PADDLE & Device::CPU are [ Backend::PDINFER ,Backend::PDLITE ,Backend::ORT ,Backend::OPENVINO ], but both of them have not been compiled with current FastDeploy yet.
Assertion failed: (runtime.Init(runtime_option)), function main, file /home/skywalk/github/FastDeploy/examples/runtime/cpp/infer_paddle_paddle_inference.cc, line 37.
Abort (core dumped)

fastdeploy编译报错'opencv2/imgcodecs.hpp' file not found

type.cc.o
/home/skywalk/github/FastDeploy/c_api/fastdeploy_capi/core/fd_type.cc:17:10: fatal error: 'opencv2/imgcodecs.hpp' file not found
#include <opencv2/imgcodecs.hpp>
         ^~~~~~~~~~~~~~~~~~~~~~~

用Pillow替代opencv推理报错

python inf.py
Traceback (most recent call last):
  File "/usr/home/skywalk/py310/lib/python3.10/site-packages/fastdeploy_python-0.0.0-py3.10-freebsd-13.2-RELEASE-amd64.egg/fastdeploy/c_lib_wrap.py", line 164, in <module>
    from .libs.fastdeploy_main import *
ImportError: Shared object "libdl.so.2" not found, required by "libonnxruntime.so.1.12.0"

During handling of the above exception, another exception occurred:

先搁置。

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

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

相关文章

铁威马TOS 6.0 Beta全球公测进行中,快来体验一下吧!

铁威马TOS 6.0 Beta已经正式上线啦 大家体验了吗? 今天和大家分享TOS 6.0的更新指南 01TOS 6 Beta更新指南 为了更好的体验TOS 6 请细阅以下指南 敲重点&#xff01; 本次更新仅适用于TOS 5.1.123 或以后的版本&#xff1b;如您的设备不符合更新条件&#xff0c;请勿更新…

2024年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;道路运输企业主要负责人证模拟考试题库是根据道路运输企业主要负责人最新版教材&#…

速看!2024广州国际服务机器人产业博览会

2024广州国际服务机器人产业博览会 时间&#xff1a;2024年12月19-21日 地点&#xff1a;中国进出口商品交易会琶洲展馆 近年来我国服务机器人智能化、个性化水平快速提升&#xff0c;使其需求领域不断扩展&#xff0c;销售额不断增长。尤其是疫情带动服务机器人需求增长&am…

To 有缘看到的,To 同处困境无助中的,To myself

To 有缘看到的&#xff0c;To 同处困境无助中的&#xff0c;To myself To 有缘看到的朋友&#xff1a; 我们生而为人&#xff0c;而不是什么神仙妖怪&#xff0c;自然逃不脱凡尘种种不易。我和你们都一样&#xff0c;甚至可以说我的条件并不好&#xff0c;我也不是什么智者&…

(执行上下文作用域链)前端八股文修炼Day4

一 作用域作用域链 作用域&#xff08;Scope&#xff09;是指程序中定义变量的区域&#xff0c;作用域规定了在这个区域内变量的可访问性。在 JavaScript 中&#xff0c;作用域可以分为全局作用域和局部作用域。 全局作用域&#xff1a;在代码中任何地方都可以访问的作用域&am…

FlyControls 是 THREE.js 中用于实现飞行控制的类,它用于控制摄像机在三维空间中的飞行。

demo演示地址 FlyControls 是 THREE.js 中用于实现飞行控制的类&#xff0c;它用于控制摄像机在三维空间中的飞行。 入参&#xff1a; object&#xff1a;摄像机对象&#xff0c;即要控制的摄像机。domElement&#xff1a;用于接收用户输入事件的 HTML 元素&#xff0c;通常…

某音乐歌曲链接接口加密算法刨析

如可逆向&#xff1a;某抑云音乐歌曲链接接口逆向-CSDN博客 补环境方式&#xff1a;某抑云音乐歌曲链接接口逆向之补环境-CSDN博客 问题由来 上述方式中【特指补环境】当我们将环境补齐 Javascript 【V8环境】去运行构建出来得值是可以使用得&#xff0c; 但使用Python去调起使…

SpringBoot+ElasticSearch实现文档内容抽取、高亮分词、全文检索

需求 产品希望我们这边能够实现用户上传PDF、WORD、TXT之内得文本内容&#xff0c;然后用户可以根据附件名称或文件内容模糊查询文件信息&#xff0c;并可以在线查看文件内容。 一、环境 项目开发环境&#xff1a; 后台管理系统springbootmybatis_plusmysqles 搜索引擎&#…

2024.3.26学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p273-p285 包 包的本质实际上就是创建不同的文件夹/目录来保存类文件 包的三大作用 区分相同名字的类 当类很多时&#xff0c;可以很好的管理类 控制访问范围 包的基本语法 package com.xx…

函数进阶-Python

师从黑马程序员 函数中多个返回值的接收 def test_return():return 1,"hello",3x,y,ztest_return() print(x) print(y) print(z) 多种参数的使用 函数参数种类 位置参数 关键字参数 def user_info(name,age,gender):print(f"姓名是{name},年龄是:{age},性别是…

nandgame中的控制单元(Control Unit)

关卡说明的翻译&#xff1a; 控制单元除了ALU指令之外&#xff0c;计算机还应支持数据指令。在数据指令中&#xff0c;指令值直接写入A寄存器。创建一个控制单元&#xff0c;根据指令I的高位执行数据指令或ALU指令&#xff1a;位 15 0 数据指令 1 ALU指令ALU指令 对于ALU指令&…

Linux虚拟机的安装部署--尚硅谷笔记

part1 VMware的使用 学习目标 1 熟悉VMware软件的使用 2 可以熟练为虚拟计算机安装Linux操作系统 3 能独立解决安装过程中的常见问题 第一节 VMware的作用 VMware软件的作用 ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传] 第一步&#xff0c;在W…

【最新!红外小目标检测算法HCFNet】

文章目录 摘要1 引言2 相关工作2.1 传统方法2.2 深度学习方法 3 方法3.1 PPA3.2 维度感知选择性整合模块3.3 多稀释通道细化器模块3.4 损失函数设计 4 实验4.1 数据集与评估指标4.2 实现细节4.3 消融和对比 5 结论 论文&#xff1a;HCF-Net: Hierarchical Context Fusion Netwo…

监控API的指标

监控服务器已经是常态了&#xff0c;但是监控API的表现是啥意思呢&#xff1f;还有监控指标&#xff1f;今天就来看看如何监控API。 正如监控应用程序以确保高质量性能一样&#xff0c;也必须监控API。 API是应用程序相互通信的管道。更具体地说&#xff0c;API提供了一种方法…

Day42:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

目录 PHP-MYSQL-Web组成架构 PHP-MYSQL-SQL常规查询 手工注入 PHP-MYSQL-SQL跨库查询 跨库注入 PHP-MYSQL-SQL文件读写 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-常规查询 2、PHP-MYSQL-SQL注入-跨库查询 3、PHP-MYSQL-SQL注入-文件读写 MYSQL注入&#xff1a;&#xff…

ROM-IP

1.原理 通过添加数据文件&#xff0c;使ROM看起来不是易失性存储器&#xff0c; 产生256个数据&#xff0c;每个数据的位宽是8 如果前面为x&#xff0c;后面就是x256-1 2.单端口ROM配置 FPGA内部没有非易失性存储器。调用的ROM和RAM都是用RAM来生成的 3.双端口ROM配置 使用第一…

《操作系统导论》第10章读书笔记:多处理器调度(高级)

《操作系统导论》第10章读书笔记&#xff1a;多处理器调度(高级) —— 杭州 2024-03-26 夜 文章目录 《操作系统导论》第10章读书笔记&#xff1a;多处理器调度(高级)1.背景&#xff1a;多处理器架构2.别忘了同步3.最后一个问题&#xff1a;缓存亲和度4.单队列调度和多队列调度…

GDAl 之绘制栅格图像的大致直方图和精准直方图(8)

gdal的绘制大致直方图是仅查看概览或者抽样像素的一个子集 import os from osgeo import gdal import matplotlib.pyplot as plt import numpy as np# Dont forget to change directory. os.chdir(rD:\DeskTop\learn_py_must\Learn_GDAL\osgeopy-data\osgeopy-data\Switzerlan…

Obsidian+PicGo+Gitee搭建免费图床

之前使用PicGoGitee配合Typora&#xff0c;后来因为换电脑Typora管理笔记不方便&#xff0c;换到Obsidian笔记&#xff0c;此处记录重新搭建图床的坑与经验。 主要参考# picGogitee搭建Obsidian图床&#xff0c;实现高效写作&#xff01; 1 下载安装PicGo 下载链接https://mo…

Nginx(Docker 安装的nginx)配置域名SSL证书

1.首先确保Linux环境上已经安装了docker&#xff08;可参考VMware使用和Linux安装Docker_wmware直接部署linux和安装docker后-CSDN博客 2.通过docker 安装nginx&#xff08;可参考Linux 环境安装Nginx—源码和Dokcer-CSDN博客&#xff09; 3.安装SSL证书 3.1 在宿主机中创建…