ncnn Windows10 64bit编译配置

本文档详细记录了在Windows10 64位系统上,使用Visual Studio 2015编译配置Tencent的ncnn库的过程,包括protobuf的编译、ncnn的编译及VS2015的配置步骤,并解决了编译过程中遇到的问题。
部署运行你感兴趣的模型镜像

前言

本篇博客记录在Windows10 64bit上配置Tencent ncnn的过程,这里使用的Visual Studio版本为2015,CMake-3.14。注意: 这里配置的并不可以在VS中跟踪到cpp文件,这样的需要通过工程添加源码配置但是这样的安装方式并不是性能最优的

安装参考文档:Build for Windows x64 using Visual Studio Community 2017

step1: protobuf编译

Protobuf的下载路径是:protobuf。下载完成之后解压压缩包,之后打开VS2015 x64本机工具命令提示符
在这里插入图片描述
之后进入压缩目录,执行如下命令:

mkdir build-vs2015
cd build-vs2015
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
nmake
nmake install

出现这样便是安装成功:
在这里插入图片描述

step2:编译ncnn

解压下载下来的ncnn压缩包,进入ncnn目录创建build文件夹:

mkdir -p build-vs2015
cd build-vs2015

这里需要注意的是依赖库和主项目,要使用同样的build type(Debug/Release)。这里都通过cmake的-DCMAKE_BUILD_TYPE=Release指定,这里选用的type是Release

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=E:/VS_ncnn/protobuf/build_vs2015/install/include -DProtobuf_LIBRARIES=E:/VS_ncnn/protobuf/build_vs2015/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=E:/VS_ncnn/protobuf/build_vs2015/install/bin/protoc.exe ..
nmake
nmake install

安装log:
在这里插入图片描述

step3:VS2015配置

首先,新建Win32应用台控制程序,之后开始配置过程,配置包含目录
在这里插入图片描述
配置库目录
在这里插入图片描述
配置Windows运行库目录
在这里插入图片描述
配置附加依赖项
在这里插入图片描述
编写示例代码:

#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <map>
#include <vector>  
#include <algorithm>  
#include <functional>  
#include <cstdlib> 
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <net.h>

static int detect_squeezenet(const cv::Mat& bgr, std::vector<float>& cls_scores)
{
	ncnn::Net squeezenet;
	squeezenet.load_param("E:/VS_ncnn/ncnn/examples/squeezenet_v1.1.param");
	squeezenet.load_model("E:/VS_ncnn/ncnn/examples/squeezenet_v1.1.bin");

	ncnn::Mat in = ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, bgr.cols, bgr.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.input("data", in);

	ncnn::Mat out;
	ex.extract("prob", out);

	cls_scores.resize(out.w);
	for (int j = 0; j<out.w; j++)
	{
		cls_scores[j] = out[j];
	}

	return 0;
}

static int print_topk(const std::vector<float>& cls_scores, int topk)
{
	// partial sort topk with index
	int size = cls_scores.size();
	std::vector< std::pair<float, int> > vec;
	vec.resize(size);
	for (int i = 0; i<size; i++)
	{
		vec[i] = std::make_pair(cls_scores[i], i);
	}

	std::partial_sort(vec.begin(), vec.begin() + topk, vec.end(),
		std::greater< std::pair<float, int> >());

	// print topk and score
	for (int i = 0; i<topk; i++)
	{
		float score = vec[i].first;
		int index = vec[i].second;
		fprintf(stderr, "%d = %f\n", index, score);
	}

	return 0;
}

int main()
{
	std::string imagepath = "./test.jpg";
	cv::Mat m = cv::imread(imagepath, CV_LOAD_IMAGE_COLOR);
	if (m.empty())
	{
		std::cout << "cv::imread " << imagepath << " failed\n" << std::endl;
		return -1;
	}

	std::vector<float> cls_scores;
	detect_squeezenet(m, cls_scores);

	print_topk(cls_scores, 3);

	return 0;
}

