使用nnSDK 进行推理时出错

我目前使用的是ONNX的模型,有两个输入,然后把他转换成 nb模型,转换之后,使用 image_classify_224*224 的示例运行报错。

错误如下
E NN_SDK: [amlnn_init:718]verifygraph fail

E NN_SDK: [amlnn_init:749]amlnn_init fail

E NN_SDK: [aml_module_create:62]amlnn_init is fail

以下两个方法做了修改:
int create_network(char *nbfile){

memset(&config,0,sizeof(aml_config));
config.path = (const char *)nbfile;
config.nbgType = NN_NBG_FILE;
config.modelType = ONNX;
std::cout<<"path:"<<config.path<<std::endl;
context = aml_module_create(&config);	
return 0;

}

int preprocess_network(char *jpegpath, char *jpegpath2){

int ret = 0;

nn_input inData;
uint8_t* rawdata = (uint8_t*)malloc(287*287*3* sizeof(uint8_t));
get_input_data_cv(jpegpath, rawdata, 287, 287);
inData.input_index = 0; //this value is index of input,begin from 0
inData.size = 287*287*3;
inData.input = rawdata;
inData.input_type = RGB24_RAW_DATA;
ret = aml_module_input_set(context,&inData);


nn_input inData2;
uint8_t* rawdata2 = (uint8_t*)malloc(127*127*3* sizeof(uint8_t));
get_input_data_cv(jpegpath2, rawdata2, 127, 127);
inData2.input_index = 1; //this value is index of input,begin from 0
inData2.size = 127*127*3;
inData2.input = rawdata;
inData2.input_type = RGB24_RAW_DATA;
ret = aml_module_input_set(context,&inData2);

if(rawdata != NULL){
	free(rawdata);
	rawdata = NULL;
	free(rawdata2);
	rawdata2 = NULL;
	
	return -1;
}

return ret;

}

目前已经测试 转换模型时 自动生成的代码是可以正常运行的。

@liushuan 你这个前处理时,aml_module_input_set()这个函数,你传入两次图片,不意味着你就输入了两种图片,你这样子应该还是一张图片,只是第二张把第一张的覆盖了

@Frank
那我该如何传图片呢?从现在的日志输出来看,还没有到 输入那一步,模型检测都出错了呢。

@liushuan 这套API只支持指定的模型,不是所有模型都支持的,你不能套用其他模型的代码的,你这个自定义的模型,要参考文档里面,自定义模型那一部分,自己做. 双输入也不确定支持不支持,我还是建议使用原始转换代码,自己设计前后处理,这里封装的API我个人认为是不支持双输入的,

这套API是闭源的,我也不知道内部结构

嗯嗯,好的,多谢解答,就是感觉原始AP封装I太麻烦了。

@liushuan 这套封装的API,不是很完善的,从表格看到支持的全部都是单输入模型,这套API我推测是不支持多输入的