VS2015搭建NCNN开发环境

简介: VS2015搭建NCNN开发环境

一、简介

NCNN的编译依赖OpenCV和Protobuf,所以需要总共需要安装OpenCV、Protobuf和NCNN三个东西。

二、安装OpenCV

1、下载OpenCV  Releases - OpenCV  一般选择最新版,这里以3.4.16为例。

2、选择喜欢的目录安装,这里以E:/soft-setup为例,安装之后生成下面几个文件。

3、添加path(vs2015对应:E:\soft-setup\opencv\build\x64\vc14\bin;vs2017对应:E:\soft-setup\opencv\build\x64\vc15\bin)到环境变量中,重启电脑生效。

4、打开VS2015,新建一个C++项目,点击属性管理器。

右键Release | x64属性,因为下面的ncnn,Debug | x64可能会有问题。

下图中的“包含目录”填写:

E:\soft-setup\opencv\build\include
E:\soft-setup\opencv\build\include\opencv
E:\soft-setup\opencv\build\include\opencv2

“库目录”填写:

E:\soft-setup\opencv\build\x64\vc14\lib


下图中的“附加依赖项”填写:

opencv_world3416.lib

4、写个demo,运行一下,OpenCV安装成功。

#include "stdafx.h"
#include <opencv.hpp>
using namespace cv;
 
int main()
{
  Mat srcImage;
  srcImage = imread("1.jpg");
  imshow("显示图像", srcImage);
  waitKey();
  return 0;
}

三、编译Protobuf

1、安装CMake

 下载 Download | CMake

2、下载并解压:protobuf-3.4.0 https://github.com/google/protobuf/archive/v3.4.0.zip

打开CMake-GUI:cmd执行cmake-gui

设置 源文件目录:E:/soft-setup/protobuf-3.4.0/cmake

设置 目标文件目录:E:\soft-setup\protobuf-3.4.0\buildvs1

点击 Configure:选择VS2015 Win64->Finish

不勾选:protobuf_BUILD_TESTS和protobuf_MSVC_STATIC_RUNTIME

点击 Add Entry:CMAKE_BUILD_TYPE=Release

修改(可选):CMAKE_CONFIGURATION_TYPES=Release

修改:CMAKE_INSTALL_PREFIX=./install

再点2次 Configure

点击 Generate


3、打开VS2015:

打开 目标文件目录(E:\soft-setup\protobuf-3.4.0\buildvs1)中的工程文件(protobuf.sln),编译其中的INSTALL项目。解决方案-INSTALL-生成。

四、编译NCNN

1、下载并解压:ncnn https://github.com/Tencent/ncnn/archive/master.zip

2、打开CMake-GUI:cmd执行cmake-gui

       设置 源文件目录:E:\soft-setup/ncnn-master

       设置 目标文件目录:E:\soft-setup/ncnn-master/build/

       点击 Configure:选择VS2015 Win64->Finish

       点击 Add Entry:Protobuf_LIBRARIES=E:/soft-setup/protobuf-3.4.0\buildvs1\install\lib\libprotobuf.lib

       点击 Add Entry:Protobuf_INCLUDE_DIR=E:/soft-setup/protobuf-3.4.0\buildvs1\install\include

       点击 Add Entry:Protobuf_PROTOC_EXECUTABLE=E:/soft-setup/protobuf-3.4.0\buildvs1\install\install/bin/protoc.exe

       修改(可选):CMAKE_CONFIGURATION_TYPES=Release

       修改:Protobuf_SRC_ROOT_FOLDER=E:/soft-setup/protobuf-3.4.0/src

       再次点击 Configure

       点击 Generate

95b4d519a3004d8dbdf51db2507714ea.png

3、打开VS2015:

打开 目标文件目录(E:\soft-setup/ncnn-master/build/)中的工程文件(ncnn.sln),编译其中的INSTALL项目即可。

编译结束后,在目标文件目录的install和tools目录下,即可看到编译好的文件。至此,ncnn编译完成。


4、打开VS2015,点击属性管理器, 右键Release | x64属性。


下图中的“包含目录”添加:

E:\soft-setup\ncnn-master\build\install\include\ncnn

“库目录”添加:

E:\soft-setup\ncnn-master\build\install\lib

“Windows运行库目录”添加:

E:\soft-setup\ncnn-master\build\install\bin

下图中的“附加依赖项”添加:

ncnn.lib

5、写个demo,运行一下,大功告成。

#include "stdafx.h"
#include <opencv2/highgui/highgui.hpp>
#include <vector>
#include "net.h"
#include <stdio.h>
 
using namespace std;
 
 vector<float> get_output(const ncnn::Mat& m)
 {
  vector<float> res;
  for (int q = 0; q<m.c; q++)
  {
    const float* ptr = m.channel(q);
    for (int y = 0; y<m.h; y++)
    {
      for (int x = 0; x<m.w; x++)
      {
        res.push_back(ptr[x]);
      }
      ptr += m.w;
    }
  }
  return res;
 }
 
