onnx转为kmodel,出现警告,但是有kmodel文件以后为啥模型在开发板上没有效果

Viewed 48

问题描述


1.按照前面文档的步骤都完成了,然后就是最后一步的onnx转为kmodel的过程中出现了警告,但是最后也出现了新的kmodel文件,然后我去移植到开发板的时候,没有效果,感觉好像模型有问题,到底是怎么回事呀????
image.png
2.现在出现了一个新问题,我把上面的报错的
onnx_model, check = onnxsim.simplify(onnx_model, overwrite_input_shapes=input_shapes)加粗的地方是我改完的,然后生成kmodel移植到开发板发现视频识别一直出现乱码的框,更懵逼了!!!!。图像如下所示:
image.png

硬件板卡


k230d

硬件板卡


k230d

2 Answers

这个警告没什么问题,是版本不同参数不同,并不会造成模型的问题。你用的部署代码是什么

我按照官网文档操作的,就是官网里的代码有的代码换个路径,其他的没变化,移植到k230d的代码也是按照那个来的,但是就是没有效果,我也拿它训练好示例的模型验证了,它那个能通,但是我这个不行

部署代码发一下

1.训练模型:yolo detect train data=datasets/fruits_yolo.yaml model=yolov8n.pt epochs=300 imgsz=320
随后得到一个叫yolov8n.pt的文件,省略安装各个包的代码
2.导出为onnx文件:yolo export model=./yolov8n.pt format=onnx imgsz=320
3.换路径:cd test_yolov8/detect

4.转为kmodel:python to_kmodel.py --target k230 --model ../../yolov8n.onnx --dataset ../test --input_width 320 --input_height 320 --ptq_option 0
复制kmodel文件到cammv的data目录下,评论字符限制我分为几段
5.在canmv ide中的代码:

from libs.YOLO import YOLOv8
from libs.Utils import *
import os,sys,gc
import ulab.numpy as np
import image

if __name__=="__main__":
    # 这里仅为示例,自定义场景请修改为您自己的测试图片、模型路径、标签名称、模型输入大小
    img_path="/data/test.jpg"
    kmodel_path="/data/yolov8n.kmodel"
    labels = ["apple","banana","orange"]
    model_input_size=[320,320]

    confidence_threshold = 0.5
    nms_threshold=0.45
    img,img_ori=read_image(img_path)
    rgb888p_size=[img.shape[2],img.shape[1]]
    # 初始化YOLOv8实例
    yolo=YOLOv8(task_type="detect",mode="image",kmodel_path=kmodel_path,labels=labels,rgb888p_size=rgb888p_size,model_input_size=model_input_size,conf_thresh=confidence_threshold,nms_thresh=nms_threshold,max_boxes_num=50,debug_mode=0)
    yolo.config_preprocess()
    res=yolo.run(img)
    yolo.draw_result(res,img_ori)
    yolo.deinit()
    gc.collect()

用test_yolov8.zip包中的detect/test_det_onnx.py测试过吗?

没有试过,这个文件是主要做什么的呢

测试onnx模型正确性,要是onnx模型本身就有问题,那就和kmodel没关系