目录
一.前言
二.源码下载
三.环境安装
opencv安装
四.ONNX模型导出
五.总结
我们在之前的yolov7入门教程中讲到了如何进行环境的安装和python终端运行:
YOLOv7(目标检测)入门教程详解---环境安装
YOLOv7(目标检测)入门教程详解---检测,推理,训练
今天我们就来学习一下如何用c++部署yolov7
c++源码下载地址: https://github.com/UNeedCryDear/yolov7-opencv-dnn-cpp
使用这个源码的要求是opencv 版本>=4.5.0
竟然要使用opencv,那我们当然要安装opencv了,博主用的是VS 2019去跑的,那么我就说一下VS 2019是如何安装opencv的
由于我们要用GPU去加速,那在c++中就要利用到opencv-cuda去加速,那么这个时候官网的opencv包是不够的,我们同时还需要opencv_contrib的包去编译opencv。那么我们先说要准备的软件。
VS(默认已有)
opencv4.5.5
opencv4.5.5_contrib
cmake
opencv官网:Home - OpenCV
点击官网的library->release
选择opencv-4.5.5的github,并且点击tags
选择4.5.5,下拉,点击opencv4.5.5-vc14_vc15.exe进行下载
下载完之后就会得到opencv的文件夹
opencv_contrib的下载:GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules
点击tags,选择与opencv相对应的版本
下载好之后我们把,opencv_contrib和opencv放在同一目录下
Cmake下载:CMake
选择较新的版本下载即可,但是记得注意:安装的时候勾选加入path,并且生成cmake-gui。
接下来具体操作,我给大家推荐一个非常好的b站视频教程,按着教程做,问题就全部解决了
视频链接:OpenCV4.5.x+CUDA11.0.x源码编译与YOLOv5加速测试!_哔哩哔哩_bilibili
过程强调:
1.在vs生成中,一定要选择release版本
2.路径一定要写对
3.cuda与cudnn版本一定要对应
4.如果已经vs已经生成好了newbuild,之后如果要重装cuda,那就得重新生成
我们之前用python跑yolov7的时候权重都是pt文件,那么在c++中我们用net去读取onnx模型从而进行yolo的推理,所以这里我们需要将pt模型转成onnx模型。
其实很简单,yolov7源码中自带了export.py文件,通过export直接导出。但是在之前我们需要安装onnx模型的插件。这个时候我们打开yolov7,找到里面的requirments。
把这三个#去掉,然后保存,之后在按我之前的教程中说的,在终端用清华镜像重新下载一遍即可
YOLOv7(目标检测)入门教程详解---检测,推理,训练
进入我们之前创建好的虚拟环境,输入以下指令
显示success则导出成功,我的建议是不要按照yolov7的官网指令去导出,很容易出错,直接指定一个pt权重路径即可,然后img-size要对应,默认是640 640 不用去修改了。
此时我们把模型放到我们的vs项目文件夹之下
然后在c++源码中该model路径
然后运行进行推理测试:
你会发现用GPU反而要三秒一张照片,这是因为第一次调用GPU需要一定的时间,所以第一次时间比较长。我们试试看处理一百张照片的时间要多久
我们可以看到,大概在15ms左右的样子,速度是还不错的
综合博主的这三篇教程:
YOLOv7(目标检测)入门教程详解---环境安装_螺丝工人的博客-CSDN博客
YOLOv7(目标检测)入门教程详解---检测,推理,训练_螺丝工人的博客-CSDN博客YOLOv7(目标检测)入门教程详解---C++部署
已经可以完全自如的利用yolov7进行推理,检测,和训练了。并且同时适用与python环境和c++环境。