【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        深度学习的model训练完之后,一般需要部署到pc或者是嵌入式开发板上面。这个时候,如果部署的环境是arm开发板,本身又没有加速ip的话,那就只能用ncnn来解决。反之,如果有npu的帮助,也就是硬件加速来帮忙,这样会好很多。npu硬件加速的原理,其实就是把常用的算子做一个加速而已。因为很多深度学习的网络特别深,cnn类的算子又特别多,所以用npu加速是非常好的选择。

1、常用的soc npu

        公开市场上面能够获取到npu资料的soc不是很多,主要就是hisilicon、rk和allwinner。其他soc的npu资料,一般都要通过代理商,或者是原厂才能拿到。作为个人开发者,一般只能从上面三个soc里面挑选一个来处理。

2、个人建议选择的npu

        目前rk这部分npu资料还是比较多的,除了有很多的开发板之外,选择面也很多。比如rk3562、3566、3568、3588,自身sdk就支持很多的soc。甚至最便宜rv1106这种,也可以使用。所以可以先学会一个soc的npu,那么其他品牌的soc其实也是类似的道理。

3、rknn官方的资料链接

        如果是官方的资料链接,可以参考这个地址,里面主要包含了doc、rknn toolkit2、rknn toolkit lite2、rknpu2这几部分内容。

https://github.com/airockchip/rknn-toolkit2

        当然,除了官方链接之外,某开发板的资料也还可以,建议可以一起看看,

https://doc.embedfire.com/linux/rk356x/Ai/zh/latest/README.html
&
https://gitee.com/LubanCat/lubancat_ai_manual_code

4、rknn toolkit2的作用

        拿到pytorch训练好的model之后,一般先要转成onnx形式,然后再转成对应的rknn格式。rknn toolkit2就是帮助我们来做这个事情。它本身是一个whl开发包,运行在ubuntu20.04 os上面,python版本是python3,子版本有很多选择,大家挑选一个自己需要的版本就可以。

        早期rknn toolkit2一定要运行在pc上,现在也可以运行在aarch64 soc上了。

5、rknn toolkit lite2的作用

        这个名字和上面的rknn toolkit2可能有点混肴,不过rknn toolkit lite2的作用是让前面转成的rknn model,可以用python语言在npu上面跑起来。所以这个时候,程序的运行环境是arm soc上,开发语言是python,需要安装一个whl包。平时验证的时候,可以多用python来处理,速度会比较快,但是真正部署的时候还是c/c++。

6、rknpu2的作用

        刚才rknn toolkit lite2是python版本的应用,这里rknpu2就是c/c++版本的应用。里面包括了header文件、so文件,再加上model文件,基本上就可以直接应用了。

7、npu的硬件和驱动

        驱动部分厂家一般都是提前安装好的,甚至于说soc厂家自己都不一定有npu的驱动源码和sdk源码,因为它们可能都是ip公司提前编译好的。所以这部分,大家不用过于纠结,只要npu可以用起来,可以实现深度学习模型的加速,这就可以了。

8、其他需要注意的地方

        至于部分应用的roi设定、图像大小统一化这部分预处理,是c/c++提前做好的。而且,npu只对算子进行加速,类似于yolo里面的nms算法,大部分npu是不支持加速处理的,这部分代码也需要自己用c/c++完成后处理的工作。

        本身ncnn也好,rknn也好,都是深度学习的加速,训练、优化、改进,这部分还是需要利用pytorch、paddlepaddle继续学习和推动的。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