0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从OpenVINO的主分支制作一个openvino .whl文件

英特尔物联网 来源:英特尔物联网 作者:Adrian Boguszewski Ra 2022-09-02 10:57 次阅读

什么是 Wheel 包?

Python *.whl 文件或者叫 Wheel 包,是一个 Python 生态系统组件,可简化包的安装。它在包分发过程中提供更快的安装时间和更高的可靠性。该格式包含只需要移动到要安装的目标系统上的正确位置的文件和元数据。如果你使用 pip 安装 Python 包,它很可能是一个 wheel 包。

本文将教读者从零开始从OpenVINO 的主分支制作一个openvino.whl 文件以便于安装OpenVINO。

已经有稳定版本,为什么我还需要从主分支构建Wheel包?

有时,出于以下原因,需要从当前主分支构建安装包(the bleeding-edge build):

1. 即使在稳定版本中也存在错误。如果您已经不能等到下一个版本,急需已修复这些错误的安装包 —— 唯一的解决方案是从主分支自行构建 Wheel 包。

2. 你需要一个已经实现但等待正式发布的新特性——手动从主分支自行构建 Wheel 包。

3. 你的资源是有限的。因此,您需要一个仅包含所需模块的自定义包 —— 自定义编译并构建主分支 Wheel 包。

4.因为它是开源的,你可以 DIY

如何编译 OpenVINO 并构建 Python 包?

要构建 OpenVINO 工具套件,您可以使用干净的 Ubuntu 20.04 或 Ubuntu 18.04。为避免依赖性问题,我们建议在您现有的操作系统环境中使用 Docker。本文的全部步骤在12代Intel酷睿处理器 i3-12100F 和 Ubuntu 20.04.4LTS 上完成测试,如图1-1所示。现在,让我们开始吧!

6f897b5c-29df-11ed-ba43-dac502259ad0.png

图1-1测试环境

第一步:安装并设置 Docker。请按照官方 Docker 文档安装Docker和 Linux 安装后的说明解决权限问题。我们还建议您为 8 核计算机分配至少 8GB 的 RAM。如果您运行编译错误,请增加 RAM 大小并重新运行脚本。安装和配置过程完成后,让我们运行:docker run hello world 检查一下 Docker 是否正常工作,如图1-2所示。

6fdbe040-29df-11ed-ba43-dac502259ad0.png

图1-2 Docker 安装成功并运行正常!

接下来,请下载并运行 Ubuntu 容器。您可以使用 18.04 或 20.04。如果您希望您的软件包更便携并与旧版本的 Ubuntu 一起使用,请使用 Ubuntu 18.04。

运行命令:

sudo docker pull ubuntu:20.04sudo docker run -it ubuntu:20.04

下载并运行 ubuntur20.04 容器,如图1-3所示。

705a2568-29df-11ed-ba43-dac502259ad0.png

图1-3下载并运行Ubuntu 20.04容器

恭喜!您已经在新的 Ubuntu20.04 容器里面了。此阶段的最后一步是在 Docker 中安装 git 和 sudo,并将目录更改为 /opt。

运行命令:

apt updateapt install git sudocd /opt

完成安装 git 和 sudo,并将目录更改为 /opt,如图1-4所示。

70e32f98-29df-11ed-ba43-dac502259ad0.png

图1-4进入/opt目录

注意!接下来的所有步骤都在上述这个 Docker 容器中运行。

第二步:克隆 OpenVINO 的代码仓和子代码仓。OpenVINO 使用 oneDNN和 OpenCV等软件包。在代码检出(checkout)时,您将从它们中检索出最新的源代码。由于 OpenVINO 代码仓有很多子模块,因此请确保使用 --recurse-submodules 标志运行。这可能需要一段时间,具体取决于您的互联网连接。

使用命令:

git clone --recurse-submodules --single-branch --branch=master https://github.com/openvinotoolkit/openvino.git

完成克隆 OpenVINO 代码仓和子代码仓到本地,如图1-5所示。

71099fa2-29df-11ed-ba43-dac502259ad0.png

图1-5克隆OpenVINO代码仓到本地

改用下面的命令:

71fb89e8-29df-11ed-ba43-dac502259ad0.png

提示:如果使用一次 git submodule update 这行命令,可能会遇到中途 clone 中断,无法满足 clone 某些 submodule 的目的。可以再次运行这条命令,直到所有 submodule 都被 clone 为止。

克隆子模块成功后,如图1-6所示。

721c8ad0-29df-11ed-ba43-dac502259ad0.png

图1-6克隆子模块

第三步:安装构建(Build)依赖项。下面是一个有用的脚本,但它不会为 Python 安装依赖项,因此需要额外的步骤。

cd openvino./install_build_dependencies.shapt install cython3pip3 install --upgrade pippip3 install -r src/bindings/python/wheel/requirements-dev.txt

如果要构建 GPU 插件(支持集成 GPU),则必须为 OpenCL 安装计算运行时。如果您发现任何错误,请参阅此处的说明:

 apt install intel-opencl-icd

