由于原生工具链封闭,无法进行常规(固件)设备端开发,但我们仍然提供了几种替代方案来运行自定义代码:- 脚本 - 使用 Python 3.9 配合 Script 节点
- 创建自己的 NN 模型 以运行计算密集度更高的功能
- 创建自定义 OpenCL 内核
使用 Script 节点 可以在设备本身上运行自定义的 Python 脚本,这为用 户在构建流水线时提供了更大的灵活性。当串联使用多个神经网络时,Script 节点也非常有用——你需要先处理第一个网络的输出,然后再将图像输入第二个网络。示例:面部年龄/性别识别 演示——第一个 NN 检测人脸,将检测结果传递给 Script 节点,Script 节点创建 ImageManipConfig 来裁剪原始帧,然后将面部年龄/性别识别 NN 只输入裁剪后的人脸帧。对于运行计算密集度高的功能(例如图像滤镜),出于性能考虑,你可能希望避免使用 Script 节点,而是采用下面描述的两种方式之一。你可以使用自己偏好的 NN 库创建自定义模型,将其转换为 OpenVINO 格式,然后编译成 .blob 文件。更多信息请参考 将模型转换为 MyriadX blob 文档。请参阅 计算机视觉 页面了解更多信息。将模型转换为 OpenVINO 的 IR 格式(.bin 和 .xml)时,需要检查 OpenVINO 是否支持所使用的网络层。以下是各种框架支持的网络层及其限制:创建自定义 NN 模型存在一些限制,例如 OpenVINO/VPU 支持的支持的网络层。为了避免这些限制,你可以考虑创建自定义 OpenCL 内核并编译到 VPU 上。该内核将在 VPU 的 SHAVE 核心上运行。需要注意的是,这种方式并不特别友好。我们计划编写一个教程,介绍如何开发这些内核并在 OAK 相机上运行。