5. 本地 OpenVINO 模型转换

在本教程中,您将学习如何将 OpenVINO 中间表示文件(IR)转换为在DepthAI上运行所需的格式,即使是在低功耗的Raspberry Pi上也能使用。 我将向您介绍OpenVINO工具集、Open Model Zoo(我们将在那里下载 face-detection-retail-0004 模型), 并向您展示如何生成在OAK板上运行模型推理所需的.blob文件。


Note

除了本地模型转换(更耗时), 您还可以使用 Google colab, 我们的 online converterblobconverter package.

还没听说过 OpenVINO 或者 Open Model Zoo? 我先简单介绍一下为什么我们需要这些工具。

5.1. 什么是OpenVINO?

在底层,OAK使用英特尔技术来执行高速模型推断。 然而,要获得高性能,不只是把神经网络塞到芯片中这么简单。 这个时候,我们就需要 OpenVINO 了. OpenVINO是一个免费工具包,可将深度学习模型转换为可在Intel硬件上运行的格式。 转换模型后,通常可以看到每秒帧数(FPS)提高25倍或更多。 几个小步骤是否值得将FPS提高25倍? 通常,答案是肯定的!

查看 OpenVINO 工具包网站 以获取安装说明。

5.2. 什么是Open Model Zoo?

Open Model Zoo 是一个免费的预训练模型库。 Zoo还包含用于将这些模型下载为可编译格式以便在DepthAI上运行的脚本。

DepthAI 能够运行 Zoo 中的许多对象检测模型。其中一些模型包含在 DepthAI Github repositoy 中。

5.3. 安装 OpenVINO

Note

DepthAI会在OpenVINO新版本发布后的几天内增加对OpenVINO新版本的支持, 所以 您应该始终使用最新的OpenVINO版本

您可以从他们的 下载页面 下载OpenVINO工具包安装程序,我们将使用最新版本-在撰写本文时为2021.4。

download

下载并解压压缩文件夹后,我们可以运行安装:

~/Downloads/l_openvino_toolkit_p_2021.3.394$ sudo ./install_GUI.sh

我们需要的所有组件都将默认安装。我们的安装路径将是 ~/intel/openvino_2021 (默认位置), 下面我们将使用此路径。

5.4. 下载 face-detection-retail-0004 模型

现在我们已经安装了 OpenVINO,我们可以使用模型下载器:

cd ~/intel/openvino_2021/deployment_tools/tools/model_downloader
python3 -mpip install -r requirements.in
python3 downloader.py --name face-detection-retail-0004 --output_dir ~/

这将会把模型文件下载到 ~/intel/ 。 具体来说,我们所需要的模型文件位于:

~/intel/face-detection-retail-0004/FP16

我们将进入这个文件夹,以便我们稍后可以将此模型编译为所需的 .blob

你会在目录中看到两个文件:

$ ls -lh
total 1.3M
-rw-r--r-- 1 root root 1.2M Jul 28 12:40 face-detection-retail-0004.bin
-rw-r--r-- 1 root root 100K Jul 28 12:40 face-detection-retail-0004.xml

该模型采用 OpenVINO 中间表示(IR)格式:

  • face-detection-retail-0004.xml - 描述网络拓扑结构

  • face-detection-retail-0004.bin - 包含权重和偏差二进制数据。

这意味着我们已准备好为 MyriadX 编译模型!

5.5. 编译模型

我们的 DepthAI 板上使用的 MyriadX 芯片不直接使用 IR 格式文件。 相反,我们需要 face-detection-retail-0004.blob 使用 compile_tool 工具。

5.5.1. 激活 OpenVINO 环境

为了使用 compile_tool 工具, 我们需要激活我们的OpenVINO环境。

首先,让我们找到 setupvars.sh 文件。

find ~/intel/ -name "setupvars.sh"
/home/root/intel/openvino_2021.4.582/data_processing/dl_streamer/bin/setupvars.sh
/home/root/intel/openvino_2021.4.582/opencv/setupvars.sh
/home/root/intel/openvino_2021.4.582/bin/setupvars.sh

