腾讯开源深度学习框架ncnn,主打移动端
Posted Linux学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了腾讯开源深度学习框架ncnn,主打移动端相关的知识,希望对你有一定的参考价值。
腾讯优图实验室公布了成立以来的第一个开源项目 ncnn。ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。
ncnn与同类框架对比
基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。
ncnn 功能概述
支持卷积神经网络,支持多输入和多分支结构,可计算部分分支
无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架
ARM NEON 汇编级良心优化,计算速度极快
精细的内存管理和数据结构设计,内存占用极低
支持多核并行计算加速,ARM big.LITTLE cpu 调度优化
整体库体积小于 500K,并可轻松精简到小于 300K
可扩展的模型设计,支持 8bit 量化和半精度浮点存储,可导入 caffe 模型
支持直接内存零拷贝引用加载网络模型
可注册自定义层实现并扩展
恩,很强就是了,不怕被塞卷 QvQ
ncnn 重要功能详解:
● 支持卷积神经网络,支持多输入和多分支结构,可计算部分分支
● 无任何第三方库依赖,不依赖 BLAS/NNPACK 等计算框架
ncnn 代码全部使用 C/C++ 实现,跨平台的 cmake 编译系统,可在已知的绝大多数平台编译运行,如 Linux,Windows,MacOS,Android,iOS 等。并且可轻松移植到其他系统和设备上。
● ARM NEON 汇编级良心优化,计算速度极快
ncnn 为手机端 CPU 运行做了深度细致的优化,使用 ARM NEON 指令集实现卷积层,全连接层,池化层等大部分 CNN 关键层。对于寄存器压力较大的 armv7 架构,手工编写 neon 汇编,内存预对齐,cache 预缓存,排列流水线,充分利用一切硬件资源,防止编译器意外负优化。
测试手机为 nexus 6p,android 7.1.2
● 精细的内存管理和数据结构设计,内存占用极低
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,主打移动端的主要内容,如果未能解决你的问题,请参考以下文章