当前位置: 首页 > news >正文

AI学习笔记三十一:YOLOv8 C++编译测试(OpenVINO)

若该文为原创文章,转载请注明原文出处。

在RK平台使用的是RKNN,但想要实现通用平台的yolov8部署

所以在ubuntu 20.04上编译了openvino,使用c++编译测试。

一、环境

根据yolov11提供的readme,需要符合的版本

二、安装 OpenVINO

1.1、创建或指定安装目录

建立一个 /opt/intel 目录用于安装,也可以指定其他目录

mkdir yolov8_cpp

1.2、下载 OpenVINO 安装包

通过以下命令下载并解压 x86_64 平台的安装包

wget https://storage.openvinotoolkit.org/repositories/openvino/packages/2023.1/linux/l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64.tgztar -xvzf l_openvino_toolkit_*.tgz
​
cd yolov8_cppmv l_openvino_toolkit_ubuntu20_2023.1.0.12185.47b736f63ed_x86_64 openvino_2023.1.0

也可从 openvino-linux 手动下载并解压。

1.3、创建软链接(非必须)

为了方便,可以通过以下命令创建一个软链接,但不是必须的

sudo ln -s openvino_2023.1.0 openvino_2023

1.4、配置环境变量

source /home/yifeng/yolov8_cpp/openvino_2023/setupvars.sh

以上命令只在当前终端有效,当每打开一个新终端时,需要重新执行一遍。

如果需要配置永久有效,可将上述命令添加到 ~/.bashrc 文件的最后一行,如果系统中有多个版本的openvino,不推荐这样做。

出错:

Unsupported Python version 3.5. Please install one of Python 3.9 - 3.13 (64-bit) from https://www.python.org/downloads/
升级python版本
https://blog.csdn.net/u012507643/article/details/124803753
​
# 我也使用的wget ,我下载到了home中​
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
​
# 在home中解压​
tar -zxf Python-3.9.0.tgz
​
# 进入python3.9​
cd Python-3.9.0
​
# 编译文件  时间大概有1-3分钟​
./configure --prefix=/usr/local/python3
​
# 编译好后,会有另外一个提示,让run ./configure xxx​
./configure --enable-optimizations
​
# 安装​
make && make install
​
# 结束
​
查看安装目录
which python3.9
​
修改Ubuntu默认python为python3.9.0
1、接着需要做的是,删除/usr/bin目录下的python link文件
sudo rm -rf /usr/bin/python
​
2、删除后再建立新的链接关系:这里python3.9需要改成你自己的目录。
sudo ln -s /usr/local/bin/python3.9  /usr/bin/python

在次配置环境OpenVINO正常

三、YOLOv8 C++ 编译测试

3.1、编译安装OpenCV

参考 ubuntu18.04 编译安装opencv3.4.8

ubuntu18.04 编译安装opencv3.4.8 - 知乎

1、下载源码

地址:Releases - OpenCV

wget -o opencv4.8.zip https://github.com/opencv/opencv/archive/refs/tags/4.8.0.zip

2、编译安装

参照 Install OpenCV-Python in Ubuntu,通过源码编译安装opencv,不需要支持python

sudo apt install -y g++ cmake make git libgtk2.0-dev pkg-config
unzip opencv-4.8.0.zip
cd opencv-4.8.0
mkdir build
cd build
cmake ..
make -j8
​
# 安装编译好的文件到系统相应目录
sudo make install

默认位置安装,将会安装系统如下目录

img

bin目录为可执行文件

lib是库文件,主要是以libopencv开头的so文件、文件夹:pkgconfig、python2.x、python3.x(pkgconfig里存放的是opencv.pc);

share里就两个文件夹:OpenCV和licenses

3.2、下载 ultralytics 源码

ultralytics 下载源码,并解压,文件目录如下

3.3、Cmake升级

ubuntu16.04 Cmake版本升级3.12_shengji cmake 3.12-CSDN博客

下载:Index of /files/v3.12

cd /downloadstar -zxvf cmake-3.12.0-Linux-x86_64.tar.gz
​
配置环境变量
vim ~/.bashrc
​
在文件末尾添加cmake3.12的路径;
​
export PATH=/home/yifeng/yolov8_cpp/cmake-3.12.0-Linux-x86_64/bin:$PATH
​
source ~/.bashrc
​
可以通过cmake --version查看版本



3.4、修改 CMakeLists.txt

修改 /home/yifeng/yolov8_cpp/ultralytics-main/examples/YOLOv8-CPP-Inference 目录中的 CMakeLists.txt 文件,将其中的 openvino 目录改为本机安装的目录,如

3.5、编译可执行文件

通过以下命令编译 detect 可执行文件

