Win10 下编译目标检测框架Darknet
在win10下编译无GPU版本的darknet,并测试通过,过程记录如下。
1 下载cygwin 来编译darknet
安装过程中简单的把Base,Devel,Libs,Net,System,Utils这些模块安装上
这里没有使用mingw来编译darknet,使用mingw编译过程中遇到了非常多的错误最后放弃了,使用mingw主要遇到的问题有:
1 提示缺少pthread.h sched.h semaphore.h 三个头文件,下载后放入darknet/include文件夹下,解决这个报错问题
2 解决了pthread.h sched.h semaphore.h 后,编译过程中又提示在go.c中fd_set没有定义,打开源文件确实没有引用定义的文 件,fd_set 的定义应该是在linux的sys/select.h中,没有继续去解决此问题,从而放弃mingw
想了解mingw和cygwin区别的可以参考下面的网址
https://www.cnblogs.com/make217/articles/5223532.html
如果你是想在windows环境下开发linux运行程序,那么CygWin/gcc是你的不二之选。 而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择
2 下载darknet
请在darknet官方网址https://github.com/pjreddie/darknet的下载页面的提示的github网址下,手动下载darknet,如下图
我使用git命令下载下来的包,可能在dos格式和linux文件格式上有问题,造成darknet程序无法打开相关文件,所以我在github上手动下载的包,但这一步肯定不是必须的,只是我个人电脑的问题,下载地址如下
https://github.com/pjreddie/darknet
我使用git下载的包报的错误,可能是文件格式问题,也可能是偶然问题
3 使用cygwin编译darknet
打开cygwin切换到darknet目录,输入make,如果cygwin不出意外在安装时已经安装了make的化,不出其他意外你会编译成功生成darknet.exe文件。编译前可以清空darknet/obj下的编译中间文件(由于可能你使用mingw尝试了一轮,生成了一些文件)
4 下载cygwin1.dll文件
CygWin/gcc编译出来的程序如果调用了unix特有的API函数,在windows环境下不能正常运行,如果想在windows下正常运行的,就必须依赖cygwin1.dll。中文网站下载的那几个cygwin1.dll基本上都是假的和不能用的
我的下载地址
https://download.csdn.net/download/wxtcstt/11186691
将cygwin1.dll放在与darknet.exe相同的文件夹下,双击darknet.exe不报错,表示可以运行
5 测试darknet目标检测功能
官网步骤参考 https://pjreddie.com/darknet/yolo/
打开cmd窗口进入darknet目录使用如下命令进行测试,成功后再darknet文件下会生成predictions.jpg目标检测文件
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
其中yolov3是coco数据集的yolo训练模型 ,yolov3.cfg和coco.names(程序内部调用),已经存在darket下
下载地址: https://pjreddie.com/media/files/yolov3.weights
由于没有使用gpu,识别速度会慢一些打开10几秒的样子
6 结束
Win10下如何使用yolo的GPU和opencv版本,参考GitHub大神的著作
https://github.com/buptdbj/darknet-windows-linux