alexeyab darknet 编译_windows下darknet之yolo(gpu版本)安装

1b41a46e8641ff755ee9df6eda225695.png

如果想训练自己的数据集,可以参考下面的链接

JustDoIT:YOLO3 darknet训练自己的数据​zhuanlan.zhihu.com

yolo官网

YOLO: Real-Time Object Detection​pjreddie.com
e374ebb56ca5dabe9fd157f9c5407c41.png

安装darknet cpu版本的请点下面这个链接

JustDoIT:windows下darknet之YOLO3安装与使用​zhuanlan.zhihu.com
e7e0bd7e9caf06edc2e57decad9fccf0.png

实际上,darknet有两个版本,一个是下面这个版本,

pjreddie/darknet​github.com
2c8006daccc114badab070bc7dd35164.png

但貌似这个版本对windows“不太友好”,我只成功安装了cpu的(其实在windows环境下安装也不太容易,可参照文章开始给出的链接),gpu版本的一直没安装成功,但永不言弃,一直尝试,时间滴答地过去了,无奈,最后还是放弃了转而选择下面这个“友好”的版本,

https://github.com/AlexeyAB/darknet​github.com

事实上这个github上面已经有比较全面的安装教程,但我在安装的过程中还是遇到了些问题,现把我的安装过程记录如下,希望能帮到各位朋友。如果在安装过程中遇到问题,可以查看文章最后的常见问题,也许能解决遇到的问题。

1.安装CUDA及CUDNN(当然,如果没有独立显卡,还是去安装cpu版本的哈哈)

关于CUDA及CUDNN的安装请参考下面这个链接里面的第3个步骤,要记住安装路径(我的路径是C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0)

JustDoIT:windows tensorflow-gpu的安装​zhuanlan.zhihu.com

2.下载microsoft vs2015(不是2010或者2017,下载2015为上策)

当然,如果电脑已经安装了vs2015,则直接到第3步,如果没有,则可以在microsoft官方自行下载并参考网上的教程进行安装

3.下载opencv3.4.0(3.40为上策,版本低一点也可以,但高了真不行)

下载链接如下

Download OpenCV from SourceForge.net​sourceforge.net

下载完后打开该文件,可以把此文件放在你想放的位置,记住路径就行(我的路径是C:opencv)

4.下载darknet源码并解压缩

下载链接如下

https://github.com/AlexeyAB/darknet​github.com

下载完后解压缩并放到你想要放的位置上(我的路径是D:python3darknet-master-20181002),解压缩后的文件应为darknet-master,但为了和我原有的darknet-master做区分,故加上今天的安装日期(对的,国庆第二天我还在奋斗)。打开darknet-master-20181002,文件结构如下图

7aecfc15e2c46918cd5426203eba83cc.png

真正的安装操作开始了

  • 打开build文件夹下的darknet文件夹,并用编辑器(推荐sublime,太好用了,当然,其他的也可以)打开darknet.vcxproj,用搜索功能查找CUDA (这里就是CUDA的版本号了),并修改为自己CUDA的版本号,我的CUDA版本是9.0,所以修改为CUDA 9.0(一共有两处需要修改的)并保存,如图

55a22e521b1cea4dd8a0eac1062ef0f7.png

924ea8f3361457ac201512eddc2d5deb.png
  • 确认C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140BuildCustomizations文件夹下面是否有下面这几个文件(因为我的是CUDA9.0,所以文件名中带有9.0,也就是说自己CUDA的版本号),

29cedd8ef9a757fb4f562d1eae14ac14.png

如果有,恭喜你,这一步又完成了,如果没有,则把CUDA安装路径下面的(我的路径是C:Program FilesNVIDIA GPU Computing ToolkitCUDAv9.0extrasvisual_studio_integrationMSBuildExtensions)以上4个文件全部拷贝到C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140BuildCustomizations中

  • 打开build文件夹下的darknet文件夹,并用vs2015打开darknet.sln,如果打开后显示darknet加载不成功并报如下的错误(未找到导入的项目“C:Program Files (x86)MSBuildMicrosoft.Cppv4.0v110BuildCustomizationsCUDA 9.0.props”。请确认 声明中的路径正确,且磁盘上存在该文件。)

