当前位置: 首页 > 软件库 > 神经网络/人工智能 > >

ncnn

高性能神经网络前向计算框架
授权协议 BSD
开发语言 C/C++
所属分类 神经网络/人工智能
软件类型 开源软件
地区 国产
投 递 者 燕博文
操作系统 跨平台
开源组织 腾讯
适用人群 未知
 软件概览

ncnn 是腾讯优图实验室首个开源项目,是一个为手机端极致优化的高性能神经网络前向计算框架。

ncnn 从设计之初深刻考虑手机端的部属和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。

基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。

ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。

功能概述

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

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

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

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

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

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

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

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

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

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

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

  • # github: https://github.com/Tencent/ncnn.git ncnn ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。n

  • 下面以在ncnn上实现caffe网络模型为例,和大家分享下ncnn这个牛叉的网络框架的使用指南。 准备caffe网络和模型 caffe 的网络和模型通常是搞深度学习的研究者训练出来的,一般来说训练完会有 train.prototxt deploy.prototxt snapshot_10000.caffemodel 部署的时候只需要 TEST 过程,所以有 deploy.prototxt 和 ca

  • 先贴几个博客!!! ncnn-arm编译:https://www.cnblogs.com/crazybird123/p/9952256.html mtnn模型训练源代码:https://github.com/Seanlinx/mtcnn mtnn快速检测人脸:https://github.com/ElegantGod/ncnn mtcnn简化版(裁剪):https://github.com/cpu

  • 1.图像预处理 ncnn::Mat 1.1 from_pixels_resize() 生成目标尺寸大小的网络输入Mat mat_pixel.cpp 双线性插值图像形变 resize_bilinear_c1/c2/c3/4 1通道/2通道/3通道/4通道 图像变形算法 mat_pixel_resize.cpp 像素图像 转换成ncnn::Mat Mat::from_pixels() >>> 不同类型

 相关资料
  •     在上一篇里,我们已经讲到了CNN的结构,包括输出层,若干的卷积层+ReLU激活函数,若干的池化层,DNN全连接层,以及最后的用Softmax激活函数的输出层。这里我们用一个彩色的汽车样本的图像识别再从感官上回顾下CNN的结构。图中的CONV即为卷积层,POOL即为池化层,而FC即为DNN全连接层,包括了我们上面最后的用Softmax激活函数的输出层。     从上图可以看出,要理顺CNN的

  • 我正在学习神经网络和反向传播。我想我了解网络是如何工作的,在输入、输出、隐藏层、权重、偏差等方面。但是,我仍然不完全了解如何设计一个网络来适应一个问题。IE:假设我想要一个神经网络来学习如何演奏曲子,我该如何把这个问题转化为神经网络的设计呢?欢呼:)

  • 我正在研究一个基于代理的流行病模型。这个想法是单个代理根据他们在网络中观察到的情况(基于距离)做出决定。我在每个代理中都有几个功能,可以动态更新受感染接触者的数量,接触者表现出特定行为等。 下面的代码用于计算代理网络中受感染的联系人。 至少还有3个这样的函数可以保持表示代理网络中其他功能的其他代理的计数。现在,当我 有没有一种计算效率更高的方法来跟踪更大人口的网络统计数据?

  • 之前介绍的循环神经网络模型都是假设当前时间步是由前面的较早时间步的序列决定的,因此它们都将信息通过隐藏状态从前往后传递。有时候,当前时间步也可能由后面时间步决定。例如,当我们写下一个句子时,可能会根据句子后面的词来修改句子前面的用词。双向循环神经网络通过增加从后往前传递信息的隐藏层来更灵活地处理这类信息。图6.12演示了一个含单隐藏层的双向循环神经网络的架构。 下面我们来介绍具体的定义。 给定时间

  • 神经网络 (Neural Network) 是机器学习的一个分支,全称人工神经网络(Artificial Neural Network,缩写 ANN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。 Perceptron (感知器) 一个典型的神经网络由输入层、一个或多个隐藏层以及输出层组成,其中箭头代表着数据流动的方向,而圆圈代表激活函数(最常用的激活函数为

  • 译者:bat67 最新版会在译者仓库首先同步。 可以使用torch.nn包来构建神经网络. 我们以及介绍了autograd,nn包依赖于autograd包来定义模型并对它们求导。一个nn.Module包含各个层和一个forward(input)方法,该方法返回output。 例如,下面这个神经网络可以对数字进行分类: 这是一个简单的前馈神经网络(feed-forward network)。它接受一

  •     在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。     而对于这类问题,RNN则比较的擅长。那么RNN是怎么做到的呢?RNN假设我们的

  • 在感知机原理小结中,我们介绍过感知机的模型,它是一个有若干输入和一个输出的模型,如下图: 输出和输入之间学习到一个线性关系,得到中间输出结果:$$z=sumlimits_{i=1}^mw_ix_i + b$$ 接着是一个神经元激活函数: $$sign(z)= begin{cases} -1& {z<0} 1& {zgeq 0} end{cases}$$ 从而得到我们想要的输出结果1或者-1。 这个