从网上搜索一张喵咪的图片进行测试得到测试结果:
在这里插入图片描述
上面的分类在ImageNet中去查找对应的分类为:

类别序号分类描述
281‘tabby, tabby cat’
282:‘tiger cat’
285:‘Egyptian cat’

遇到的问题:

  1. _CRT_SECURE_NO_WARNINGS,这类问题比较普遍自行解决就好了链接

参考

  1. Visual Studio上编译ncnn
    对于需要源码调试的请将src中源码配置到工程目录再做适当修改,这里偷懒就不写具体操作了,本人配置之后运行结果与链接库文件的结果一致,具体可以留言或是邮件交流,可以参考下面文章进行配置:
  2. 腾讯ncnn-20180129版本在windows+VS2013上调试运行
  3. 腾讯开源ncnn:示例程序运行

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think>好的,用户想在树莓派4B上安装ncnn框架。我需要根据提供的引用资料来整理步骤。首先,检查引用内容,看看有没有安装ncnn的具体步骤。引用2提到在64位树莓派上安装ncnn,并且需要先安装OpenCV。引用5说编译很快,问题不多。另外,引用3提醒不要用pip或apt安装OpenCV,必须确保是64位版本。用户可能需要先安装OpenCV,参考引用2中的博客链接。然后,安装ncnn时需要从源码编译,步骤可能包括克隆仓库、创建build目录、cmake配置编译和安装。还要注意安装依赖项,比如protobuf。可能还需要配置环境变量或者将编译后的库文件复制到合适的位置。最后,测试安装是否成功,比如运行示例程序。需要把这些步骤整理清楚,用中文分点说明,确保用户能一步步操作。同时要提醒用户安装依赖,避免常见错误,比如使用错误的OpenCV安装方式。</think>### 如何在树莓派4B上安装ncnn框架 #### 步骤1:安装64位系统及依赖库 确保树莓派4B已刷入**64位操作系统**(如Raspberry Pi OS 64-bit)。安装编译所需的依赖库: ```bash sudo apt update sudo apt install build-essential cmake git libprotobuf-dev protobuf-compiler ``` 注意:若之前通过`apt`或`pip`安装过OpenCV,建议先卸载以避免版本冲突[^3]。 --- #### 步骤2:安装64位OpenCV **必须从源码编译64位OpenCV**以确保性能。参考以下流程: ```bash # 参考博客《00-在64位树莓派上安装OpenCV》[^2] git clone https://github.com/opencv/opencv.git cd opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j4 # 根据CPU核心数调整线程数 sudo make install ``` 编译时间约1小时以上,完成后验证: ```bash python3 -c "import cv2; print(cv2.__version__)" ``` --- #### 步骤3:编译安装ncnn框架 1. **克隆ncnn仓库**: ```bash git clone https://github.com/Tencent/ncnn.git cd ncnn git submodule update --init ``` 2. **编译配置**: ```bash mkdir build && cd build cmake -D NCNN_VULKAN=OFF -D CMAKE_BUILD_TYPE=RELEASE .. ``` 若需启用GPU加速(需Vulkan支持),添加`-D NCNN_VULKAN=ON`,但树莓派4B默认未集成Vulkan驱动。 3. **编译与安装**: ```bash make -j4 # 多线程加速编译 sudo make install ``` 编译完成后,库文件默认安装在`/usr/local/lib`,头文件在`/usr/local/include/ncnn`[^5]。 --- #### 步骤4:验证安装 运行示例程序测试: ```bash cd <ncnn-root-dir>/build/example ./mobilenetV2-yolov3 # 具体示例名称根据版本可能不同 ``` 若输出模型推理结果,则安装成功[^4]。 --- #### 常见问题 - **OpenCV版本冲突**:确保未使用`apt`或`pip`安装的OpenCV,仅保留源码编译版本[^3]。 - **内存不足**:编译时建议关闭其他程序,或使用交换分区(swap)。 - **依赖缺失**:若报错提示缺少库,通过`apt install`补充对应依赖。
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值