废话懒得说,直接上干货
1.安装CUDA和cuDNN
参考之前的文章,传送门
2.编译器Vs2015
由于版本的关系,强烈推荐安装使用vs编译。
安装过程中必须要注意的地方:必须勾选V14,V14,V14
PS,小伙伴说了,俺是vs2017,难道要卸掉重装vs2015吗?其实不用的。咱就是走的这条路。找到Vs2017的安装程序,如果没了,去官网下一个(因为2017是在线安装,因此就大概1M大小),然后更新,添加上面的页面勾选的内容,一定要注意V14,成败在此一举
3.安装opencv 3.4.0(低了可以,极其不建议高了)
opencv3.4.0 下载地址
下载完解压即可。
配置环境变量:
path添加opencv目录下的build\bin目录和build\x64\v14\bin.
按照自己的安装目录去配置就OK了
4.下载darknet
AB大神源码地址,版本更新导致出了问题,下载历史版本在早的,可用
darknet目录,like this:
5.热身完成,开始安装
(1) 打开darknet文件夹下面的build的darknet,找到darknet.vcxproj,使用记事本打开,需要修改两处地方,即CUDA的版本号。搜索CUDA
这里CUDA的版本号修改为之前我们安装的版本(下载的是10.0版本,我是用的是9.0,因此修改为9.0)
记得是两处哦
检查:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations路径下是否有下面打对勾的文件
如果有,恭喜你,前面配置的没有问题,距离成功又进一步。
(2)配置Opencv到darknet
打开build文件夹下面的darknet文件夹,使用上面安装的vs2015(2017)打开darknet.sln
VS项目配置opencv参考文章 传送门
然后在vs中进行如下设置,生成方式为Release,X64版本
点击生成,选择生成darknet
如果输出一下信息,恭喜这一步又配置成功
PS:有的电脑在这里会报错,错误信息如下:
错误 MSB3721 The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -x cu -I\include -IC:\opencv_3.0\opencv\build\include -I..\..\include -I..\..\3rdparty\stb\include -I..\..\3rdparty\pthreads\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I\include -I\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include" --keep-dir x64\Release -maxrregcount=0 --machine 64 --compile -cudart static -DOPENCV -DCUDNN_HALF -DCUDNN -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DNDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Fdx64\Release\vc140.pdb /FS /Zi /MD " -o x64\Release\activation_kernels.cu.obj "G:\daek\darknet-master\src\activation_kernels.cu"" exited with code 1. darknet C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA9.0.targets 712
如果出错信息,关键词和上面标红一样时,恭喜你,不用再去百度了,因为我也遇到了;
出错原因:看提示信息,讲的是大概意思是你的显卡比较low,算力暂时达不到项目设置的compute_75
解决办法:右键darknet项目,属性,CUDA C/C++,Device,Code Generation,去掉compute_75
点击确定,重新运行,解决。
最后打开build下的darknet下的x64会有一个darknet.exe文件:
6.Test It
下载yolov3.weights并放到同darknet.exe的目录下
weight文件下载
cmd下,一路cd到包含darknet.exe的文件夹下面,
命令:darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
效果:
以及经典的预测:
7.python调用。
在dartnet.exe目录下面有一个darknet.py文件,毫无疑问这将是我们的入手点
但是,如果直接使用会出错·。
我们打开他的源码,原来是需要一个dll文件才能运行
ok,既然知道勒,我们就去生成一个这样的dll文件。
在darknet的build\darknet文件中,恰好有一个.dll文件
可以看到,我们要的这个dll文件和上面的darknet文件是类似的,因此我们生成darknet.exe怎么配置时,生成这个dll文件就应该怎么配置。参考第5小点。
生成之后就可以运行了,拿到源码,稍微修改就可以了,你懂得。