Toybrick

求助!多线程mobilenet ssd的C代码推断出错

回帖奖励 6 金钱 回复本帖可获得 2 金钱奖励! 每人限 2 次

troy

版主

积分
2352
楼主
发表于 2020-2-26 11:05:08 | 显示全部楼层

回帖奖励 +2 金钱

多提供点信息。
1.转换模型这一步是在PC还是在Toybrick板子上执行的,rknn-toolkit的版本是多少
2.Toybrick板子固件是否是最新的,rknn-api和driver驱动是哪个版本?(这个在程序运行时会有打印信息)
3.推理出现内存报错,可以多加点调试信息,具体是哪一步执行之后出现内存报错。
4.出错的原因应该就局限在ssd_demo_person.cpp之中,因为我以前common也测试过其他不同的模型,也没有出现过内存的错误。但是不排除ssd_demo_person.cpp设置错误,导致common中出现报错。具体需要添加调试信息跟一下流程才知道。
回复

使用道具 举报

troy

版主

积分
2352
沙发
发表于 2020-2-27 14:59:19 | 显示全部楼层

回帖奖励 +2 金钱

Devin 发表于 2020-2-26 18:23
1. 模型转换是在PC的Ubuntu虚拟机上做的,rknn-toolkit的版本是1.2.0;
2. rknn-api的版本为1.2.0,driver驱 ...

关于第三点,你说的rknn_test::load_model中new的变量没有释放,你是指output_size吗?如果是,在load_model当中是不能释放的,因为output_size是类的指针,用来存储输出模型的size信息,在类的其他接口中也有用到,output_size被释放,必定会导致段错误!!!
我的output_size释放,已经在rknn_test的析构函数中做了,无需改动。

另外,可以在load_model加下打印,看下从模型读取到的size和你预期的size是否一致。
回复

使用道具 举报

troy

版主

积分
2352
板凳
发表于 2020-2-28 08:53:08 | 显示全部楼层
Devin 发表于 2020-2-27 17:19
谢谢版主。前面已经有释放了,那里确实不用。您指的是load_model里的output_size[0]和output_size[1]的大 ...

1.确定caffemodel实际的输出形状,你可以用https://lutzroeder.github.io/netron/加载caffe模型,查看你的输出节点的实际形状。
2.确定转换模型的时候,选择的输出节点,是否就是你想要的节点,是否和caffe模型中的节点一致。
3.你的附件中,ssd.py使用python进行推理,获取到的inference输出数据的大小是否和模型节点一致。
4.如果有使用caffe模型推理的源码,你也可以参考一下原始代码对输出数据的数据,进行对比。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表