使用tengine sdk转化自己的模型并部署后,无法识别目标

模型是基于darknet训练的yolov3模型,在主机上能正常识别,但是根据VIM3官方教程将模型转换部署后就无法识别目标。

经测试,darknet的官方coco数据集模型可以正常部署并识别物体,但是自己的模型就会出现图上的情况,num_detections数值异常(另外想问下这个数值代表的含义),然后Segmentation fault。我自己的模型是一个classes=1的单类物体识别模型,使用darknet中的yolov3-voc.cfg配置文件修改后训练的。vim3固件版本为V1.0.7

我推测了几种可能:

  1. 模型本身有问题。因为在主机上识别的时候,面对数量较多的物体就有漏检的情况,而且数据集的目标都是低清晰度的小目标,识别难度较大。
  2. 量化的测试图片不符合要求。我使用训练时使用的50张图片作为quant测试图片,不满足100张的要求。另外图片清晰度都较低,不易训练与识别。

希望能够得到解答orz

@zzq980608

我没记错,你是之前需要用旧的固件验证Tengine的用户。

如果是单输入模型,是需要在代码里面修改分类数量的。Demo默认是按官方数据集设置的,即为80分类。

这个问题可能会导致精度丢失,但不会导致段错误

这里建议要达到100,不够你可以复制你的数据库。

是我,一个缓慢成长的菜鸡,感谢大佬解答orz!

修改分类数量这里我没有很明白。darknet训练时使用的.cfg文件和.data文件我都按照网上的教程修改过,模型量化使用的tengine_khadas_sdk中我没找到可修改的文件,是需要在板子本地的tengine_khadas_app中修改吗?具体需要修改哪一项呢?

@zzq980608

const int classes = 80;

代码里面的这一项指代了使用class分类的数量。你可以修改这个为1,同时跟一下这个变量在那些地方应用,可能还有其他地方需要修改。