0

我正在使用微控制器上的 CMSIS-NN 为基于 EMG 的手势识别实现 NN

我的输入数据,例如是:[0.061035156,0.095214844,0.086669922,0,0.002441406,0.002441406,0,0,0.002441406,0.013427734,0.032958984]

我正在使用 ARM 在 Github(cifar10 示例)上提供的 nn_quantizer.py 文件来量化为 8 位。对于我的数据集,它需要 Q2.5 格式。

但是我对微控制器的预测真的很糟糕。不过,用于训练的 Caffemodel 有很好的预测。

我已经在将输入放在微控制器上之前对其进行了预处理。所以我不需要 cod_gen.py 文件生成的 mean_subtract 函数。所以我只是将我的预处理输入向量转换为 8 位定点并馈送到控制器上的 NN 进行推理。

它可能有什么问题?

有人可以提出一些解决方案吗

谢谢你

4

1 回答 1

0

这可能是由于不同的问题。如果没有您模型的代码,我无法指定是哪一个。

一种选择:可能是您没有正确量化或获得正确的 QQ 格式和相关偏移。您应该在增量过程中量化所有层,包括输入。这意味着,你量化输入,然后用它的 QQ 格式,你可以量化第一层等等。

另一种选择:您应该确保以适当的形式进行重量转换。例如,从 PyTorch 到 CMSIS,您必须转置卷积权重 (0,2,3,1)。关于完全连接的层,您应该相应地重新排序它们。一个很好的教程是:https ://developer.arm.com/solutions/machine-learning-on-arm/developer-material/how-to-guides/converting-a-neural-network-for-arm-cortex-m -with-cmsis-nn/单页

如果您发布有关问题的更多详细信息,例如模型和图层的QQ格式,我也许可以帮助您。

将模型从 Keras 转换为 CMSIS 的一个很好的例子是:https ://github.com/autoas/CMSIS_5/blob/develop/CMSIS/NN/Examples/ARM/arm_nn_examples/mnist/mnist-on-keras.ipynb

于 2020-09-08T11:31:48.383 回答