这篇博客是在win7下只使用cpu进行推理。使用gpu进行推理的可以参考我的上一篇博客。
主要步骤分为:
(1) 安装opencv,将其加到环境变量中,并且在vs2015中配置opencv
(2) 编译darknet_no_gou.sln文件,遇到bug就解决它。编译完之后,你就可以使用darknet进行推理了
(3) 编译yolo_cpp_dll_no_gpu.sln和yolo_console_dll.sln文件。先编译前者,然后编译后者。
0 安装opencv
安装opencv的内容我参考我的上一篇博客,在这边我就不赘述了。
1 编译darknet_no_gou.sln
在vs2015中打开darknet_no_gou.sln工程文件,然后光标放在工程文件上,点击右键生成。
工程项目生成成功之后,在..darknet\build\darknet\x64文件夹下打开终端,运行下面的命令:
darknet_no_gpu.exe detector test data/coco.data cfg/yolov4.cfg backup/yolov4.weights
在这边我遇到了一个问题:
我参考了这位老哥的博客,然后下载了相关文件,然后将msvcp120d.dll文件放到了..darknet\build\darknet\x64文件中了,问题解决了。
检测效果如下:
我们看一下cpu的检测速度和精度:
我们看一下,一张图片的检测速度是3s左右,还是有点慢的,后面尝试用一下tensorrt加速。
2 编译yolo_cpp_dll_no_gpu.sln
下面,我们需要将darknet生成一个动态链接库,方便后面在终端或者在其他项目中使用这个动态链接库。
在vs2015中打开这个文件,然后生成相关项目,就会在该文件夹目录下面新增一个yolo_cpp_dll_no_gpu.dll文件。
3 编译yolo_console_dll.sln
下面,我们在终端中使用上面生成的动态链接库,进行推理
(1)首先,我们要将在..darknet\build\darknet\x64生成的yolo_console_dll.sln文件放到和yolo_console_dll.sln工程文件同目录下。也就是将yolo_console_dll.sln文件复制到..darknet\build\darknet目录下。
(2)然后,将yolo_cpp_dll_no_gpu.lib这个静态库添加到工程项目中。点击工程项目,然后右键属性。
在【链接器】- 【输入】- 【附加依赖项】中输入下面这个内容:
yolo_cpp_dll_no_gpu.lib
下面是具体内容:
(3)在工程项目中删除yolo_cpp_dll.lib,这个文件使用的是gpu进行推理,因此我们用不到,需要删除掉。
(4)点击生成文件,就可以在终端中使用darknet动态链接库进行推理了
这边有个bug,就是可以生成exe文件,但是一运行就崩,暂时还没有解决。