3,706
社区成员




1. 载入dlc文件
std::unique_ptr<zdl::DlContainer::IDlContainer> container = loadContainerFromFile(model_name);
2. 建立SNPE和SNPEBuilder对象
- std::unique_ptr<zdl::SNPE::SNPE> snpe;
- zdl::SNPE::SNPEBuilder snpeBuilder(container.get());
3. 通过设置必要的参数,建立snpe推理对象
- snpe = snpeBuilder.setOutputTensors({})
- .setRuntimeProcessorOrder(runtimeList)
- .setUseUserSuppliedBuffers(useUserSuppliedBuffers)
- .setPlatformConfig(platformConfig)
- .setInitCacheMode(useCaching)
- .build();
在第3步里,setOutputTensors的参数为空列表,表示只取最终结果。但是,用这种方法,最终只能获取到一个输出的名称。
此参数还可以通过先用工具查看dlc网络的输出,再手动设置为存有输出名称的列表。
问题:
如果工程中有许多具有多输出的网络要用,手动设置就显得很麻烦而且不现实。这时就需要自动获取到网络多个输出的名称。但是我查了sdk里的接口,要么是要手动设置列表之后、要么是推理完成之后才能获取到输出名称列表。请问, 有没有在推理之前、且不需要手动设置就能根据网络对象container获取到多输出名称列表的办法?
之前我找到了一个笨办法,通过notepad++查看dlc文件,发现可以看到输出名称的字段,这样通过解析dlc文件,抓取该字段,就可以得到输出名称列表。但这种方法不是很满意,请问有没有更简便的办法?高通sdk不能根据网络获取多输出这一点,感觉很奇怪,所以我还是怀疑自己没有找到窍门。
碰到了同样的问题,请问大佬最后是怎么解决的呀?
大佬请教一下,您是如何输入多个输出检测头给snpe.