5577ce4f3a2b4c3417f11c33d0c775df.png

这个错误出现的原因要么是该文件夹下没有该文件要么是darknet.vcxproj中的CUDA版本号没改成自己CUDA的版本号,那么查看上两步当中有哪一步漏了即可。

加载成功后,接下来将之前安装的Opencv3.4的库路径添加到VS工程中,具体操作可参考下面这个链接

https://note.youdao.com/share/?id=04fb326760a726f23cbd9ae8ff6b1fc6&type=note#/​note.youdao.com

然后在VS中进行如下图的设置

80ab3271297a6f6364c63fbb776454b1.png

最后点击生成选项中生成darknet

387d8bb88486b8e6cdb0c36ade11040c.png

出现下面的信息则说明编译成功

aeaeb38f13a7dbe292450092551d9116.png

如果出现下面两张图片的错误(感谢知友提供的两张图片),则还需要配置第三方包pthreadVC2,以下添加路径的操作同上面添加opencv的操作一样(https://note.youdao.com/share/?id=04fb326760a726f23cbd9ae8ff6b1fc6&type=note#/),需要在包含目录中添加D:python3darknet-master-201810023rdpartyinclude(需要改成自己对应的目录),在库目录中添加D:python3darknet-master-201810023rdpartylibx64(需要改成自己对应的目录),在链接器输入中添加pthreadVC2.lib(需要改成自己对应的目录),然后点击生成选项中的生成darknet

8566bfdc89d9a360fe5898ab9430ec73.png

e6f276b1d18d5bd569825e75291e4007.png

最后打开build下的darknet下的x64会有一个darknet.exe文件,

1af307a363e098f0a5cb02cfce9351e7.png

至此,darknet的gpu版本已经安装完了,不过且慢,实践是检验真理的唯一标准,让我们测试一下

5.测试darknet

  • 下载yolov3.weights并放到同darknet.exe的目录下(我的路径是D:python3darknet-master-20181002builddarknetx64)
https://pjreddie.com/media/files/yolov3.weights​pjreddie.com
  • 打开命令行并切换到darknet.exe所在的目录下,运行下面的命令
darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

604f2927fe07120bc7bac07418312643.png

运行完上述命令后会出现这样的结果

db2ad7371766a423f39d92dab712eee7.png

和一张效果图

6b25d66b7d8a78160ed0fb3ec6c286c4.png

6.用python代码大批量检测图片

当然,还有些朋友想用python代码来大批量检测图片,没问题的,我们接着弄。

darknet.exe所在目录下有个darknet.py文件,想必就是用来检测图片的python代码,好极了,那运行一下这个文件。坐等结果,然后等来的却是下面这样的报错结果

Traceback (most recent call last):
File "D:python3darknet-master-20181002builddarknetx64darknet.py", line 109, in <module>
raise ValueError("NoDLL")
ValueError: NoDLL

看看代码,注意到代码开头有这样的几句话

Python 3 wrapper for identifying objects in images
Requires DLL compilation
Both the GPU and no-GPU version should be compiled; the no-GPU version should be renamed "yolo_cpp_dll_nogpu.dll".

嗯,需要编译一个DLL。当然了,我们可以编译cpu的也可以编译gpu的,下面我是编译gpu版本的。

darknet文件下有一个yolo_cpp_dll.sln文件,同样的需要修改对应的yolo_cpp_dll.vcxproj文件,修改yolo_cpp_dll.vcxproj的过程和编译yolo_cpp_dll.sln过程和编译darknet.sln的一样,参考上面第4点就可以了,编译完成后,我们可以看到darknet.exe同目录下生成了yolo_cpp_dll.dll文件。

最后,我们再次运行darknet.py文件,稳稳地出现了我们想要的结果。

d9fe6ee6be02a641d474271def5d22cf.png

当然了,这只是检测一张图片,如果检测多张只要对代码做点小修改就可以了。

7 常见问题

  • 生成darknet过程中报MSB372的错

可参见评论区的解决办法,删除一些文件试试

如果本文对你有用,可以点个赞,如果觉得文章还不错,可以尝试关注我

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值