使用yolo大作战导出模型后,边框集中在左上角,onx模型确认没问题,kmodel模拟器无法运行

Viewed 412

重现步骤

按照yolo大作战导出水果模型yolov5,修改使用object_detect_yolov8n的代码(基于AIBase,看到有个帖子里已经调整过inference函数:https://developer.canaan-creative.com/answer/questions/10010000000001213
在k230上运行所有的检测框都出现在左上角跳动,即使摄像头给黑色图也是如此。

期待结果和实际结果

软硬件版本信息

windows,pycharm,pip安装nncase和nncase-kpu
开发板CanMV-K230-LP4 V3.0
官方固件烧进去不工作,用的卖家提供的固件是:
CanMV-K230_micropython_v1.0_sdk_v1.6_nncase_v2.8.3(创乐博V3.0)
运行官方AI例程均正常

错误日志

尝试解决过程

  1. 回头检查从头到尾的分辨率,都是对的,训练命令
os.system("python train.py  --batch-size 64 --epoch 300 --imgsz 320 --data .\\K230datasets\\fruits_yolo.yaml --weights yolov5n.pt  --device 0")
  1. export onnx和kmodel
python export.py --weight runs/train/exp65/weights/best.pt --imgsz 320 --batch 1 --include onnx

python to_kmodel.py --target k230 --model best.onnx --dataset ../test --input_width 320 --input_height 320 --ptq_option 0

  1. test_det_onnx.py运行正确:
  2. test_det_kmodel.py运行报错:
warn: Nncase.Hosting.PluginLoader[0]
      NNCASE_PLUGIN_PATH is not set.


File "F:\k230\test_yolov5\detect\test_det_kmodel.py", line 122, in main
    sim.load_model(kmodel)
RuntimeError

test_det_kmodel.py的最前面添加了环境变量也不行,但我不确定路径对不对,麻烦您也解答一下。

plugin_path = "F:\\k230\\venv\\Lib\\site-packages\\nncase"  
os.environ["NNCASE_PLUGIN_PATH"] = plugin_path

补充材料

2 Answers
  • 检查dotnet是否安装,并添加到环境变量;
  • 要将安装nncase的python包路径添加到环境变量,路径到site-packages就可以了,然后添加环境变量直接在此电脑->右键属性->高级系统设置->环境变量->系统变量->Path->编辑->新建,然后添加site-packages路径;添加环境变量后先跑一下test_det_kmodel.py测试一下,注意打开代码修改里面的参数。
  • 固件烧录使用:https://kendryte-download.canaan-creative.com/developer/k230/CanMV-v1.2.2/CanMV-K230_V3P0_micropython_v1.2.2-0-g4b8cae1_nncase_v2.9.0.img.gz
  • 最好把你的k230代码也给一下。

hello,继续帮忙看一下?

感觉像是模型的问题,你用的是官网最新的代码训练的模型吗

非常感谢您的快速响应,我这搞好了,步骤如下,供后人参考:

  • 按您说的更新了固件
  • nncase和nncase-kpu在python中升级了2.9.0
  • 使用yolo大作战中的使用yolo库的代码运行。如果用example里的yolov8n代码,没有检测框出来。我没仔细看他们的区别,看大致代码结构似乎差不多,只是包了一层。

剩余的问题是,test_det_kmodel.py还是跑不起来,报错RuntimeError如下图:

  • 添加了NNCASE_PLUGIN_PATH环境变量,那个warning NNCASE_PLUGIN_PATH is not set**.确实没有了**,看debug界面中kmodel确实已经读进来二进制数据了,sim.load_model(kmodel)出错。

  • 按这个帖子(没找到官方帖子,建议在开发者指南中加一个,包括上面那个NNCASE环境变量)https://blog.csdn.net/weixin_45020839/article/details/143166984安装了dotnet7,添加了DOTNET_ROOT环境变量,path中增加%DOTNET_ROOT%,不知道还有什么遗漏吗?

  • 最后想起来,会不会跟yolov5的版本有关系?因为用这个yolo也需要改AIBase,是不是sim.load_model在解析模型的时候出错了?