研究RCNN系列算法,到现在的YOLO和SSD,因为平台原因(穷
),都尝试在Window+cpu环境下测试已有模型效果。网上有很多教程,这里记录下yolo2的配置过程。
平台:window+cpu
yolo2代码:
https://github.com/AlexeyAB/darknet
一、下载链接里的yolo2工程,打开darknet-master\build\darknet下的darknet_no_gpu.sln工程,查看工程属性,作者已经配置好了opencv和
pthreads,如下图,但是opencv的路径需要自己修改下。附件依赖库主要是opencv_core249.lib,
opencv_highgui249.lib,opencv_imgproc249.lib三个文件。直到成功编译工程,会在darknet-master\build\darknet\x64下生成darknet_no_gpu.exe可执行文件。
二、主函数在darknet.c文件里,如下图。
要运行起来,需要新建一个cmd文件。参照
darknet-master\build\darknet\x64下的
darknet_voc.cmd文
件新建darknet_no_gpu.cmd文件,因为是调用上面生成的
darknet_no_gpu.exe,所以内容改为
到这一步还需要一个yolo-voc.weights文件,从官网
https://pjreddie.com/darknet/yolo/
下载相应的模型参数文件(点击那个weights下载,只要是yolo2版本的都行),放到
darknet-master\build\darknet\x64路径下。
双击运行
darknet_no_gpu.cmd,窗口为
输入图像路径回车即可得结果
三、这样只能每次跑一张图像,如果要连续测试可以修改detector.c文件里的test_detector函数,如果要用到cv空间的一些功能,在文件前面添加using namespace std;using namespace cv;把
detector.c改为
detector.cpp,这时注意:因为yolo都是纯c编写的,
darknet.c文件会调用到
detector.cpp里的函数,那边需要把
detector.cpp里面头文件包含的部分加上
extern “C”
{
#include “xxx.h”
}
同时,全局函数要在前面声明并加上extern “C”。如
extern “C” void run_detector(int argc, char **argv);
参考博客:
http://blog.csdn.net/qq_14845119/article/details/53589282
—————————————————————————————–
补充:window+gpu版本也成功运行
打开darknet-master\build\darknet下的
darknet.sln工程,然后在工程属性中进行配置,加入cuda和cudnn(如果不加cudnn,只用GPU,速度并不快,大概一张图像1s左右)的lib文件和include路径。我用的是CUDA7.5和cudnn7.5,cudnn有编译好的库文件,解压出来是一个cuda文件夹,里面有include、lib、dll三个文件夹,把里面的文件放到
CUDA下的对应的
include、lib、dll
文件夹中,然后设置环境变量那些。一般配置好后就可以跑了。
—————————————————————————————–
2018年4月20日注:YOLO不断更新,目前已到YOLOv3,YOLOv2的代码作者也做了更新,建议根据最新资源进行配置,
AlexeyAB
一般都会针对作者的改动及时更新工程,且进行优化。windows环境配置方面比较复杂,linux比较简单,只是需要python和linux基础,建议学习这两个知识,有助于深度学习研究开发。