腾讯开源深度学习框架ncnn,主打移动端

Posted Linux学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了腾讯开源深度学习框架ncnn,主打移动端相关的知识,希望对你有一定的参考价值。


腾讯优图实验室公布了成立以来的第一个开源项目 ncnn。ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。 



 ncnn与同类框架对比


基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。


腾讯开源深度学习框架ncnn,主打移动端


ncnn 功能概述


  • 支持卷积神经网络,支持多输入和多分支结构,可计算部分分支

  • 无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架

  • 纯 C++ 实现,跨平台,支持 android ios

  • ARM NEON 汇编级良心优化,计算速度极快

  • 精细的内存管理和数据结构设计,内存占用极低

  • 支持多核并行计算加速,ARM big.LITTLE cpu 调度优化

  • 整体库体积小于 500K,并可轻松精简到小于 300K

  • 可扩展的模型设计,支持 8bit 量化和半精度浮点存储,可导入 caffe 模型

  • 支持直接内存零拷贝引用加载网络模型

  • 可注册自定义层实现并扩展

  • 恩,很强就是了,不怕被塞卷 QvQ


ncnn 重要功能详解:


● 支持卷积神经网络,支持多输入和多分支结构,可计算部分分支


腾讯开源深度学习框架ncnn,主打移动端


● 无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架


 ncnn 代码全部使用 C/C++ 实现,跨平台的 cmake 编译系统,可在已知的绝大多数平台编译运行,如 Linux,Windows,MacOS,Android,iOS 等。并且可轻松移植到其他系统和设备上。


● ARM NEON 汇编级良心优化,计算速度极快


ncnn 为手机端 CPU 运行做了深度细致的优化,使用 ARM NEON 指令集实现卷积层,全连接层,池化层等大部分 CNN 关键层。对于寄存器压力较大的 armv7 架构,手工编写 neon 汇编,内存预对齐,cache 预缓存,排列流水线,充分利用一切硬件资源,防止编译器意外负优化。

腾讯开源深度学习框架ncnn,主打移动端

测试手机为 nexus 6p,android 7.1.2


 精细的内存管理和数据结构设计,内存占用极低


ncnn 采用原始的滑动窗口卷积实现,并在此基础上进行优化,大幅节省了内存。在前向网络计算过程中,ncnn 可自动释放中间结果所占用的内存,进一步减少内存占用。

腾讯开源深度学习框架ncnn,主打移动端

测试手机为 nexus 6p,android 7.1.2


 支持多核并行计算加速,ARM big.LITTLE cpu 调度优化


ncnn 提供了基于 openmp 的多核心并行计算加速,在多核心 cpu 上启用后能够获得很高的加速收益。ncnn 提供线程数控制接口,可以针对每个运行实例分别调控,满足不同场景的需求。


● 整体库体积小于 500K,并可轻松精简到小于 300K


ncnn 自身没有依赖项,且体积很小,默认编译选项下的库体积小于 500K,能够有效减轻手机 APP 安装包大小负担。此外,ncnn 还可自定义精简到小于 300K。支持多种模型格式,可从caffemodel转换半精度和 8bit 量化模型体积更小



● 支持直接内存零拷贝引用加载网络模型


ncnn 提供了直接从内存引用方式加载网络模型的功能。这种加载方式不会拷贝已在内存中的模型,也无需将模型先写入实体的文件再读入,效率极高。


● 可注册自定义层实现并扩展


ncnn 提供了注册自定义层实现的扩展方式,可以将自己实现的特殊层内嵌到 ncnn 的前向计算过程中,组合出更自由的网络结构和更强大的特性。




●本文编号274,以后想阅读这篇文章直接输入274即可。

●输入m获取文章目录

推荐↓↓↓
 

大数据技术

更多推荐

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

以上是关于腾讯开源深度学习框架ncnn,主打移动端的主要内容,如果未能解决你的问题,请参考以下文章

腾讯优图开放手机端深度学习框架,无第三方库依赖,可跨平台使用

移动端深度学习模型部署框架ncnn介绍

Android 配置NCNN环境

Android 配置NCNN环境

AndroidStudio配置NCNN环境

安卓端使用ncnn部署yolov5(v6.0)