提醒:本文为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源码);
AlexeyAB/darknet中下载好zip文件解压,我放在E:\yolov4下
5、yolo4.weights;(链接:https://pan.baidu.com/s/1IuYsvLW5RPRTv_jPd1ZRZQ 提取码:sx3s )
(二)配置环境及darknet编译:
1、在yolov4下面创建YOLOV4_build文件夹,打开并创建VS2015工程,选择NVIDIA
我的工程名为yolov4
2、将下载解压后的源码中的以下几个文件夹拷贝到新建工程下:3rdparty、cfg、data、include、src。model为自己新建的,存放权重文件yolo-v4.weights
3、在工程下建立三个文件夹c、h、cu(右键点击工程,新建筛选器,依次命名为上述3个文件夹),从src中分别添加c文件、h文件、cu文件到各自文件夹(.cpp和.c文件均存放在c文件夹下)
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
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
CUDA device中修改算力:根据显卡配置
compute_30,sm_30;compute_52,sm_52(我的是GTX960,如果是其他显卡,自己修改,参考文中是Titan Xp,所以他的配置是compute_30,sm_30;compute_75,sm_75)
在链接器中添加上相应的lib文件(参考文中未说明,所以自己当时一头雾水,直接编译就失败了)
cudart_static.lib
cublas.lib
pthreadVC2.lib
curand.lib
保存以上配置之后,编译生成解决方案,成功!
(三)测试:
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
修改darknet_yolo_v4_video.cmd如下:
yolov4.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
pause
4,、双击运行darknet_yolo_v4.cmd,图片测试成功!
5、视频测试,依然是之前自己骑行的短视频(链接:https://pan.baidu.com/s/1L67Y3D4YSIS1_H-bYGKvKQ ,提取码:c4nm ),放到E:\yolov4\YOLOV4_build\yolov4\x64\Release中,找到darknet_yolo_v4_video.cmd双击运行
视频测试,成功!
效果确实比v3要好一些,(建议对比上一篇博文v3查看效果yolov3在win7仅CPU下的配置)
6、也可以直接到cmd控制台进行测试,先进入E:\yolov4\YOLOV4_build\yolov4\x64\Release
测试图片:
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