hello~我们准备采用VIM3来支持一款应用,需要使用NPU来支持我们的模型,但是其他部分应用需要基于Android系统。这种情况怎么解决,非常希望你们能够有一个好的建议
@xingyueye 安卓下也是有NPU应用的,你可以参考我们文档
非常感谢🙏。不过我对于安卓开发并不了解,我是否能够在一个本地的Ubuntu系统下实现模型的转换和量化,获得.so和.nb模型,然后通过调用它们来实现模型支持?
@xingyueye android npu 应用就是采用这种方式开发的,你可以看下上面文档
再次感谢🙏 我刚刚研究了下 khadas_android_npu_library
它主要支持了yolo系列的3个模型。我如果想要支持自己的模型(分割),是不是意味着需要重新实现一个类似的android_npu_library,感觉工作量有些庞大啊。。。
有没有类似TRT和NV板子那样的调用方式
目前安卓上只有这种调用方式,如果你的模型差别大的话,工作量是会多些
有没有类似于Ubuntu的转换工具那样,能够自动生成模型代码的方式呢
现在android 上用到的模型代码就是通过转换工具自动生成的,跟ubuntu 一样的
嗯嗯,我已经使用Ubuntu的转换工具生成了vnn_mode.c/.h等文件,不过还是有挺多疑惑,需要请教下🙏
- 目前Android调用NPU的方式,是基于一个模型的C库编译实现(这个库基础实现是基于OpenCV?),而不是通过一个端侧框架?
- 是否能够直接使用通用的移动端框架来用Android调用NPU,例如MNN,Tengine等?
- 目前我需要改动的代码可能还涉及哪些部分。除了用生成的模型代码文件来替换model_code中的部分,是否还需要改动或实现detect_code部分,我们这里是一个分割模型。
非常期待你的回复
@xingyueye
1.模型的库是依赖amlogic 提供的libovxlib.so 实现的,这个库可以在vendor/amlogic/common/npu目录
2.移动端框架没有深入了解
3.detect_code 部分是加载各模型的库,接口都是通用的,只是基于opencv 作了一些图像处理,你那个分割模型应该也差不多,具体你看下代码就了解了