Opencv4.4调用Yolov4模型并使用CUDA加速程序运行

Opencv4.4调用Yolov4模型并使用CUDA加速程序运行

  • 程序运行环境
    • 1.Windows10+vs2017+CUDA10.1+cudnn7.6.3
    • 2.opencv4.4+yolov4模型
    • 2.Cmake3.17.4
    • 最终效果
    • cmake(不需要连接)
    • 新建vs2017工程

程序运行环境

由于不使用cuda加速的opencv调用yolov4模型进行预测时,检测一张图像大约需要180ms,检测速度较慢。因此使用cuda对程序进行加速,最终的检测效果能够达到20ms检测一张图像,检测效率提升明显。

1.Windows10+vs2017+CUDA10.1+cudnn7.6.3
2.opencv4.4+yolov4模型
3.Cmake3.17.4

1.Windows10+vs2017+CUDA10.1+cudnn7.6.3

安装vs2017与CUDA10.1以及安装对应的cudnn版本比较简单,这里不进行介绍。

2.opencv4.4+yolov4模型

opencv4.4在2020年7月发布,其中这个版本的opencv支持YOLO v4与EfficientDet
下载链接为:opencv4.4 link.
opencv 额外扩展模块 link.

2.Cmake3.17.4

Cmake3.17.4下载链接为 link.

最终效果

CUDA加速前程序运行效果
从图片看到一张图片的检测速度为224.37ms,FPS为4.46。
可见在未使用cuda加速前的识别速度是很慢的。

Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第1张图片
CUDA加速后程序运行效果
从图片看到一张图片的检测速度为21.92ms,FPS为45.62。
检测速度相较于未使用cuda,速度为原来的10杯以上。

Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第2张图片

cmake(不需要连接)

cmake在未连接编译时会出现许多错误
在不连接的情况下对cmake顺利编译需要对相关网址进行修改

修改方法参考于:https://blog.csdn.net/valley2013/article/details/106911688/

例如:一、ippicv_2020_win_intel64_20191018_general.zip下载失败
进入opencv3.4.2\sources\3rdparty\ippicv目录
将 ippicv.cmake 的https://raw.githubusercontent.com
修改为:https://raw.staticdn.net

二、opencv_videoio_ffmpeg_64.dll、opencv_videoio_ffmpeg.dll下载失败
进入opencv3.4.2\sources\3rdparty\ffmpeg目录
将 ffmpeg.cmake 的https://raw.githubusercontent.com
修改为:https://raw.staticdn.net

三、boostdesc_bgm.i相关文件下载失败
进入opencv_contrib-3.4.2\modules\xfeatures2d\cmake目录
将 download_boostdesc.cmake中的https://raw.githubusercontent.com
修改为:https://raw.staticdn.net

四、vgg_generated_120.i相关文件下载失败
进入opencv_contrib-3.4.2\modules\xfeatures2d\cmake目录
将 download_vgg.cmake中的https://raw.githubusercontent.com
修改为:https://raw.staticdn.net

五、face_landmark_model.dat下载失败
修改.\opencv_contrib-3.4.2\modules\face\CMakeLists.txt,
将https://raw.githubusercontent.com
修改为:https://raw.staticdn.net

cmake具体操作方法:
1.选择opencv4.4版本的source文件夹
2.选择一个空文件夹作为生成文件的存储的位置
3.点击Configure
Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第3张图片4.点完Configure后会弹出一个页面选择vs版本与x64。我这里配置的环境未vs2017 x64

Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第4张图片
接下来的操作方法可以按照这个博主进行操作link.

配置完cmake后需要打开vs2017新建工程并配置cmake编译后的opencv

新建vs2017工程

新建一个vs2017工程后需要添加环境变量与配置opencv
环境变量Path
在这里插入图片描述
在vs2017的属性管理器里面添加opencv相关配置文件
Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第5张图片包含目录为
Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第6张图片库目录为
Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第7张图片在链接器里面的附加依赖项输入相关lib文件,
Opencv4.4调用Yolov4模型并使用CUDA加速程序运行_第8张图片
由于文件夹中的文件较多,因此需要通过程序获取文件夹内所有文件的名称。其中获取文件夹中所有文件名称的程序为:

// An highlighted block
def getname():
    file_Path = 'install\\x64\\vc15\\lib\\'
    name = os.listdir(file_Path)
    return name

if __name__ == "__main__":
    name = getname()
    print(name)
    for i in name:
        print(i)

这样就配置完成了vs2017与cuda加速的opencv

你可能感兴趣的:(深度学习,神经网络,深度学习,c++)