yolo v3环境配置:vs2015+cudn9.1+cudnn7+darknet
本文地址:https://blog.csdn.net/shanglianlm/article/details/80322718
github https://github.com/AlexeyAB/darknet
要求:
1. vs2015+opencv3
2. Windows 和 Linux都可以
3. CUDA >= 7.5 (cuDNN v5-v7)
预训练模型:
1 yolov3.cfg https://pjreddie.com/media/files/yolov3.weights
2 yolov3-tiny.cfg https://pjreddie.com/media/files/yolov3-tiny.weights
下载 darknet https://github.com/AlexeyAB/darknet
H:\darknet\darknet-master\build\darknet目录下选择相应的 darknet_no_gpu.sln或者 darknet.sln用vs2015打开
先上我的环境配置图吧
下面三张图是我的配置
包含目录
库目录
附加依赖项
预处理器定义
1 配置opencv
包含目录
D:\opencv330\build\include
D:\opencv330\build\include\opencv
D:\opencv330\build\include\opencv2
库目录
D:\opencv330\build\x64\vc14\lib
链接器->输入
opencv_world330.lib
2 配置第三方包 pthreadVC2
包含目录
H:\darknet\darknet-master\3rdparty\include
库目录
H:\darknet\darknet-master\3rdparty\lib\x64
链接器->输入
pthreadVC2.lib
3 cuda9.1配置
包含目录
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\include
库目录
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\lib\x64
链接器->输入
cublas.lib;curand.lib;cudart.lib;cudnn.lib;
4 预处理器定义
C/C++ -> 预处理器 -> 预处理器定义
OPENCV;CUDNN;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;WIN32;NDEBUG;_CONSOLE;_LIB;
测试
到 H:\darknet\darknet-master\build\darknet\x64 目录下
如果是CPU运行,把darknet_no_gpu.exe重命名成为darknet.exe
这是测试图片文件的
darknet.exe detector test data/coco.data yolov3.cfg yolov3.weights -i 0 -thresh 0.25 dog.jpg
这是测试视频文件的
darknet.exe detector demo data/coco.data yolov3.cfg yolov3.weights -i 0 -thresh 0.25 test.mp4
运行结果
编译过程报错处理
1 error LNK2001: 无法解析的外部符号 __imp_pthread_join
1>captcha.obj : error LNK2001: 无法解析的外部符号 __imp_pthread_join
1>data.obj : error LNK2001: 无法解析的外部符号 __imp_pthread_mutex_unlock
1>data.obj : error LNK2001: 无法解析的外部符号 __imp_pthread_create
1>data.obj : error LNK2001: 无法解析的外部符号 __imp_pthread_mutex_lock
解决方法:没有配置pthreadVC2,参考上面。
2 error LNK2001: 无法解析的外部符号 cudaPeekAtLastError
1>crop_layer_kernels.cu.obj : error LNK2001: 无法解析的外部符号 cudaPeekAtLastError
1>dropout_layer_kernels.cu.obj : error LNK2001: 无法解析的外部符号 cudaPeekAtLastError
1>maxpool_layer_kernels.cu.obj : error LNK2001: 无法解析的外部符号 cudaPeekAtLastError
解决方法:附加依赖性要加 curand.lib;cudart.lib;
3 无法启动此程序,因为计算机中丢失opencv_world320.dll
解决方法:把 D:\opencv330\build\x64\vc14\bin 目录下的 opencv_world320.dll复制到C:\Windows\System32
参考资料
1 [YOLO v3在Windows下的配置(无GPU)+opencv3.2.0+VS2015](https://blog.csdn.net/baidu_36669549/article/details/79798587)
2 [darknet github](https://github.com/AlexeyAB/darknet)