基于Openvino的yolov7在windows平台开发和部署应用,代码下载可直接运行
目录
简介
本文主要以yolov7的公版检测模型为例展开,对Openvino在windows平台的开发环境配置、代码开发和vs2019生成的“.exe”文件在其它电脑或windows平台部署时依赖环境的配置等做介绍,避免读者后期踩坑。其中,示例代码的“.exe”文件下载便可直接在windows环境中运行。
环境配置
在此部分,主要对Windows下的opencv环境、Openvino环境和Vs2019环境配置进行详细介绍。
Opencv环境配置
下载安装
首先在Opencv官网选择合适的版本直接下载即可,笔者选择的是opencv-4.5.4版本。也可从网盘下载链接,提取码6666。
等待几秒便可自己弹出下载
下载完成后目录内出现下图中红框内内容。之后点击安装即可。为了避免网络等因素影响下载,也可从百度网盘下载。
点击.exe文件运行,经历过提取文件之后选择安装目录,这个根据自己情况选择即可,笔者已经安装过,此处以安装后的内容截图展示。如下,安装后文件夹包含以下内容。
环境变量配置
找到此电脑,右键找到“属性”并打开,点击“高级系统设置”,再点击“环境变量”,
之后出现如下界面,点击路径“Path”,在系统变量中添加安装的opencv的路径,如“E:\opencv\opencv\build\x64\vc15\bin”和“E:\opencv\opencv\build\bin”,具体路径根据自己安装进行更改。
到此处,opencv的下载和电脑的环境配置便结束了,注意“E:\opencv\opencv\build\x64”路径下有“vc14”和“vc15”两个文件夹,选择“vc15”下的“bin”目录进行环境配置。
Openvino环境配置
下载安装
可在官网下载,下载地址和界面如下图所示。笔者选择的是2022.3.1版本,具体版本图中蓝色选择,之后点击Download Archives即可。也可从网盘下载,提取码6666。
下载后解压压缩包,文件列表如下:
环境配置
在“C”盘的“Program Files (x86)”文件夹中建立“Intel”文件夹,将解压后的文件复制过去,当然了,文件夹也可以按照自己版本号命名,如笔者的路径为“C:\Program Files (x86)\Intel\openvino_2022.3.0”。此部分路径主要用于后面的环境配置,和opencv的电脑上环境配置类似。
找到环境变量
添加路径
三个路径分别为:
“C:\Program Files (x86)\Intel\openvino_2022.3.0\runtime\bin\intel64\Release”
“C:\Program Files (x86)\Intel\openvino_2022.3.0\runtime\bin\intel64\Debug”
“C:\Program Files (x86)\Intel\openvino_2022.3.0\runtime\3rdparty\tbb\bin”
到此处,openvino的安装和电脑上环境配置结束。
Vs2019安装
软件安装
可以自己找渠道也可以网盘下载,提取码6666。
步骤1:鼠标右击【vs_Professional.exe】选择【以管理员身份运行】。
步骤2:点击“继续”,等待片刻,则出现下图。因为笔者已经下载安装过了,所以选择这三项需要的空间为0。特别注意,右边的单个组件,可以选择里边需要的安装,这样可以减少内存和安装时间,如果内容够和不着急可以全选。
步骤3:接下来就是语言包,选择中文和英文就可以。
步骤4: 安装位置,会有三个路径,不能设置在同一个文件夹,即要设置三个不同的路径。(点击"…"可更改软件安装位置,建议不要安装在C盘,可以在D盘或其它磁盘下新建一个“vs2019”文件夹。注:安装路径中不能有中文),取消勾选【安装完成后保留下载缓存】,在右下角点击【安装】。
步骤5:稍等片刻,则出现画面,显示已安装,关闭界面即可。
软件激活
步骤1:重新启动vs2019,选择“继续但无需代码”进入主界面。
步骤2:点击主界面的上方菜单栏的“帮助”,选择“注册Visual Studio”。,选择“使用产品密钥解锁”。
步骤3:输入密钥,点击应用,则出现下面的画面,激活成功,关闭界面即可。
此外,该软件不会自动创建桌面启动快捷方式,创建桌面启动快捷方式方法:点击桌面左下角【开始】图标,点击【所有应用】→找到并拖动【 Professional 2019 】图标到电脑桌面。至此,vs2019安装完成。
开发示例
pytorch模型训练
yolov7模型
步骤1:在github上下载源码或在笔者的百度网盘下载yolov7_python文件,解压打开后目录如下所示,提取码为6666。
步骤2:制作自己的数据集,进行标注和格式转换。(这一部分如果有问题,可以私聊,我再搞详细的教程)
步骤3:修改相应的参数进行模型训练,得到“.pt”模型,并使用“export.py”文件将模型转为“.onnx”格式。
.exe可执行文件部署应用
基于Openvino和C++的yolov7推理:
在vs2019中编写前处理、后处理代码,以及结合Openvino框架的推理过程,也可以在其它IDE中编辑复制过去,如下图。
其中main.cpp内容主要为:
#include "DetYolov7.h"
int main() {
std::cout << "欢迎使用yolov7检测示例" << std::endl;
DetYolov7 det;
std::string Model_dir;
std::string Label_txt;
std::string Load_Path;
std::string Save_Path;
std::vector<std::string> vec_ImageNames;
std::vector<cv::Mat> vec_ImageLoad;
//读取配置文件
read_ini_file("./config.ini", Load_Path, Save_Path, Model_dir, Label_txt);
//Load_Img_name(Load_Path, vec_ImageNames, vec_ImageLoad);//
double cof_threshold = 0.25;
double nms_area_threshold = 0.45;
//模型初始化
det.init(Model_dir, Label_txt, cof_threshold, nms_area_threshold);
auto start = std::chrono::high_resolution_clock::now();
//加载图像
cv::Mat im = cv::imread(Load_Path);
//推理图像和保存
auto result = det.detector(im, Save_Path);
auto end = std::chrono::high_resolution_clock::now();
// 计算代码执行的时间(微秒)
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
// 输出运行时间
std::cout << "Code executed in: " << duration.count() << " microseconds" << std::endl;
}
}
软件运行过程:
步骤1:在建立的工程属性中,配置opencv和openvino环境,也可以把使用到的依赖库提前复制到文件夹中,如放在include和lib文件夹。
配置环境处,则可以设置如下,
步骤2:读取配置文件(config.ini)中的模型路径、标签路径和测试图像(可以更换成摄像头读取图像)。
步骤3:模型初始化
步骤4:进入while(1)循环,确保模型初始化只进行一次,避免推理一次模型初始化一次
步骤5:加载图像进行推理,并保存标注的图像到指定文件夹
步骤6:根据检测结果和制定的判断逻辑,进行相应的需求判断,并保存结果到日志文件。(此处使用的穿件日志文件为48小时清空和重新创建,比较繁琐,也可以用其它方式进行,因涉及到项目此处没有贴出)
部署应用
将开发好的代码和训练好的模型进行融合,生成可执行文件,并进行移植部署应用(windows环境下,便是生成的.exe文件可以在其它电脑上运行)。
步骤1:运行程序
步骤2:在文件夹中生成的“x64”文件夹中的“Release”文件夹中生成如下信息。在移植部署时,只有“XXX.exe”的应用程序有用。
步骤3:将路径配置文件“config.ini”和“XXXX.exe”可执行文件以及依赖库放在同一个文件夹中便可。
步骤4:把文件夹整体复制到别的文件夹点击应用程序即可运行。
运行示例
下载网盘“.exe”可执行文件
可从百度网盘下载yolov7_openvino_exe笔者开发完成的,下载即可使用,提取码6666。应用的yolov7检测类别为80类的公版模型的检测结果。模型和标签也可以根据自己的数据集进行替换。
“ yolov7_示例.exe”运行示例
步骤1:下载解压,打开后文件目录为:
步骤2:在点击“yolov7_示例,exe”程序则自动运行。模型和图像均在“data”数据集中。也可以更改配置文件“config.ini”中的路径进行更改,换成自己的图像和路径。
步骤3:显示终端和标注的图像。
步骤4:关闭图像,结束本次运行。
小结
因整体流程和开发应用涉及到项目,所以运行示例仅展示了读取配置文件、推理和保存结果的功能。项目内容在此基础上进行了大量开发和扩展,如判断图像数量、清空路径、添加日志文件、逻辑判断等等。
欢迎沟通交流。
更多推荐
所有评论(0)