了解核心组件和术语对于有效使用我们的转换工具至关重要。 本页介绍您在浏览文档时会遇到的一些关键概念。转换是将模型格式进行转换的过程。 格式决定了模型的存储和部署方式。历史上,Luxonis 设备发布了多个世代。 我们将其称为 机器人视觉核心(RVC)平台,每个平台都有自己的一套功能和需求。 更多信息请参阅 硬件 部分。适用于特定 RVC 平台的模型格式:- RVC2 —
.superblob(以及作为遗留格式的 .blob) - RVC3 —
.blob - RVC4 —
.dlc
SHAVEs
流式混合架构向量引擎(SHAVEs)是 RVC2 VPU 上的硬件计算核心,负责执行神经网络工作负载。 在 DepthAI v2 中,模型被编译为 .blob 文件,每个文件针对固定数量的 SHAVEs 构建。 相比之下,DepthAI v3 引入了 .superblob 文件,将所有可能的 SHAVE 配置打包在一个模型文件中 (有关详细信息,请参阅 推理 部分中的“设置模型 SHAVEs”小节)。 这使得在管线初始化期间可以动态选择所需的 SHAVEs 数量,从而提供更大的灵活性,因为相同的模型文件可以跨不同的 SHAVE 分配重用,而无需重新编译。量化是一种用于使 AI 模型更小、更快、更高效的方法。 这是通过降低模型权重和激活值的精度来实现的。现代 AI 模型通常使用大量的数值数据,默认情况下这些数据以 32 位浮点格式存储(一种精确但占用内存的数值存储方式)。虽然在训练过程中这种精度是有用的,但在实际应用中使用模型时,通常不需要这么高的精度。这种简化带来了以下好处:- 更快的执行速度(处理的数据更少)
- 更少的内存使用(模型体积更小)
- 更低的功耗
- 精度损失极小(如果处理得当)
对于我们的 RVC4 设备,我们使用 Qualcomm Neural Processing SDK 量化。 简而言之,其工作原理如下:- 确定输入数据的范围(真实最小值和最大值)。
- 确定编码范围(编码最小值和最大值),确保其满足特定要求(例如零表示)。
- 将每个 32 位浮点值转换为:
- 16 位浮点值,或
- 0 到 255 之间的 8 位定点值。
在量化过程中,使用数据来确定模型权重和激活值的输入范围以及编码范围。 选择合适的校准数据可以在不显著丢失信息的情况下降低精度。为实现这一点,校准数据必须:- 代表模型在训练期间遇到的数据,并且
- 覆盖模型预期处理的所有数值范围。
建议从验证图像构建校准数据集。使用更大、更多样化的校准集应该意味着模型量化后的整体性能更好。