当前位置: 首页 > 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.lryc.cn/news/590417.html

相关文章:

  • 使用Telegraf从工业物联网设备收集数据的完整指南
  • Beautiful Soup(BS4)
  • ABP VNext + EF Core 二级缓存:提升查询性能
  • AI炒作,AGI或在2080年之前也无法实现,通用人工智能AGI面临幻灭
  • 【RTSP从零实践】13、TCP传输AAC格式RTP包(RTP_over_TCP)的RTSP服务器(附带源码)
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | AutoTextEffect(自动打字机)
  • 使用Whistle自定义接口返回内容:Mock流式JSON数据全解析
  • SQL性能分析
  • C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏
  • 【Linux】如何使用nano创建并编辑一个文件
  • 动态规划题解_打家劫舍【LeetCode】
  • 编译原理第四到五章(知识点学习/期末复习/笔试/面试)
  • 部分排序算法的Java模拟实现(复习向,非0基础)
  • AWS ML Specialist 考试备考指南
  • 【Qt】麒麟系统安装套件
  • uniapp写好的弹窗组件
  • OWASP Top 10 攻击场景实战
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • 01 启动流程实例
  • ICMR-2025 | 杭电多智能体协作具身导航框架!MMCNav:基于MLLM的多智能体协作户外视觉语言导航
  • 钱包核心标准 BIP32、BIP39、BIP44:从助记词到多链钱包的底层逻辑
  • STM32F4踩坑小记——使用HAL库函数进入HardFault
  • 蓝光三维扫描技术:手机闪光灯模块全尺寸3D检测的高效解决方案
  • HTML基础知识 二(创建容器和表格)
  • 在虚拟环境中复现论文(环境配置)
  • Class<T> 类传递及泛型数组
  • SSH连接复用技术在海外云服务器环境下的稳定性验证与优化方案
  • 动态规划的核心性质——最优化原理 (Principle of Optimality)
  • git的diff命令、Config和.gitignore文件
  • Python编程基础(六)| 用户输入和while循环