Ubuntu16.04 LTS编译OpenVINO 2021.4

2024-01-15 02:50

本文主要是介绍Ubuntu16.04 LTS编译OpenVINO 2021.4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装前提

Ubuntu 版本: 16.04 LTS

安装 OpenVINO 的最终目的是实现 OpenVINO 推理节点的配置。由于当前推理节点的配置需要我们使用 Ubuntu 16.04 LTS,我们安装配置 OpenVINO 的整体过程都是在 ubuntu16 上进行的。

安装 Python 3.8

先确定ubuntu16下面自带的python版本,因为openvino安装依赖的时候需要用到python3.6以上的版本。不出意外的话,ubuntu16自带的只有python2.7和3.5版本。如果不手动调整为python3.6以上,很多依赖会安装失败导致openvino安装异常。但请不要手动改变系统默认值。

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt install python3.8 python3.8-dev

更新 pip

sudo apt-get install python3.8-distutils
wget https://bootstrap.pypa.io/get-pip.py 
sudo python3.8 get-pip.py

安装新版本 cmake

OpenVINO 要求 cmake 3.10 版本以上,但是 ubuntu16.04 自带的是 cmake 3.5 并且推理节点编译要求 cmake 3.5。所以我们需要安装新的 cmake 来编译 OpenVINO 但请不要把新的 cmake 设置成系统默认。

  1. 新建安装目录
mkdir ~/opt
  1. 下载 cmake
cd ~/Downloads
wget https://github.com/Kitware/CMake/releases/download/v3.21.4/cmake-3.21.4.tar.gz
tar -xzvf cmake-3.21.4.tar.gz
cd cmake-3.21.4
  1. 注意这里把安装目录更改成刚刚新建的~/opt目录了
./bootstrap --prefix=/home/username/opt
  1. 编译。
make -j6

  1. 安装。如果有权限问题,就sudo。
make install


手动编译

如上所述,OpenVINO 2020 以后的版本无论是对 python 还是 cmake 都有最低的要求,ubuntu 16.04 无法满足这些需求,所以明面上 OpenVINO 2020 以上的版本并不支持 ubuntu 16.04,因此有时官网上的安装说明可能并不适用于 ubuntu 16.04。此外,OpenVINO 的官方预编译安装带的是intel版本的预编译库,可能会在amd等平台上出问题。所以有时在 ubuntu 16.04 上或者 amd 机器上需要自己编译 OpenVINO。

OpenVINO 2021.4编译安装

  1. git clone openvino
git clone git@github.com:openvinotoolkit/openvino.git
cd openvino
  1. git checktout 对应的版本,比如
git checkout 2021.4
  1. init and build
git submodule update --init  --recursive
mkdir build
cd build
  1. 用下面的命令来运行cmake,注意我调用的是自己安装的新版本cmake,请相应地修改路径:
  • cmake路径: ~/opt/bin/cmake
  • CMAKE_INSTALL_PREFIX: /home/username/repos/opensource/openvino/build/openvino_lib
~/opt/bin/cmake -DCMAKE_BUILD_TYPE=Release \
-DENABLE_CLDNN=ON \
-DENABLE_MKL_DNN=ON \
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=`which python3.8` \
-DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \
-DCMAKE_INSTALL_PREFIX=/home/username/repos/opensource/openvino/build/openvino_lib ..

如果命令中途中出错,需将build文件夹删掉再重新来一遍。

如报错 Could NOT find Cython (missing: CYTHON_EXECUTABLE),安装cyphon即可:

python3.8 -m pip install Cython
  1. 编译,其中-j*是指用多少个线程来编译,注意线程过多或者内存太小就会遇到out of memory问题。如果报错Cannot allocate memory,可参考这里。或者可以使用少一点线程如-j2。
make -j6

    2. 安装 

make install
  1. 这时openvino就会被安装到 /home/username/repos/opensource/openvino/build/openvino_lib。其中:
  2. 运行下面命令设置openvino的环境变量。需要设置一个参数 -pyver 传入python版本否则会报错 ERROR: Unsupported Python version
    source /home/username/repos/opensource/openvino/build/openvino_lib/bin/setupvars.sh -pyver 3.8

  3.   /home/username/repos/opensource/openvino/build/openvino_lib/deployment_tools 里面是我们编译推理节点需要的so文件和头文件。需要将其复制并替换 /home/username/repos/ws_infer/src/ros_openvino_infer/internal_deps/openvino_lib/openvino下的文件。

这篇关于Ubuntu16.04 LTS编译OpenVINO 2021.4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/607404

相关文章

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入