第四步:编译源代码。到此,您的开发环境现已准备就绪,您可以在启用 Python 和 wheel 选项的情况下配置和运行 cmake。这将创建.wheel 文件和所有其他可用于发布的 C++ 二进制文件。

输入命令:

mkdir build && cd buildcmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PYTHON=ON -DENABLE_SYSTEM_PUGIXML=OFF -DENABLE_WHEEL=ON ..

确保显示以下选项,如图1-7所示,表示将构建 CPU、GPU 和 VPU 的插件,以及 Python 支持(本例中为 Python 3.8.10)。若要针对其他版本的 Python 进行编译,请使用附加选项:

-DPYTHON_EXECUTABLE、-DPYTHON_LIBRARY 和 -DPYTHON_INCLUDE_DIR 选项。

72cb9066-29df-11ed-ba43-dac502259ad0.png

图1-7cmake选项

接着运行以最大线程数运行 Make,并等待 15 到 30 分钟(取决于您的机器),命令如下:

make --jobs=$(nproc --all)

在极少数情况下,操作系统可能会终止您的编译。如果您遇到这种情况,如所示,请增加您的 RAM或同时使用较少的 jobs 重新 make 。

74709d58-29df-11ed-ba43-dac502259ad0.png

图1-8内存不足

在一切编译完成后,您可以在“build”文件夹下的“wheels”目录中找到 wheel 包,既有 OpenVINO Runtime 包也有 OpenVINO development 包,如图1-9所示。

74a1d972-29df-11ed-ba43-dac502259ad0.png

图1-9编译成功获得wheel安装包

需要注意的是,如图1-9所示的 wheel 包在您的 docker 容器中。您需要做的最后一件事是将它们复制到您的主机上。

请先按 Ctrl+P,再按 Ctrl+Q 退出容器而不停止它;接着运行 docker ps 以获取容器的 id ,并通过容器 id 将容器中的 wheel 文件复制到您的主机。

docker ps -adocker cp :/opt/openvino/build/wheels/openvino_dev-2022.3.0-000-py3-none-any.whl .docker cp :/opt/openvino/build/wheels/openvino-2022.3.0-000-cp38-cp38-manylinux_2_31_x86_64.whl .

到此,恭喜您,您已经获得了最新的OpenVINO wheel安装包了!

在目标机器上

使用最新的 OpenVINO wheel 安装包

创建一个新的虚拟环境并在其中安装 openvino-dev。您应该使用与编译 OpenVINO 时的相同版本的 Python 和 Ubuntu 操作系统。

python3.8 -m venv venvsource venv/bin/activatepip install --upgrade pippip install openvino-2022.3.0-000-cp38-cp38-manylinux_2_31_x86_64.whl pip install openvino_dev-2022.3.0-000-py3-none-any.whl

让我们运行一个基准测试,看看是否一切正常。让它成为在 CPU 上运行的 Open Model Zoo中的人员检测模型。您可能还需要使用 apt 安装 libgl-dev。

omz_downloader --name person-detection-0200benchmark_app -m intel/person-detection-0200/FP16-INT8/person-detection-0200.xml -d CPU -t 10

754770b2-29df-11ed-ba43-dac502259ad0.png

看,它正常工作了!到此,现在您已准备好导入 OpenVINO并在 Python(本例中为 Python 3.8.10)中运行您的代码。

Python 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import openvino>>>

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18924

    浏览量

    227212
  • Ubuntu
    +关注

    关注

    5

    文章

    552

    浏览量

    29294
  • python
    +关注

    关注

    53

    文章

    4753

    浏览量

    84073

