虽然由于原生工具链的封闭性,无法进行常规的(固件)设备上开发,但我们仍然提供了几种运行自定义代码的替代方法:- 脚本 - 使用 Python 3.9 和 Script 节点
- 创建您自己的 NN 模型 以运行计算量更大的功能
- 创建自定义 OpenCL 内核
使用 Script 节点 允许您在设备本身上运行自定义 Python 脚本,从而为用户在构建管道时提供更大的灵活性。当串行使用多个神经网络并且 您需要处理第一个神经网络的输出,然后再将图像馈送到第二个神经网络时,Script 节点也非常有用。一个示例是人脸年龄/性别识别演示 - 第一个 NN 会检测人脸,将检测结果传递给 Script 节点,该节点会创建 ImageManipConfig 来裁剪原始帧,并将裁剪后的人脸帧馈送到人脸年龄/性别识别 NN。对于运行计算量大的功能(例如,图像滤镜),出于性能原因,您可能希望避免使用 Script 节点,而是选择以下两种方案之一。您可以 使用您喜欢的 NN 库创建自定义模型,将模型转换为 OpenVINO,然后将其编译为 .blob。有关此主题的更多信息,请参阅将模型转换为 MyriadX blob 文档。请参阅计算机视觉页面了解更多信息。将模型转换为 OpenVINO 的 IR 格式(.bin 和 .xml)时,您必须检查 OpenVINO 是否支持所使用的层。以下是各种框架支持的层及其限制:创建自定义 NN 模型存在一些限制,例如,OpenVINO/VPU 支持的层(请参阅支持的层)。为了规避这些限制,您可以考虑创建一个自定义 OpenCL 内核并为其编译 VPU。此内核将在 VPU 上的 SHAVE 核心上运行。还应考虑到此选项的用户友好性不高。我们计划创建一个关于如何开发这些内核并在 OAK 相机上运行它们的教程。