windows 使用ncnn vulkan部署yolox 记录(小白向,比较详细)

windows 使用ncnn vulkan部署yolox 记录

前言

之前在树莓派4B移植过一次ncnn部署Yolo-Fastest,同时也在笔记本的windows里面部署了一套作为调试开发。但因为年代久远,很多细节都模糊了,今天重新弄了一遍跑yolox模型,发现比当时简便了很多,主要是因为才发现ncnn官方仓库就有预编译好的windows版本,不用自己编译,方便太多了。

环境搭建

使用的是win10 x64系统,主要需要使用4个东西:
1、Visual Studio Community 2019
2、ncnn对应vs2019的编译库
3、opencv库,也是官方预编译好的windows版本
4、vulkan的sdk

  • vs2019
    去网上找安装文件,官网也能找到,不过要仔细翻一下,现在的是2022(当然也可以安装2022,但是ncnn需要下载对应的预编译版本),要去旧版本的链接找,就是1个1MB多的在线安装文件。安装时如果不想体积太大,只需选择c++桌面开发1个模块就够了在这里插入图片描述

  • ncnn
    无需编译,直接去官方仓库下载Visual Studio对应的预编译版本就好,我这里是:https://github.com/Tencent/ncnn/releases/download/20220420/ncnn-20220420-windows-vs2019.zip
    github下载慢的话,码云也有

  • opencv
    我选择的是4.5.4版本,下载链接:https://opencv.org/releases/
    解压opencv后,需要设置一下系统的环境path(对应你解压opencv的存放路径),让vs 2019找到它的路径
    在这里插入图片描述

  • vulkan
    下载最新的就行了(目前是1.3.211.0),一路next,会安装在c盘的VulkanSDK目录下
    地址:https://vulkan.lunarg.com/sdk/home#windows

然后将opencv和ncnn解压到一个文件夹内,我放的地方是D:\ncnn
目录里面应该有两个文件夹
在这里插入图片描述

vs工程配置

下载我测试用的工程,里面包含ncnn yolox的推理代码、yolox转换好的模型和测试图片。
网盘地址:
https://pan.baidu.com/s/1g5XSDd30Kjalj6DtDWcS4A
提取码:1234

使用vs 2019打开工程后,需要注意以下几个地方的配置:

1、要将配置管理器设置成Release。因为官方预编译的ncnn版本是发行版的,不是debug版,如果不配置成Release,运行会一堆报错的
在这里插入图片描述

2、检查工程属性里面的VC++目录->包含目录和库目录的配置是否正确配置了ncnn、opencv和vulkan,要和自己实际存放的目录路径一致
在这里插入图片描述
在这里插入图片描述

3、属性里面的链接器->输入->附加依赖项应该如下:
在这里插入图片描述
我将三个库里面所有的lib都包含进去了
opencv_world455.lib(注意这个不要选opencv_world455d.lib,d表示为debug版本)
ncnn.lib
vulkan-1.lib
GenericCodeGen.lib
glslang.lib
MachineIndependent.lib
OGLCompiler.lib
OSDependent.lib
SPIRV.lib

4、属性调试里面的命令参数填入推理图片的名字在这里插入图片描述

保存后,工程就可以运行调试了。因为使用了vulkan,ncnn会调用显卡进行加速的。我对比了一下,用cpu推理的时间需要100多ms以上,使用vulkan只需10几ms,看来ncnn所说的新版本大幅优化了vulkan的加速效果还是很明显的。
切换vulkan加速的代码:

	yolox.opt.use_vulkan_compute = true;
	// yolox.opt.use_bf16_storage = true;

在这里插入图片描述

总结

现在在windos下使用ncnn开发还是很简便的。通过Visual Studio IDE可以很方便地进行断点调试C++代码,对于学习ncnn怎样解码各种模型十分有帮助。另外,虽然ncnn是针对嵌入式cpu进行优化的神经网络推理框架,但是随着vulkan api的不断优化,显卡加速也十分实用了。我觉得vulkan的优点是兼容性较广,只需设备支持vulkan驱动就可以了,windows、macos、linux三大平台+各种gpu、npu都行。我试过使用amd 5600h笔记本上的vega核显也能正确运行,cuda则只能在nvidia的硬件上才能跑。

猜你喜欢

转载自blog.csdn.net/flamebox/article/details/125255044