我们对 bin/setupvars.sh 文件感兴趣, 所以让我们继续用它来激活环境:

source /home/root/intel/openvino_2021.4.582/bin/setupvars.sh
[setupvars.sh] OpenVINO environment initialized

如果你看到 [setupvars.sh] OpenVINO environment initialized 那么你的环境应该是正确初始化的。

5.5.2. 找到 compile_tool

让我们找出 compile_tool 位置。在您的终端中,运行:

find ~/intel/ -iname compile_tool

您应该会看到与此类似的输出

find ~/intel/ -iname compile_tool
/home/root/intel/openvino_2021.4.582/deployment_tools/tools/compile_tool/compile_tool

保存此路径,因为您在下一步运行 compile_tool 时需要它。

5.5.3. 运行 compile_tool

~/intel/face-detection-retail-0004/FP16 我们现在调用 compile_tool 将模型编译到 face-detection-retail-0004.blob

~/intel/openvino_2021.4.582/deployment_tools/tools/compile_tool/compile_tool -m face-detection-retail-0004.xml -ip U8 -d MYRIAD -VPU_NUMBER_OF_SHAVES 4 -VPU_NUMBER_OF_CMX_SLICES 4

你应该看到:

Inference Engine:
  IE version ......... 2021.4.0
  Build ........... 2021.4.0-3839-cd81789d294-releases/2021/4

Network inputs:
    data : U8 / NCHW
Network outputs:
    detection_out : FP16 / NCHW
[Warning][VPU][Config] Deprecated option was used : VPU_MYRIAD_PLATFORM
Done. LoadNetwork time elapsed: 1760 ms

blob 文件在哪里?它位于当前文件夹中

/intel/face-detection-retail-0004/FP16$ ls -l
total 2.6M
-rw-rw-r-- 1 root root 1176544 jul 28 19:32 face-detection-retail-0004.bin
-rw-rw-r-- 1 root root 1344256 jul 28 19:51 face-detection-retail-0004.blob
-rw-rw-r-- 1 root root  106171 jul 28 19:32 face-detection-retail-0004.xml

5.6. 运行并显示模型输出

有了神经网络 .blob 文件, 我们就可以开始了! 为了验证模型是否正确运行,让我们稍微修改一下我们在 Hello World 中创建的程序。

具体的说,让我们修改 setBlobPath 调用来加载我们的模型 记得将路径替换为你所拥有的正确路径!

- detection_nn.setBlobPath(str(blobconverter.from_zoo(name='mobilenet-ssd', shaves=6)))
+ detection_nn.setBlobPath("/path/to/face-detection-retail-0004.blob")

以上就是全部了。

你应该能看到一个带注释的输出,跟下面这个类似:

face

5.7. 审查流程

我们走过的流程适用于 Open Model Zoo 的其他预训练对象检测模型:

  1. 下载模型:

    python3 downloader.py --name face-detection-retail-0004 --output_dir ~/
    
  2. 创建 MyriadX blob 文件:

    ./compile_tool -m [INSERT PATH TO MODEL XML FILE] -ip U8 -d MYRIAD -VPU_NUMBER_OF_SHAVES 4 -VPU_NUMBER_OF_CMX_SLICES 4
    

    这里 可以看到compile_tool支持的所有参数.

  3. 在您的脚本中使用此模型

你已经上手了! 你可以在 GitHub 上找到这个教程的 完整代码

Note

您还应该查看 使用预训练的 OpenVINO 模型 教程,其中此过程得到了显着简化。

有疑问?

我们很乐意为您提供代码或其他问题的帮助。

我们的联系方式

OAK QQ群
QQ

OAK视觉人工智能俱乐部

群号:280844897

加微信邀请入群
WeChat

微信号:13951940532

关注微信公众号:OAK视觉人工智能开发
欢迎到淘宝选购
taobao
OAK中国官方淘宝店

还可以通过我们发布的视频和文章了解OAK