VS2019 编译Yolo
1.环境介绍
- IDE: VS2019
- 系统:win10
- openCV: 3.4.10
- cuda:10.2
- CUDNN:7.6.5.32
2.安装CUDA和CUDNN配置
网上教程很多
https://blog.youkuaiyun.com/xuefengyang666/article/details/79422012
3.安装opencv
- 下载opencv
- 添加环境变量:我的安装路径为D:\ProgramFiles\opencv-3.4.10\opencv\build\x64\vc14\bin
4.darknet工程配置
- 下载darknet工程https://github.com/AlexeyAB/darknet
- 配置工程
修改 build\darknet\darknet.vcxproj,用Notepad打开,修改两处的"CUDA 10.0,改为你自己的CUDA版本
2.1. 找到opencv_world3xx.dll 和 opencv_ffmpeg3xx_64.dll(\opencv\build\x64\vc14\bin)将他放到\build\darknet\x64。
2.2. 找到cudnn64_7.dll 复制到\build\darknet\x64
2.3. \darknet.sln -> (right click on project) -> properties -> CUDA C/C++ -> Device and remove there ;compute_75,sm_75,在打开工程的时候如果提示重定向,选择确定
2.4 工程中选择x64
2.5 配置opencv
(right click on project) -> properties -> C/C++ -> General -> Additional Include Directories:
D:\ProgramFiles\opencv-3.4.10\opencv\build\include
(right click on project) -> properties -> Linker -> General -> Additional Library Directories:
D:\ProgramFiles\opencv-3.4.10\opencv\build\x64\vc14\lib
2.6 最终配置
(right click on project) -> properties -> C/C++ -> General -> Additional Include Directories, put here:
D:\ProgramFiles\opencv-3.4.10\opencv\build\include;…\3rdparty\include;%(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir);$(CUDNN)\include
(right click on project) -> properties -> Linker -> General -> Additional Library Directories, put here:
D:\ProgramFiles\opencv-3.4.10\opencv\build\x64\vc14\lib;$(CUDA_PATH)\lib$(PlatformName);$(CUDNN)\lib\x64;%(AdditionalLibraryDirectories)
(right click on project) -> properties -> Linker -> Input -> Additional dependecies, put here:
…\3rdparty\lib\x64\pthreadVC2.lib;cublas.lib;curand.lib;cudart.lib;cudnn.lib;%(AdditionalDependencies)
(right click on project) -> properties -> C/C++ -> Preprocessor -> Preprocessor Definitions
OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
将这四个文件拷贝到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations
常见错误
more than one instance of overloaded function “_malloc_dbg” has “C” linkage.
将"Multi-threaded Debug DLL (/MDd)" 改成 “Multi-threaded DLL (/MD)”
测试
darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg