网站布局是什么,wordpress大前端2.0,上海品牌营销策划公司,dw5做简单的企业网站最近一段时间一直在做模型部署的工作#xff0c;主要是利用NCNN部署到安卓端#xff0c;跟着网上的博客和开源项目#xff0c;做了很多工作#xff0c;也学习到很多东西#xff0c;但是对于NCNN的源码#xff0c;并没有仔细的研究过#xff0c;对我来说#xff0c;仿佛…最近一段时间一直在做模型部署的工作主要是利用NCNN部署到安卓端跟着网上的博客和开源项目做了很多工作也学习到很多东西但是对于NCNN的源码并没有仔细的研究过对我来说仿佛是一个神秘的存在一样接下来将会对NCNN的源码进行研究加深对于NCNN的理解。
正文
代码版本
截止到目前ncnn已经快5年了代码也越来越庞大很多都是一些新添加的功能支持啥的。这回读代码我们比较关心的是ncnn整个的架构以及它代码的逻辑是怎么走的所以这里我选用了ncnn最早的一个release的代码这个代码的整体使用逻辑是现在的是一样而且代码量比较少看起来比较方便我用的是这个 https://github.com/Tencent/ncnn/releases/tag/20170724
【demo】 我们来看一下ncnn自带的一个经典demosqueezenet的代码这里我只贴出与ncnn有关的部分
// 网络加载
ncnn::Net squeezenet;
squeezenet.load_param(squeezenet_v1.1.param);
squeezenet.load_model(squeezenet_v1.1.bin);// 数据预处理
ncnn::Mat in ncnn::Mat::from_pixels_resize(image.data, ncnn::Mat::PIXEL_BGR, image.cols, image.rows, 227, 227);
const float mean_vals[3] { 104.f, 117.f, 123.f };
in.substract_mean_normalize(mean_vals, 0);// 网络推理
ncnn::Extractor ex squeezenet.create_extractor();
ex.set_light_mode(true);
ex.input(data, in);
ncnn::Mat out;
ex.extract(prob, out);从上面的代码可以看到整个过程大体可以分为四个部分
一、网络加载
load_paramload_model
二、数据预处理
from_pixels_resizesubstract_mean_normalize
三、网络推理
create_extractorinputextract
四、每一层的推理隐含在模型内的
接下来的学习顺序也很简单主要按照这四部分设计的代码一层一层进去看进去学习。
参考
致谢https://zhuanlan.zhihu.com/p/454835595