k230 komdel转换进一步学习问题

Viewed 1039

首先十分感谢Wy001大佬对我之前帖子的回答,没有他,我不可能完成的这么顺利
在昨天成功将yolo官方的模型转换成了kmodel并部署到了k230上,onnx的转换是用yolo的库,kmodel以及接下来的部署都是按照嘉楠官方文档操作(yolo大作战部分),目前问题是效果并不好:
这是直接用yolo11n.pt的预测结果:
image.png
这是部署到k230的预测结果:
image.png
可见还是有些差别的,并没有原版的这么准确。
想请问一些问题:

1.如何提高精度?我认为但是我.pt文件预测没问题,但是部署到k230就不太好了,那应该是我在经过onnx,kmodel转换时精度有损失,请问我这个思路对不对?

2.如果真是如此,在转换成kmodel过程中有没有什么参数是可以调整的?有没有说明文档讲解kmodel转换的原理以及参数优化?以及还想问个问题,kmodel量化所需要的数据集需不需要标签,是不是数据集的格式和训练时一样在一个文件夹里有标签和图片?

3.我看官方代码也是用python写的,有没有相关资料可以让进行源码部分的学习?

4.kmodel输出的张量格式是什么样子的,有没有相关资料,是和onnx输出的一样的吗?因为后续我可能要根据检测到的结果位置控制电机,想了解一下如何取kmodel输出的数据(也就是后处理部分)

5.获取kmodel后我根据官方文档说明进行了验证代码如下:(其中输入是640 640的)

python simulate.py --model ./yolo11n.onnx --model_input onnx_input_float32.bin --kmodel ./yolo11n.kmodel --kmodel_input kmodel_input_uint8.bin --input_width 640 --input_height 640

但程序并没有正常运行有以下报错:
image.png

最后再次感谢各位(尤其是Wy001大佬),开发者社区很好,帮助到了我很多!

移植后,感觉效果差很多,我搞的小目标检测,从test_onnx开始就没效果

1 Answers

1、关于精度问题,可以尝试如下方法:
(1)转换模型时将ptq_option改为1或者2,测试新模型的效果,这一步是通过改变量化过程调整模型weights;
(2)我看你放的结果里面不是效果不好,而是识别错了,建议你使用文档提供的图片测试代码测试一下,看图片的结果是否正确;同时验证一下,你的labels的顺序和yolo模型里面的顺序是不是一致的,因为框的位置大致是对的,但是类别结果明显不对;
(3)更换yolo11模型为s试试;
2、量化所需要的数据集不需要标签,从训练集中抽取图片即可;
3、k230 micropython的学习可以参考CanMV K230文档,包括例程和API;同时要注意MicroPython不是python,它们还是有很大区别的;
4、kmodel的输出类型是k230 nncase runtime下的runtime_tensor,tensor是不可见的,需要转换成ulab.numpy.ndarray,相关转换方法见链接:https://developer.canaan-creative.com/k230_canmv/zh/dev/zh/api/aidemo/AIBase%20%E6%A8%A1%E5%9D%97%20API%20%E6%89%8B%E5%86%8C.html#tips kmodel无法像onnx一样可视化展示,可以保存为bin文件在PC使用numpy查看元数据。
5、simulate验证过程失败看着像是没有添加环境变量。windows平台将所在python环境下的Lib/site-packages路径添加到环境变量Path, linux平台执行下述命令将site-packages添加到环境变量。

# 其中site-packages的路径自己选择自己python环境的路径,不要照抄
export NNCASE_PLUGIN_PATH=$NNCASE_PLUGIN_PATH:/usr/local/lib/python3.8/site-packages/
export PATH=$PATH:/usr/local/lib/python3.8/site-packages/
source /etc/profile

然后再执行simulate.py

感谢大佬的解答我稍后去试一下您说的方法。对于第5点,我将D:\dev_app\anaconda\Lib\site-packages(这里我用的是anaconda带的python)添加到了windows path环境变量,报错依然存在。

nncase是装在这个环境下吗?

nncase-kpu装没装?