本人学生党一枚,由于项目需要自学darknet,看了网上许多教程,走了许多弯路,终于把darknet编译好了。现记录安装过程。
1、配置环境
(1)win10系统,cuda10.1
(2)opencv3.4
(3)vs2017
(4)源代码:https://github.com/AlexeyAB/darknet
2、安装cuda
(1)查看自己电脑的cuda版本
桌面单击右键,选择NVIDIA控制面板
点击左下角的系统信息
点击组件,就可以看到cuda版本,我自己的是cuda10.1版本
去官网下载对应版本的cuda:https://developer.nvidia.com/cuda-toolkit-archive
下载完成后直接按照流程安装就好了。
安装完成后,配置环境变量
右键此电脑图标,点击属性,高级系统设置,环境变量,
系统变量path,有3个路径需要添加(可直接复制,注意更改版本号)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
检查有无一下系统变量,如果没有就添加(可直接复制,注意更改版本号)
CUDA_BIN_PATH ;%CUDA_PATH%\bin
CUDA_LIB_PATH ;%CUDA_PATH%\lib\x64
CUDA_PATH ;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
CUDA_PATH_V10_1 ;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
CUDA_SDK_BIN_PATH;%CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH ;%CUDA_SDK_PATH%\common\lib\x64
CUDA_SDK_PATH ;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1
cmd打开命令行,输入set cuda 检查是否配置成功,如果没有请检查或者重启
(2)安装cudnn:https://developer.nvidia.com/rdp/cudnn-archive
要登录才能下载,如果没有账号,要先注册然后填一堆问卷。
登录好后,选择对应的版本下载。
下载完成后,解压,看到有3个文件夹,分别打开bin,include,lib文件夹,把里面的文件拷贝到cuda的里对应的文件夹下面
检查是系统变量是否存在以下路径
CUDNN ;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
3.opencv3.4: 点击下载
记住安装路径即可
4.安装VS2017(建议用2017,理论上2015及以上都可以,但是2015安装时容易缺失某个安装包)
下载免费的community版本
安装时要勾选 适用于桌面开发的2015(140)工具集 和C++附带安装
建议更改安装路径,不要装到C盘
如果仅用于编译darknet,不用勾选太多,不然会很大。
安装时间较长,请耐心等待。
5.编译darknet
(1)按照之前安装opencv3.4的路径,打开以下文件夹找到这两个dll文件
将以上两个文件拷贝到darknet-master中的以下位置
(2)确认C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations文件夹下面是否有下面这几个文件(10.1就是我的CUDA版本号)
然后将以上四个文件拷贝到VS2017的安装路径中
(3)打开build文件夹下的darknet文件夹,并用编辑器打开darknet.vcxproj,用搜索功能查找CUDA (这里就是CUDA的版本号了),并修改为自己CUDA的版本号,共有两处需要修改
(4)用vs2017打开darknet.sln文件
弹出以下窗口,平台工具集选择无升级
- 设置为release x64;
- 点击项目,属性
修改包含目录和库目录
包含目录需添加:(注意自己的opencv所在的路径)
D:\program\opencv3.4.0\opencv\build\include
D:\program\opencv3.4.0\opencv\build\include\opencv
D:\program\opencv3.4.0\opencv\build\include\opencv2
库目录需添加:
D:\program\opencv3.4.0\opencv\build\x64\vc15\lib
修改附加依赖项
- 检查显卡的算力是否在范围内
如果Code Generation设置太高,编译时会报错
那么如何查看自己的显卡算力大小呢?
最后点击生成,重新生成darknet就可以啦
最后打开build下的darknet下的x64会有一个darknet.exe文件
到这里,darknet的gpu版本编译就已经完成了,耶
(5)测试
下载yolov3.weights并放到同darknet.exe的目录下
cmd打开命令行,切换至darknet.exe所在目录,
我的地址是在D:\darknet-master\build\darknet\x64
输入指令darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
检测成功!
附上darknet的常用指令:
1.直接从头开始训练:darknet.exe detector train .\cfg\projectname.data .\cfg\yolov3_projectname.cfg
训练的过程中backup目录里面每到一定迭代次数,会有模型参数文件保存下来(比如yolov3_projectname_1000.weights)。
2.基于前面训练的模型继续训:darknet.exe detector train .\cfg\projectname.data .\cfg\yolov3_projectname.cfg backup\yolov3_projectname_1000.weights
3.用生成的模型测试图片:darknet.exe detector test .\cfg\projectname.data .\cfg\yolov3_projectname.cfg backup\yolov3_projectname_1000.weights
4.用生成的模型测试视频:darknet.exe detector demo .\cfg\projectname.data .\cfg\yolov3_projectname.cfg backup\yolov3_projectname_1000.weights -i 0 -thresh 0.25 projectname.mp4
———————————————————————————————————————————
还没有结束,如果想要在python上运行怎么办?不要慌
darknet提供了python接口——即darknet.py,与darknet.exe在同一目录下
不要急,在运行之前,首先要编译动态链接库,即dll文件
先修改yolo_cpp_dll.vcxproj文件中的cuda版本号,然后再用vs2017打开yolo_cpp_dll.sln,操作同上面编译darknet.sln。编译完成之后,可以看到darknet.exe同目录下生成了yolo_cpp_dll.dll文件
——————————————————————————————————————————
本次记录过程到此为止,正式结束。
由于这篇文章是我编译完成之后过了几周才写的,如果有疏漏之处请指正。
这个文章是我看了网上很多教程、踩了很多坑、吸取教训之后写的,所以上面有一些设置可能对其他人来说不是必须的(因为每台电脑都可能会出现不同的问题)。我尽量把我编译过程中做的更改写了下来,希望能帮到大家