
NCNN
TwT520Ly
人之所以能,是相信能!
展开
-
【NCNN】第一讲:NCNN在CMakeLists中的配置
直接上代码# 设置cmake版本,如果cmake版本过高,可能会出现错误cmake_minimum_required(VERSION 3.5.1)project(NCNN_test)# 设置C++编译版本set(CMAKE_CXX_STANDARD 11)# 设置程序编译出的可执行文件set(MAIN_FILE main.cpp)set(EXECUTABLE_OUTPUT_P...原创 2018-05-25 22:08:24 · 5292 阅读 · 1 评论 -
【NCNN源码分析】0.前言
从上半年开始,一直就比较关注NCNN的进展,在嵌入式平台上,NCNN可以说是非常好的一个选择了。后面的话,会不断地更新博客,对NCNN源码进行分析,如果理解不到位的地方,欢迎指正!...原创 2018-09-25 19:44:04 · 2179 阅读 · 0 评论 -
【NCNN源码分析】1.基本数据类型
对于NCNN而言,核心在于网络的前向推理过程(Inference),其主要数据类型为mat,该数据类型以类的形式定义在src/mat.h中,其中包含了mat的构造函数、析构函数、常见的运算过程。#if __ARM_NEON#include <arm_neon.h>#endif通过宏变量__ARM_NEON控制Neon的使用。 // empty Mat(); ...原创 2018-09-25 20:03:50 · 3787 阅读 · 1 评论 -
【NCNN源码分析】2.网络层基类
Layer类是所有其他网络层的一个基类,所有的网络层都会从Layer继承,实现互异的计算过程,所有网络层的相似之处在于输入输出的规范以及前向传播的过程。Option是属性类,lightmode表示轻量级模式在网络推理中会不断地进行垃圾回收,num_thread表示线程数量,并且定义两个内存分配器,一个是对基本数据结构blob的内存分配,另一个是对计算空间workspace的内存分配。class...原创 2018-09-29 14:54:07 · 2308 阅读 · 0 评论 -
【NCNN源码分析】3.基本数据结构分析
对于NCNN,在网络层传递的过程中,进行数据流动的方式是通过自定义的blob实现的,对于blob通过生产者编号和消费者编号进行定义,producer表示输出该blob的网络层编号,consumers表示以该blob作为输入的网络层编号,前者只能是一个制造者,后者可以是多个使用者。class Blob{public: // empty Blob();public:#if ...原创 2018-09-29 15:08:56 · 1916 阅读 · 0 评论 -
【NCNN源码分析】4.内存分配器(未完成)
NCNN定义内存池分配器实现高效的内存管理。原创 2018-09-29 15:10:35 · 1432 阅读 · 0 评论