3.1.1. 自定义神经网络模型转换
要允许 DepthAI 使用您的自定义训练模型,您需要将它们转换为 MyriadX blob 文件格式 - 以便它们针对 MyriadX VPU 处理器上的最佳推理进行优化。
为了获得 blob 文件,必须执行两个转换步骤:
使用 模型优化器 生成 OpenVINO IR 表示 (其中 IR 代表中间表示)
使用 模型编译器 将 IR 表示转换为 MyriadX blob
下图 (来自 OpenCV 课程网站) 显示了这些步骤
请在下面找到有关如何使用不同方法执行这些步骤的说明。
本地编译
如果要进行模型转换和编译,可以按照:
使用 Google Colab
您还可以使用 Google Colab notebook 训练和转换模型。 您可以查看我们的 自定义训练 教程, 其中每个教程还包含直接在 notebook 中执行的转换和编译步骤。
带有编译步骤的示例笔记本在 这里 。
使用在线转换器
您还可以访问我们的 MyriadX Blob converter 这个在线模型转换器允许指定不同的OpenVINO目标版本并支持 TensorFlow, Caffe, OpenVINO IR 和 OpenVINO Model Zoo 的转换。
使用 blobconverter 库
为了能够让用户自动使用我们的 blobconverter 工具,我们发布了一个 blobconverter PyPi 库, 它允许直接从命令行和 Python 脚本编译 MyriadX blob。
安装和使用说明可以在 这里 找到。
故障排除
将模型转换为 OpenVINO 格式或将其编译为 .blob
, 你可能会遇到一个问题。 这通常意味着 不支持两层之间的连接 或 不支持该层.
对于 NN 模型的可视化 我们建议使用 Netron app.
支持的层
将您的模型转换为 OpenVINO 的 IR 格式 (.bin
和 .xml
)时, 您必须检查 OpenVINO 是否支持所使用的层。 下面是支持层和它们的局限性 Caffee, MXNet, TensorFlow, TensorFlow 2 Keras, Kaldi, and ONNX.
不支持的图层类型”layer_type”
当使用 compile_tool 从 IR (.xml/.bin) 编译成.blob时,你可能会得到这样的错误:
Failed to compile layer "Resize_230": unsupported layer type "Interpolate"
这意味着 VPU(Intels Myriad X)不支持层类型。 您可以在 此处 找到VPU支持的OpenVINO层, 在 Supported Layers header, 标题下的第三列(VPU)中。 有关更多信息,请参阅 英特尔官方故障排除文档 。
数据类型不正确
如果编译器返回类似 “check error: input #0 has type S32, but one of [FP16] is expected”,
则意味着您使用了不正确的数据类型。 在上面的例子中,一个 INT32 层直接连接到 FP16。
这些层之间应该有一个转换, 我们可以通过 在这两个层之间使用 OpenVINOs Convert
层来实现。 您可以通过编辑模型 .xml
并添加 Convert
层来做到这一点。 您可以在此 discord thread 上找到更多信息。
3.1.2. Yolov5 6.0 转换成blob格式
有疑问?
我们很乐意为您提供代码或其他问题的帮助。
我们的联系方式
还可以通过我们发布的视频和文章了解OAK