int main()
{
  cv::Mat img = cv::imread("1.jpg");
   int w = img.cols;
   int h = img.rows;
 
   ncnn::Mat in = ncnn::Mat::from_pixels_resize(img.data, ncnn::Mat::PIXEL_BGR, w, h, 224, 224);
 
   ncnn::Net net;
   net.load_param("mobilenetv2.param");
   net.load_model("mobilenetv2.bin");
   ncnn::Extractor ex = net.create_extractor();
   ex.set_light_mode(true);
   ex.set_num_threads(4);
 
   ex.input("x", in);
   ncnn::Mat feat;
   ex.extract("y", feat);
   vector<float> res = get_output(feat);
   vector<float>::iterator max_id = max_element(res.begin(), res.end());
   printf("predicted class: %d, predicted value: %f", max_id - res.begin(), res[max_id - res.begin()]);
   net.clear();
   return 0;
}

相关文章
|
存储 物联网 测试技术
改变LoRA的初始化方式,北大新方法PiSSA显著提升微调效果
【4月更文挑战第23天】北京大学团队提出的新方法PiSSA,基于SVD进行参数高效微调,降低计算成本。PiSSA通过聚焦低秩矩阵训练,实现与全参数微调相当甚至更好的性能,快于LoRA收敛且在五个基准测试中胜出。PiSSA继承LoRA的参数效率,初始化仅需几秒,适合快速适应不同下游任务。尽管有潜力,但其在更大模型和任务上的效果,以及与LoRA结合的可能优化,仍是未来研究课题。[链接](https://arxiv.org/pdf/2404.02948.pdf)
475 7
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
8月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
300 1
|
8月前
|
人工智能 安全 语音技术
驱动“超真人”虚拟助手Maya的实时语音对话模型CSM-1b开源!
3月14日,创造出病毒级虚拟助手 Maya 的Sesame团队开源了他们的语音生成模型 CSM-1b,可根据文本和音频输入生成 RVQ 音频代码。这意味着,我们每个人都可以0成本拥有一个真正的AI伴侣了,甚至可以自己动手搭建、测试和改进模型。
375 1
|
缓存 网络协议 Linux
c++实战篇(三) ——对socket通讯服务端与客户端的封装
c++实战篇(三) ——对socket通讯服务端与客户端的封装
489 0
|
10月前
|
人工智能 弹性计算 运维
ECS控制台,AI助手与极简管控体验
本文介绍了ECS控制台的演进及最新AI工具功能。控制台作为运维平台,需兼顾用户体验、可靠性和安全性。针对不同用户(个人开发者、企业级用户、资源管理员和架构师),控制台提供了定制化AI助手,涵盖售前选型、售中购买、售后运维等全链路支持。AI助手可智能分析用户需求,推荐合适规格,并提供实例诊断、命令解释等功能,简化操作流程。此外,还推出了简洁版控制台,优化了小资源量用户的使用体验,减少复杂度,提升效率。未来,控制台将朝着更智能、个性化的chat ops方向发展。
|
JSON JavaScript 前端开发
在Vue3项目中,Vite起到的作用及其可以做的事情
Vite是Vue 3项目的关键快速开发服务器和高效的热模块替换(HMR)。它的亮点包括:使用ES模块实现快速启动和动态加载,模块级别HMR提升开发效率,Rollup打包优化生产构建。此外,Vite还支持插件系统、自定义配置、静态资源处理和现代JS特性。通过`npm create vite`可快速搭建Vue项目,配置文件`vite.config.js`可定制行为,`.env`文件管理环境变量。Vite优化了开发与构建流程,提高开发者效率并保证构建性能。
|
关系型数据库 MySQL 数据处理
针对MySQL亿级数据的高效插入策略与性能优化技巧
在处理MySQL亿级数据的高效插入和性能优化时,以上提到的策略和技巧可以显著提升数据处理速度,减少系统负担,并保持数据的稳定性和一致性。正确实施这些策略需要深入理解MySQL的工作原理和业务需求,以便做出最适合的配置调整。
1494 6
|
JavaScript 应用服务中间件 nginx
如何将你的vue项目部署到服务器
如何将你的vue项目部署到服务器
870 2
|
机器学习/深度学习 存储 人工智能
深度学习模型部署综述(ONNX/NCNN/OpenVINO/TensorRT)(上)
今天自动驾驶之心很荣幸邀请到逻辑牛分享深度学习部署的入门介绍,带大家盘一盘ONNX、NCNN、OpenVINO等框架的使用场景、框架特点及代码示例。
深度学习模型部署综述(ONNX/NCNN/OpenVINO/TensorRT)(上)