yolo4模型转换

用户您好,请详细描述您所遇到的问题,这会帮助我们快速定位问题~

1.芯片型号:x3

2.天工开物开发包OpenExplorer版本:openexplorer/ai_toolchain_ubuntu_20_j5_cpu

3.问题定位:模型转换

4.问题具体描述

  • 我用https://github.com/Tianxiaomo/pytorch-YOLOv4下的 demo_darknet2onnx.py能成功生成onnx格式文件,并且能够通过01_check.sh,02_preprocess.sh,03_build.sh 3个步骤后成功生成bin文件,然后下载到主板上运行提示tuple index out of range错误,我对比了你们的yolo5案例,发现onnx文件的输出有区别,我生成的onnx文件输出是’boxes’, ‘confs’,你们的有所不同,我怀疑是转换到onnx格式的途中出问题了,你们可否提供从yolov4.weights生成onnx格式的工具?-

关于您的问题描述有一个小问题,您是用的J5的OE开发包编译模型放到X3的芯片上运行是嘛?这边建议如果您使用X3的计算平台,请使用XJ3的OE开发包编译模型,XJ3OE开发包获取路径为https://developer.horizon.cc/forumDetail/136488103547258769

您好,关于PyTorch导出ONNX,您可以参考这篇社区文章Pytorch导出ONNX及模型可视化教程 (horizon.cc)

您好,地平线工具链在持续迭代优化,为了给您提供更好的服务,希望您能抽出3分钟左右的时间,将您在使用工具链期间的感受和建议告诉我们,您的宝贵意见对我们很重要,非常感谢!-
问卷链接:地平线算法工具链使用满意度反馈

您好,您这里的模型转换我们不提供生成ONNX格式的工具,需要您提前准备好ONNX模型。您可以使用torch公版提供的ONNX转换工具,可以参考pytorch-YOLOv4/tool/darknet2onnx.py中torch.onnx.export(),需要您自主学习一下用法;

此外,也有可能是别的部分出现了问题,还麻烦您在板端使用hrt_model_exec model_info --model_file xx.bin命令,如有报错,麻烦提供一下完整截图~

如果板端model_info无报错,会打印模型输入输出信息,您可以检查一下是否符合预期。然后继续尝试使用hrt_model_exec perf工具评测模型性能,如有报错,还请提供完整截图~

第一张图的output我觉得是有问题的,我对比了yolov4-tiny.weights来转的,正常模型输出应该是2个输出,分别是13*13*256,26*26*256才对

您好,从输出来看,Tianxiaomo/pytorch-YOLOv4的项目对公版模型输出做了处理,并非导出ONNX或者模型转换的问题;您截图中的红字是因为板子上没有keros芯片,在加载阶段会判断是否有该芯片,可以忽略,建议您使用最新版本的XJ3 OE开发包编译模型,最新XJ3 OE包路径为 https://developer.horizon.cc/forumDetail/136488103547258769

我用你们的推理工具来推理,结果很怪的,成绩也不是在0-1之间,你们这个工具能否把推理结果画到图片上来直接看结果?

您好,类别score不在0-1之间可能是模型分类分支输出没有做Sigmoid处理。我们的板端不支持可视化,建议您在PC端使用模型转换生成的quantized_model.onnx进行推理可视化,因为quantized_model.onnx和.bin模型是一致的

我对比你了你们的yolo5输出,都是n*h*w*c的方式生成如1,21,21,255,但我用的转换工具的输出是’boxes’, 'confs’生成如1,2535,1,4,这是为何呢?

您好,模型输出不同很正常,取决于是否对输出做处理且模型输出是和后处理对应的,例如yolov5的后处理代码

您的模型输出应该没有问题,1x2535x1x4是bbox分支,1x2535x80x1是类别分支,直接接后处理,在PC端进行可视化就行了

有什么pc端的可以化工具推荐,最好可以在线直接使用的

您可以使用Netron对模型结构进行在线可视化 Netron ;模型推理可视化(检测框和类别)需要您自己编写后处理代码~

你们提供的demo中有没类似这种1x2535x1x4,1x2535x80x1的后处理代码作为参考?

您好,我们提供的demo里应该是没有的,但是您提供的这个项目里https://github.com/Tianxiaomo/pytorch-YOLOv4是有的,可以阅读参考