![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NCNN
singing1001
码农
展开
-
NCNN class及关联关系图
先把ncnn的class及关联关系画一下,这样代码看起来就清晰多了。简单画了一下,仅供参考而已。原创 2018-12-12 14:41:25 · 550 阅读 · 4 评论 -
ncnn conv5x5s1_neon的非NEON实现解析
函数: static void conv5x5s1_neon(const Mat& bottom_blob, Mat& top_blob, const Mat& _kernel, const Mat& _bias, const Option& opt)说明:这个卷积实现有三个分支,使用NEON aarch64指令的分支, 使用NEON arm32...原创 2018-12-20 15:23:31 · 1215 阅读 · 0 评论 -
caffe2ncnn
转化后的ncnn param文件 格式如下: 7767517 第一行是一个magic value,是个fixed value [layers count] [blobs count] ...原创 2018-12-11 16:27:30 · 1205 阅读 · 0 评论 -
ncnn2mem
文件:ncnn2mem.cpp说明 :将ncnn的proto文本文件转换成二进制文件,并基于layer name在ncnn的param中的顺序进行编号,生成*.id.h文件。 把ncnn的param和model二进制文件dump到*.mem.h文件中该操作比较简单,不做详细的描述;在ncnn模型加载时,会对这两种模型存储形式分别进行描述。如果需要将网络结构和模型合并为一个文件,需...原创 2018-12-11 17:36:09 · 2404 阅读 · 1 评论 -
ncnn使用winograd的卷积实现条件及基本流程
NCNN的winograd卷积使用条件是:kernel为3x3,stride为1x1,kernel的扩展系数为1x1 输入和输出的channel个数大于等于32,小于等于128 bottom_blob padding后的blob 的width和height小于等于120Winograd的卷积实现主要有如下几个步骤:把kernel data进行扩充为8x8,并重新排列; 把bott...原创 2018-12-28 13:34:51 · 2349 阅读 · 1 评论 -
ncnn conv5x5s1_neon的aarch64的汇编解析,做的还是蛮不错的,给NCNN点赞
000000000000e470 <_ZN4ncnnL14conv5x5s1_neonERKNS_3MatERS0_S2_S2_RKNS_6OptionE>: e470: a9a97bfd stp x29, x30, [sp,#-368]! //把x29和x30存放到[sp0-368], sp = sp0-368 e474: 91...原创 2018-12-25 16:10:50 · 2589 阅读 · 0 评论 -
conv3x3s1_winograd64_transform_kernel_neon5的非NEON实现,
conv3x3s1_winograd64_transform_kernel_neon5的非NEON实现这里面的变换的理论依据,我还是没有搞清楚,先闷着头继续看了,希望高人能指点一二,谢谢!函数:void conv3x3s1_winograd64_transform_kernel_neon5(const Mat& kernel, Mat& kernel_tm, int inc...原创 2019-01-02 16:07:21 · 786 阅读 · 0 评论 -
conv3x3s1_winograd64_neon5非NEON实现的输入数据转换部分
输入数据的转换的具体处理流程如下:设outw =(top_blob.w+5)/6*6,即outw是top_blob.w扩展,为能被6整除的自然数;同样,outh=(top_blob.h+5)/6*6,为能被6整除的自然数; 设w = outw +2,h=outh + 2;w_tm= outw / 6 * 8,int h_tm = outh / 6 * 8; 分配Mat type的变量bot...原创 2019-01-03 11:33:28 · 654 阅读 · 0 评论