原文标题:如何从 OpenVINO™ 的主分支构建 OpenVINO™ Wheel 包? | 开发者实战

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都觉得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的优化与整理,已经是非常贴近开发的使用习惯与推理方式。与OpenCV的Mat对象对接方式更是几乎无缝对接,非常的方便好用。
    的头像 发表于 07-26 09:20 431次阅读

    OpenVINO C# API在intel平台部署YOLOv10目标检测模型

    的模型设计策略,效率和精度两角度对YOLOs的各个组成部分进行了全面优化,大大降低了计算开销,增强了性能。在本文中,我们将结合OpenVINO C# API使用最新发布的OpenVINO
    的头像 发表于 06-21 09:23 772次阅读
    用<b class='flag-5'>OpenVINO</b> C# API在intel平台部署YOLOv10目标检测模型

    OpenVINO添加对Paddle 2.5的支持

    我是飞桨黑客马拉松第五期 OpenVINO 赛题获奖者——为 OpenVINO 添加了对 Paddle 2.5 的支持。在此记录下来贡献的过程,希望有更多的同学可以参与到 OpenVINO 的社区
    的头像 发表于 01-19 09:20 523次阅读

    基于OpenVINO™和AIxBoard的智能安检盒子设计

    公共安全问题日益凸显,传统安检手段面临挑战。为提高安检效率和保障公共安全,基于 OpenVINO™ 和 AIxBoard 的智能安检盒子应运而生。
    的头像 发表于 01-18 17:31 715次阅读
    基于<b class='flag-5'>OpenVINO</b>™和AIxBoard的智能安检盒子设计

    如何在MacOS上编译OpenVINO C++项目呢?

    英特尔公司发行的模型部署工具 OpenVINO 模型部署套件,可以实现在不同系统环境下运行,且发布的 OpenVINO 2023 最新版目前已经支持 MacOS 系统并同时支持在苹果 M 系列芯片上部署模型。
    的头像 发表于 01-11 18:07 705次阅读
    如何在MacOS上编译<b class='flag-5'>OpenVINO</b> C++项目呢?

    基于OpenVINO和AIxBoard的智能安检盒子设计

    公共安全问题日益凸显,传统安检手段面临挑战。为提高安检效率和保障公共安全,基于 OpenVINO 和 AIxBoard 的智能安检盒子应运而生。利用深度学习模型和 X 光图像处理技术,该设备能够实时识别危险物品并发出警报,为公共场所、机场等场景提供高效、准确的安检解决方案。
    的头像 发表于 12-25 11:14 422次阅读
    基于<b class='flag-5'>OpenVINO</b>和AIxBoard的智能安检盒子设计

    如何快速下载OpenVINO Notebooks中的AI大模型

    OpenVINO Notebooks是Jupyter Notebook形式的OpenVINO范例程序大集合,方便开发者快速学习并掌握OpenVINO推理程序,并通过Copy&Paste方式将范例中的关键程序应用到自己的AI软件中
    的头像 发表于 12-12 14:40 970次阅读
    如何快速下载<b class='flag-5'>OpenVINO</b> Notebooks中的AI大模型

    同步模式下OpenVINO2023 SDK的推理方式

    OpenVINO2023版本的SDK支持同步与异步推理模式相比之前OpenVINO2021版本更加的简洁,易用。同时支持创建多个Requst然后基于多个Requst实现流水线方式的推理从而提升CPU推理的吞吐率。
    的头像 发表于 11-21 10:03 759次阅读
    同步模式下<b class='flag-5'>OpenVINO</b>2023 SDK的推理方式

    NNCF压缩与量化YOLOv8模型与OpenVINO部署测试

    OpenVINO2023版本衍生出了新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架),通过对OpenVINO
    的头像 发表于 11-20 10:46 1295次阅读
    NNCF压缩与量化YOLOv8模型与<b class='flag-5'>OpenVINO</b>部署测试

    如何使用OpenVINO C++ API部署FastSAM模型

    当今,深度学习技术在计算机视觉领域取得了巨大的突破,使得各种图像处理任务变得更加智能化。其中,Semantic Segmentation(语义分割)是项重要的任务,它有助于计算机理解图像中不同对
    的头像 发表于 11-17 09:53 732次阅读
    如何使用<b class='flag-5'>OpenVINO</b> C++ API部署FastSAM模型

    基于OpenVINO C# API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基础上进行改进的,种基于 DETR 架构的实时端到端检测器,它通过使用系列新的技术和算法,实现了更高效的训练和推理,在前文我们发表了《基于 OpenVINO
    的头像 发表于 11-10 16:59 608次阅读
    基于<b class='flag-5'>OpenVINO</b> C# API部署RT-DETR模型

    OpenVINO Java API详解与演示

    英特尔 发行版 OpenVINO 工具套件基于 oneAPI 而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界
    的头像 发表于 11-09 17:03 879次阅读
    <b class='flag-5'>OpenVINO</b> Java API详解与演示

    基于OpenVINO Python API部署RT-DETR模型

    RT-DETR 是在 DETR 模型基础上进行改进的,种基于 DETR 架构的实时端到端检测器,它通过使用系列新的技术和算法,实现了更高效的训练和推理,我们将在 Python、C++、C# 三
    的头像 发表于 10-20 11:15 779次阅读
    基于<b class='flag-5'>OpenVINO</b> Python API部署RT-DETR模型

    OpenVINO™ C# API详解与演示

    OpenVINO C# API 支持 NuGet 程序包安装方式,这与 OpenVINO C++ 库的安装过程相比,更加简单。如果使用 Visual Studio 开发 AI 项目,则可以通过 NuGet 程序包管理功能直接安装即可
    的头像 发表于 10-13 16:39 609次阅读
    <b class='flag-5'>OpenVINO</b>™  C# API详解与演示

    OpenVINO场景文字检测与文字识别教程

    OpenVINO是英特尔推出的深度学习模型部署框架,当前最新版本是OpenVINO2023版本。OpenVINO2023自带各种常见视觉任务支持的预训练模型库Model Zoo,其中支持场景文字检测
    的头像 发表于 09-24 15:31 1297次阅读
    <b class='flag-5'>OpenVINO</b>场景文字检测与文字识别教程