自定义神经网络模型转换 =========================== 要允许 DepthAI 使用您的自定义训练模型,您需要将它们转换为 MyriadX blob 文件格式 - 以便它们针对 MyriadX VPU 处理器上的最佳推理进行优化。 为了获得 blob 文件,必须执行两个转换步骤: - 使用 **模型优化器** 生成 **OpenVINO IR 表示** (其中 IR 代表中间表示) - 使用 **模型编译器** 将 IR 表示转换为 **MyriadX blob** 下图 (来自 `OpenCV 课程网站 `__) 显示了这些步骤 .. image:: /_static/images/model_compile.png :alt: Model Compile Steps 请在下面找到有关如何使用不同方法执行这些步骤的说明。 本地编译 ***************** 如果要进行模型转换和编译,可以按照: - `OpenVINO 官方说明 `__ - `OpenVINO Python notebooks `__ - :ref:`本地 OpenVINO 模型转换` - `自定义模型转换&编译注意事项 `__ 使用 Google Colab ****************** 您还可以使用 Google Colab notebook 训练和转换模型。 您可以查看我们的 :ref:`自定义训练` 教程, 其中每个教程还包含直接在 notebook 中执行的转换和编译步骤。 带有编译步骤的示例笔记本在 `这里 `__ 。 使用在线转换器 ********************** 您还可以访问我们的 `MyriadX Blob converter `__ 这个在线模型转换器允许指定不同的OpenVINO目标版本并支持 **TensorFlow, Caffe, OpenVINO IR 和 OpenVINO Model Zoo** 的转换。 .. image:: /_static/images/blobconverter_web.png :alt: BlobConverter Web 使用 blobconverter 库 *************************** 为了能够让用户自动使用我们的 blobconverter 工具,我们发布了一个 `blobconverter PyPi 库 `__, 它允许直接从命令行和 Python 脚本编译 MyriadX blob。 安装和使用说明可以在 `这里 `__ 找到。 故障排除 ############### 将模型转换为 OpenVINO 格式或将其编译为 :code:`.blob`, 你可能会遇到一个问题。 这通常意味着 **不支持两层之间的连接** 或 **不支持该层**. 对于 **NN 模型的可视化** 我们建议使用 `Netron app `__. .. image:: /_static/images/tutorials/netron.jpeg :alt: Netron 支持的层 **************** 将您的模型转换为 OpenVINO 的 IR 格式 (:code:`.bin` 和 :code:`.xml`)时, 您必须检查 OpenVINO 是否支持所使用的层。 下面是支持层和它们的局限性 `Caffee `__, `MXNet `__, `TensorFlow `__, `TensorFlow 2 Keras `__, `Kaldi `__, and `ONNX `__. 不支持的图层类型"layer_type" *********************************** 当使用 `compile_tool `__ 从 IR (.xml/.bin) 编译成.blob时,你可能会得到这样的错误: .. code-block:: bash 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 `__ 层来实现。 您可以通过编辑模型 :code:`.xml` 并添加 `Convert `__ 层来做到这一点。 您可以在此 `discord thread `__ 上找到更多信息。 Yolov5 6.0 转换成blob格式 ======================= `链接 `__ 在线将YOLOV5转化成OAK能用的模型格式 ======================= `链接 `__ .. include:: /pages/includes/footer-short.rst