YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015

提醒:本文为64位Windows7操作系统下GTX960的配置,YOLOv4的数据训练问题还是先挖个坑,后期再更新。

主要参考:windows7+VS2017+GPU+OpenCV3.4 编译YOLO_v4

自己上一篇的YOLOv3在windows7仅CPU模式下配置好之后,刚发出去没多久,其实YOLOv4就出来了,性能相比v3提升了不少,前段时间也趁着有空,试了一下,这里友情提醒一下,v4最好使用显卡,自己的显卡正好是刚从叔叔家网咖淘汰下来的GTX960,所以也就凑合着用吧。

前面说过对于初学者,YOLO上手是非常友好的,所以v4出来之后,好多配置教程都出来了,不过大多数都是Ubuntu系统的,自己暂时还没换笔记本,所以就查询了好多windows版本的配置,这里大部分又都是基于cmake的,自己在cmake上试了好几次都失败了,原因暂时没找到,后面找到上面那位同学的方法,也出现了一点问题,不过很快就解决了,后面图片和视频测试都成功了。好啦!废话不多说,开始正题!

(一)环境及配置:

1、VS2015;(没试过VS2013、vs2017,有兴趣的同学可以试一下(不保熟))

2、opencv3.1.0;(参考的那位是用的3.4.0,我用的是3.1.0(链接:https://pan.baidu.com/s/19IM-uyyC9lB6f1oDvebFUg ,提取码:sgh9 ),应该是3.0版本以上都可以,opencv官网上面也都有,安装时记得环境变量的配置)

3、CUDA10.1(+cudnn)其他版本亦可,取决于你显卡的配置,我的是GTX960

4、YOLOv4(darknet源码);YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第1张图片
AlexeyAB/darknet中下载好zip文件解压,我放在E:\yolov4下

5、yolo4.weights;(链接:https://pan.baidu.com/s/1IuYsvLW5RPRTv_jPd1ZRZQ 提取码:sx3s )

(二)配置环境及darknet编译:

1、在yolov4下面创建YOLOV4_build文件夹,打开并创建VS2015工程,选择NVIDIA
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第2张图片
我的工程名为yolov4

2、将下载解压后的源码中的以下几个文件夹拷贝到新建工程下:3rdparty、cfg、data、include、src。model为自己新建的,存放权重文件yolo-v4.weights
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第3张图片

3、在工程下建立三个文件夹c、h、cu(右键点击工程,新建筛选器,依次命名为上述3个文件夹),从src中分别添加c文件、h文件、cu文件到各自文件夹(.cpp和.c文件均存放在c文件夹下)
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第4张图片

4、配置属性
点击“项目”打开“属性”,|选择x64-Release
包含目录中添加:
E:\yolov4\YOLOV4_build\yolov4\3rdparty\pthreads\include;
E:\yolov4\YOLOV4_build\yolov4\3rdparty\stb\include
E:\yolov4\YOLOV4_build\yolov4\include
D:\Program Files\opencv310\opencv\build\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
库目录中添加:
E:\yolov4\YOLOV4_build\yolov4\3rdparty\pthreads\lib
D:\Program Files\opencv310\opencv\build\x64\vc14\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64

YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第5张图片

C/C++ 预处理定义中添加:
WIN32;WIN64;NDEBUG;_CONSOLE;_LIB;OPENCV;CUDNN_HALF;CUDNN;_TIMESPEC_DEFINED;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;GPU

YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第6张图片
CUDA device中修改算力:根据显卡配置
compute_30,sm_30;compute_52,sm_52(我的是GTX960,如果是其他显卡,自己修改,参考文中是Titan Xp,所以他的配置是compute_30,sm_30;compute_75,sm_75)
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第7张图片
在链接器中添加上相应的lib文件(参考文中未说明,所以自己当时一头雾水,直接编译就失败了)
cudart_static.lib
cublas.lib
pthreadVC2.lib
curand.lib
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第8张图片
保存以上配置之后,编译生成解决方案,成功!
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第9张图片
(三)测试:

1、把yolo4.weights,E:\yolov4\darknet-master中cfg、data文件夹复制到E:\yolov4\YOLOV4_build\yolov4\x64\Release中

2、将E:\yolov4\darknet-master\build\darknet\x64中darknet_yolo_v3.cmd,darknet_yolo_v3_video.cmd也复制到E:\yolov4\YOLOV4_build\yolov4\x64\Release中,分别重命名为darknet_yolo_v4.cmd,darknet_yolo_v4_video.cmd

3、修改darknet_yolo_v4.cmd如下:

yolov4.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output data/dog.jpg
pause

YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第10张图片
修改darknet_yolo_v4_video.cmd如下:

yolov4.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
pause

YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第11张图片

4,、双击运行darknet_yolo_v4.cmd,图片测试成功!
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第12张图片

5、视频测试,依然是之前自己骑行的短视频(链接:https://pan.baidu.com/s/1L67Y3D4YSIS1_H-bYGKvKQ ,提取码:c4nm ),放到E:\yolov4\YOLOV4_build\yolov4\x64\Release中,找到darknet_yolo_v4_video.cmd双击运行
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第13张图片
视频测试,成功!
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第14张图片
效果确实比v3要好一些,(建议对比上一篇博文v3查看效果yolov3在win7仅CPU下的配置)YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第15张图片

6、也可以直接到cmd控制台进行测试,先进入E:\yolov4\YOLOV4_build\yolov4\x64\Release
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015_第16张图片

测试图片:
yolov4.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output data/dog.jpg
测试视频: yolov4.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4

测试时可以进行简单的参数调整(也可在.cmd文件修改参数)

(三)题外话:

1、对比了一下自己跑的v3和v4,v4对小目标的检测能力确实得到了提升(特别是在同一段视频下的测试,v4连背包都检测出来了,v3明显做不到),v4大佬神一般的更新速度,加上对各个环节的不断优化,积少成多,才让我们见到这么明显的提升,这里真的要感谢大佬不舍昼夜的付出。

2、2020年2月份,「YOLO 之父」Joseph Redmon 宣布退出计算机视觉领域,4月份YOLOv4就接棒成功,最近又有一版“YOLOv5”出来(官方暂未承认,有待验证)。可见由于YOLO的友好配置,现在好多大佬都在不断进行深入优化,短短半年时间,YOLO的性能提升确实是有目共睹。

3、因为这是老师布置的临时任务,所以最近有时间都会追一下YOLO,这次把v3和v4都配置了一遍,后续应该会进行特定场景的应用实现,有时间都会同步在这个系列,也算作一个记录,欢迎大家一起学习交流。

关于YOLOv4的配置再次感谢一下Mirinda_cjy的教程

本系列文章列表如下:
YOLO(一):YOLOv3在Windows7(无GPU)下的配置+opencv3.1.0+VS2015
YOLO(二):YOLOv4在Windows7(GTX960)下的配置+opencv3.1.0+VS2015
YOLO(三):YOLOv4在Windows7(仅CPU)下的配置+opencv3.1.0+VS2015

你可能感兴趣的:(DL2:,YOLO学习笔记,图像识别,深度学习,opencv,人工智能,c++)