无人驾驶(ncnn学习)

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

 

    ncnn是腾讯开放的一个深度学习库。它的主要使用场景是嵌入式设备。如果大家已经用tensorflow、mxnet、caffe训练好了网络模型,那么可以port到这个库上面,在ncnn上面执行起来。

 

1、ncnn下载地址

https://github.com/Tencent/ncnn/tree/master/tools

 

2、ncnn目录结构

benchmark, 常用网络的配置方法

examples ,ncnn的使用方法

images,测试图片

src,源代码,主要包括network和各个layer的编译代码

toolchains,支持的各嵌入式平台

tools,实现其他深度学习平台到ncnn的数据转换

 

3、对arm a系列cpu的支持

软浮点的32位cpu

硬浮点的32位cpu

64位cpu

 

4、使用方法

由于ncnn本身不包括opencv,因此最好和opencv搭配使用。

另外由于net决定了计算的复杂度和模型大小,请务必先在pc上面优化好,然后port到ncnn上面。

ncnn只负责深度学习的优化,但驱动、上层代码、业务的优化也是必不可少的。

对image来说,不要每一帧都用深度学习,传统cv特征其实也不错。

ncnn代理不了多核arm,能多线程、多进程,就尽量多线程、多进程。

 

5、还可以改进的方向

对于不存在的layer,自己可以适当补充。

对于特定硬件已经实现的layer加速,比如TI soc提供的TI DL,可以port过来进一步提高速度。

如果是TI的soc,其实也可以看看能不能在dsp上面运行ncnn。

 

6、更快的加速方法

如果真的是产品级别的开发,它往往需要专门的硬件加速,比如说fpga或者cpld。

有了fpga或者cpld的硬件加速,再配合ncnn,这样出来的效果才能真正满足客户的要求。

 

ps:

  本身ncnn考虑的已经很全面了,比如它提供了tools目录,只需要很少的步骤,就可以将tf、mxnet、caffe上的model转换过来,并且在ncnn上面运行起来。此外,如果同学们对一些传统模型不是很熟悉,benchmark也提供了各种network的配置方法,可以说十分人性化。此外不清楚怎么编译的朋友,可以好好看看README.md文件。ncnn确实是一个上手很容易的深度学习库。有兴趣的同学可以将它和darknet一起比较学习。

 

  ncnn其实和tensorflow lite差不多,大家可以自己查找一下tensorflow lite的相关资料。其实不光是汽车,还是手机、安防设备、自主终端,大部分设备的学习还是要在嵌入式设备上面运行的。这就是ncnn这类本地库的意义。当然,如果网络传播的速度很快,云端执行和测试也是可以和必须的。

 

 

你可能感兴趣的:(自动驾驶)