cd ultralytics-main/examples/YOLOv8-OpenVINO-CPP-Inference
mkdir build
cd build
cmake ..
make

执行成功后,将在build目录生成detect可执行文件

出错:

sudo apt remove libtbb-dev

sudo apt install libpugixml-dev  # Ubuntu/Debian

3.6、准备 OpenVINO 模型(win11下导出)

导出openvino模型需要yolo环境,先安装ultralytics

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
​
pip install onnx>=1.12.0 -i https://pypi.tuna.tsinghua.edu.cn/simple 
​
pip install openvino-dev>=2023.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

在 ultralytics 环境中通过以下命令导出 openvino 模型

yolo export model=yolov8n.pt imgsz=640 format=openvino

执行成功后,将生成 yolov8n_openvino_model 目录,里面是转换成功的openvino模型

3.7、detect 测试

将上述转换成功的 yolov8n_openvino_model 目录复制到YOLOv8-OpenVINO-CPP-Inference 目录,同时准备一张测试图片,执行以下命令

./detect ../yolov8n_openvino_model/yolov8n.xml ../yolov8n_openvino_model/bus.jpg

执行该命令时发生 GLIBCXX_3.4.30 找不到的错误

./detect: /home/csp/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/intel/openvino_2025.0.0/runtime/lib/intel64/libopenvino.so.2500)

解决方法是通过以下命令将 libstdc++.so.6 所在目录加入到环境变量中

# 查找 libstdc++.so.6 所在目录
find /usr -name "libstdc++.so.6"
# 输出 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
​
# 将目录添加到环境变量
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
​
# 查看环境变量
echo $LD_LIBRARY_PATH
​
# 输出以下内容,说明添加成功
# /usr/lib/x86_64-linux-gnu:/opt/intel/openvino_2025.0.0/runtime/3rdparty/tbb/lib:/opt/intel/openvino_2025.0.0/runtime/lib/intel64

继续执行 detect 命令,报以下错误

img

原因是程序中需要将识别的结果图片显示出来,但终端没有安装图形界面,导致报错,解决办法是修改源代码重新编译执行,或者在 MobaXterm 终端中执行,可以正常显示,如

至此,说明openvino安装成功,且 yolov8 c++ 目标检测示例能够成功编译和执行。

四、参考

Ubuntu 安装 OpenVINO 及 YOLOv8 C++编译测试 - 知乎

Ubuntu系统下编译OpenCV4.8源码记录

ubuntu16.04 Cmake版本升级3.12_shengji cmake 3.12-CSDN博客

如有侵权,或需要完整代码,请及时联系博主。

http://www.dtcms.com/a/282882.html

相关文章:

  • 构建足球实时比分APP:REST API与WebSocket接入方案详解
  • PandaWiki与GitBook深度对比:AI时代的知识管理工具,选谁好?
  • 自动控制原理知识地图:舵轮、路径与导航图
  • 经典排序算法之归并排序(Merge Sort)
  • Linux内核IPv4路由查找:LPC-Trie算法的深度实践
  • 记录一道sql面试题3
  • 【Docker基础】Dockerfile多阶段构建:Multi-stage Builds详解
  • 【java面试day5】redis缓存-数据过期策略
  • MyBatis 之分页四式传参与聚合、主键操作全解
  • cv610_10B烧录,只能烧录到10%~20%,可能为DDRIO电压没有1.8v
  • Datawhale AI夏令营-基于带货视频评论的用户洞察挑战赛使用bert提升效果
  • socket和websocket的区别
  • 「大模型应用」(2)RAG的检索与rerank
  • vue页面不销毁的情况下再返回,总是执行created,而不触发 activated
  • uniapp 调起支付宝 requestPayment:fail service not found
  • 重学前端006 --- 响应式网页设计 CSS 弹性盒子
  • 2021-10-30 C++区间回文个数
  • 康华生物深耕疫苗创新 以核心产品引领行业发展
  • CSS3动画基本使用——页面一打开盒子就从左边走向右边
  • WIndows服务器中使用nssm启动多个Springboot服务
  • 外网访问禅道软件项目管理系统,简单几步将本地内网IP端口设置互联网在线用
  • Three.js 实战:使用 PBR 贴图打造真实地面材质
  • 面试150——数组字符串
  • 定位慢查询
  • PHP面向对象进阶:魔术方法与对象交互技术
  • 【论文阅读 | CVPR 2023 |CDDFuse:基于相关性驱动的双分支特征分解的多模态图像融合】
  • DAP-seq技术服务常见问题解答:从样本准备到数据分析
  • 卷积神经网路--训练可视化
  • 开源一体化协作平台Colanode
  • 深度剖析C++生态系统:一门老牌语言如何在开源浪潮中焕发新生?